是否有任何方法来更新UserForm之外的UserForm的ListBox ? 为什么? 我正在build造一个二十一点游戏,并使用列表框来告诉用户他们拥有哪些牌/经销商。 我希望使用一个简单的子( ShowCards )将项目添加到列表框,但我遇到了问题: Playbutton调用位于普通模块中的PlayBlackjack子 Option Explicit Dim cards As New Collection Sub ShowGame() UFDisplay.Show End Sub Sub PlayBlackjack() 'fill the cards collection with 5 shuffled decks PrepareCards Dim i As Integer Dim userHand As New Collection Dim dealerHand As New Collection 'deal cards (removing the dealt cards from the cards collection) […]
我有我的第一个“客户端工作,然后没有付钱”的经验。 未来,我想把一个伪装成一个常规macros的杀戮开关,使整个事情变得不可用。 这样一来,即使他们雇人破解密码,并删除我的“您的试用已过期…”检查,一个正常的macros(如“Fix_Sheet_Formatting”)将很容易被忽视和运行,破坏一切,节省变化。 然而,这就离开了VBA ……我们在这里说的是彻底的清理,所以一切都必须去。 我会弄清楚如何做到这一切,我只是不想浪费时间去追求一些不可能的事情: VBA代码是否可以在运行时从工作簿中删除自己 ,还是必须从另一个工作簿上的macros中删除? 并删除代码导致macros停止运行,或者我可以删除一切,除了一个讨厌的MsgBox一切完成后?
我试图复制一个范围,并将其粘贴为值使用VBA,但它似乎通过代码步骤,但没有做任何事情,因为我运行后仍然有公式。 R和S列是唯一有公式的地方,我尝试了F8 ,它只是步入了一切而已。 也许我把错误的代码粘贴为值,但在这里他们是。 所有的列都有相同的行数。 所以没有错误只是没有复制和粘贴为值。 如果有人可以推荐一个更有效的方式来复制和粘贴一个范围只值,请分享。 Sub test() Dim ws2 As Worksheet Dim LR3 As Long Set ws2 = Worksheets("BRST") LR3 = ws2.Cells(ws2.Rows.Count, "R").End(xlUp).Row ws2.Range("R3", "S" & LR3).Copy ws2.Range("R3", "S" & LR3).PasteSpecial xlPasteValues End Sub
我有两行数据看起来像这样: 我正在尝试返回数组中每个ID的所有位置编号。 我努力了 ={IF(A2:A562=E2,B2:B562)} 但是,只要我search的ID不是列A中的第一个,就会失败。(我的确尝试对列A进行sorting,但没有运气)。 所以我想出了这个解决方法:相反,我会使用这个公式 ={INDEX(B2:B562,positions(E2))} 其中positions是一个VBA函数,返回与指定ID相匹配的行数组。 functionpositions被编码,以便返回一个Variant 。 但是,似乎VBA数组没有通过Excel中的公式。 当我评估公式时, positions(E2)等于0.(我在VBA中检查过,而且我的数组已正确填充)。 那么如何让我的公式正确解释VBA数组呢? 更新:这是我的代码: Function positions(idrange As Range) As Variant Dim V As Variant Dim l, nb As Integer Dim id As Double nb = 4 ReDim V(nb) As Variant id = idrange.Value Set cible = Sheet2.Range("B1") For l = 1 To nb Set […]
我有一些我想validation正确性的用户input。 用户应该input一组或多组字符,用逗号分隔。 所以这些都是有效的input COM1 COM1,COM2,1234 这些都是无效的 COM – 只有3个字符 COM1,123 – 一套只有3个字符 COM1.1234,abcd – 点分隔符不是逗号 我GOOGLE了一个正则expression式模式,并find了一个可能的模式,testing任何3个字符的循环实例,我修改如此 /^(.{4,}).*\1$/ 但是这不是find匹配。 在通过testing之前,我可以pipe理最后的逗号,以便它始终在那里。 最好是我只想testing字母(任何情况)和数字,但是我可以和任何字符一起生活。 我知道我可以很容易地做到这一点在直VBA分割input一个逗号分隔符,并循环每个数组元素的每个字符,但正则expression式似乎更有效率,我会有更多的情况比有稍微不同的模式,所以参数化的正则expression式那会更好的devise。 TIA
如果在它下面的行有一个包含括号数字“(2)”的单元格和另一个包含单词“成人”的单元格,我有一个macros在列53(列BA)中的单元格加1。 它是这样的: Sub BUBFindAdults2() lastRow = Sheets("Sheet1").Range("C" & Rows.Count).End(xlUp).Row For x = 3 To lastRow If InStr(1, Sheets("Sheet1").Cells(x, 3), "(2)") <> 0 _ And InStr(1, Sheets("Sheet1").Cells(x, 31), "Adult") <> 0 Then Sheets("Sheet1").Cells(x – 1, 53).Value = _ Sheets("Sheet1").Cells(x – 1, 53).Value + 1 End If Next x End Sub 但是,如果下面两行包含“(3)”和“成人”,我也需要它加1到同一个单元格。 如果下面三行包含“(4)”和“成人”。 等等。 你看到的模式! 到目前为止,我通过重复相同的代码来解决这个问题,如下所示: Sub […]
我在C13单元中有一个星期的数字 ,而在C14单元中有一个星期的数字 。 我使用下面的公式将其转换为当周数字的星期四 : =DATE(C14,1,-6)-WEEKDAY(DATE(C14,1,3))+C13*7 我怎么能用VBA做同样的事情?
我想有一个macros隐藏/取消隐藏标注。 意图是有一个信息button,一旦按下显示或隐藏信息标注。 问题是我有其他箭头和形状,我不想被隐藏。 用下面的代码(1)我可以隐藏所有对象: Dim sObject As Shape For Each sObject In ActiveSheet.Shapes If sObject.Visible = False Then sObject.Visible = True Else sObject.Visible = False End If Next 和这个代码(2)我可以隐藏/取消隐藏特定的标注形状 If ActiveSheet.Shapes("Rectangular Callout 6").Visible = False Then ActiveSheet.Shapes("Rectangular Callout 6").Visible = True Else ActiveSheet.Shapes("Rectangular Callout 6").Visible = False End If 如何让第一个代码(1)像第二个代码(2)一样运行标注形状?
我的程序应该检查单元格的颜色索引,然后根据它的颜色增加一个计数器。 出于某种原因,我似乎无法将颜色索引存储到variables。 这里是代码: Dim orange As Integer, green As Integer, blue As Integer, i As Integer, check As Long For i = 0 To 79 check = ThisWorkbook.Sheets("Name").Cells(i, 11).Interior.ColorIndex If check = 33 Then blue = blue + 1 ElseIf check = 43 Then green = green + 1 ElseIf check = 44 Then orange […]
我试图从一个数组公式到VBA中的值。 简单的例子:我有一个单元格(比方说D1),其中有一个数组公式 = A1:A10 * B1:B10当我在电子表格上突出显示,然后按F9我会得到一个10个数字的数组,例如= {5; 12; 15; 24; 25; 24; 42; 40; 54; 70} 我想能够将这些值存储在VBA数组中:a(0)= 5,a(1)= 12,a(3)= 15等; 你明白了。 试图寻找这个答案,但即使在MSFT上也找不到任何相关的东西。 关于如何从VBA转到工作表范围(我知道这一点)的很多答案,但不是这样。 看着试图通过一个ParamArray(元素的数量不会被固定),通过直接分配给一个未经调整的数组,并通过EVALUATE(范围),但我不能得到任何这些工作。 我觉得我必须失去一些明显的东西。