Tag: 循环

解决:与VBAcheckbox的麻烦

我正在尝试创build一个将从工作簿中打印所选工作表的macros。 第一个工作表有一组checkbox,都遵循命名约定“CheckBoxX”,其中X是该checkbox的编号。 我想要的代码是通过每个checkbox运行,看看是否被选中,然后select相应的工作表,如果它被选中。 但是,我收到一个错误“对象不支持此属性或方法”。 这是我的代码:代码: Option Explicit Sub Button14_Click() Dim count As Integer Dim checkNumber As String For count = 1 To ThisWorkbook.Worksheets.count checkNumber = "CheckBox" & count If Sheets("Print").Shapes(checkNumber).OLEFormat.Object.Value = True Then Worksheets(count + 1).Select (False) End If Next count ActiveWindow.SelectedSheets.PrintOut End Sub debugging总是用if语句标记行。 我也试过这个作为我的if语句: If Sheets("Print").Shapes(checkNumber).ControlFormat.Value = 1 Then 解决方法:我所要做的就是改变这一行: If Sheets("Print").Shapes(checkNumber).OLEFormat.Object.Value = […]

通过更改表名称循环的VBAmacros

所以我们有一个工具可以生成一堆数据,但是可以随机地命名这些工作表。 我有简单的命令来复制,粘贴和sortingExcel表格上的各自的文字,但我的问题是我无法弄清楚如何使我产生的工作表的列表循环通过所有这些工作表,而没有指定名称开始..我不希望它遍历所有表,因为我需要它忽略第一个表… 我收到错误424对象请求错误。 任何帮助将不胜感激。 所以我设置了所有的整数和variables Dim x As Integer Dim y As Integer Dim a As Integer Dim b As Integer Dim compoundname As Range Dim compoundtype As Range Dim compoundrng As Range x = 1 y = 3 a = 3 b = 2 y,a,b都与我最后一部分遗漏的设置有关。 所以在这里,我告诉它,我想复合名称是活跃表格上的范围,我认为这是我的实际问题? Set compoundname = Workbook.ActiveSheet.Range("A3") Set compoundrng = Sheets("AllSheets").Range("A3:A100") […]

VBA优化3个循环的性能

首先,我想检查“Sheet1”列D的每一行中的值是否与“Accepted”列A的任何一行匹配。 如果匹配,我想将“Sheet1”那一行的B列中的值复制到“Accepted”的D列中。 但是,由于“Sheet1”的B列中有2个可能的值,所以我想将这些值分成两列“Accepted” – 列D和E.因此,下一个循环,如果列D中的值为“接受“不是”限制“,然后将该值复制到E列并删除D列的内容。 代码工作正常,它可以帮助我实现我的目标,但是,这个过程花费了很长时间,经过一些调查,我发现延迟只发生在最后一个循环。 我想知道如果我能加快这个过程,谢谢! Dim i As Long Dim j As Long Dim k As Long 'to speed up the VBA code With Application .ScreenUpdating = False .Calculation = xlCalculationManual End With AcceptedLastRow = ActiveWorkbook.Worksheets("Accepted").Range("A" & Rows.Count).End(xlUp).Row Sheet1LastRow = ActiveWorkbook.Worksheets("Sheet1").Range("D" & Rows.Count).End(xlUp).Row For j = 1 To AcceptedLastRow For i = 1 […]

到达date范围VBA

首先,我只是VBA的初学者,我陷入了困境,找不到一条可能的出路。 准确地说,根据我的要求,下面附上的是我目前的数据的快照。 在“date范围”列中,我需要基于每张发票中可用date的date范围。 如果连续性在date中断,我将需要样本数据中显示的以逗号分隔的date。 以下是我的代码只到达date,不能形成date范围。 希望我能find自己的出路,并会从中获得新的东西:-)谢谢! ] 1 Sub DD() With Application .ScreenUpdating = False .DisplayAlerts = False .EnableCancelKey = False .EnableEvents = False End With Sheets("Claim Lines").Select ActiveWorkbook.Worksheets("Claim Lines").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Claim Lines").Sort.SortFields.Add Key:=Range("B1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortTextAsNumbers ActiveWorkbook.Worksheets("Claim Lines").Sort.SortFields.Add Key:=Range("D1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortTextAsNumbers With ActiveWorkbook.Worksheets("Claim Lines").Sort .SetRange ActiveSheet.UsedRange .Header = xlYes .MatchCase = False .Orientation = […]

Excel VBA循环连续复制/粘贴延迟

我已经有下面的代码成功地将Sheet1上的一行复制并粘贴到Sheet2上的下一个打开的行上。 该行的数据从外部应用程序导入并不断更新,从而创build历史logging。 我已经尝试了几种方法来循环这个动作,并且失败了。 目标:使用button点击或按键退出循环的选项以.25秒延迟循环该代码。 延迟比退出条件更重要,因为如果需要的话,我可以使用Esc。 Private Sub START_Click() Application.ScreenUpdating = False Dim copySheet As Worksheet Dim pasteSheet As Worksheet Set copySheet = Worksheets("Sheet1") Set pasteSheet = Worksheets("Sheet2") copySheet.Range("A23:L23").Copy pasteSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues Application.CutCopyMode = False Application.ScreenUpdating = True End Sub

Excel VBA循环错误

我有一张正在用来创build最终是HTML文本文档的工作表,但是该工作表以Excel开头。 它可以有任何地方从其上的一百个项目,然后每个项目必须有三个领域(SKU,说明,类别),然后两个可选(项目符号,图像)。 它会这样。 Sheet1 A2复制到Sheet2 A2 Sheet2 B2 =“描述”Sheet1 B2(描述数据)复制到Sheet2 C2 Sheet1 A2复制到Sheet2上的新行A3 Sheet2 B3 =“Category”Sheet1 C2(分类数据)复制到Sheet2 C3 那些是强制性的领域。 从那里。 如果填充Sheet 1 D2(Bullet数据),则Sheet1 A2复制到Sheet2 A4 Sheet2 B4 =“Bullet”Sheet1 D2复制到Sheet2 C4 如果填充了工作表1 E2(图像数据),则工作表1 A2复印到工作表2 A5工作表2 B5 =“图像”工作表1 E2复制到工作表2 C5 这需要处理Sheet 1的第一行。从那里,我希望它循环遍历Sheet 1列A中的每一行,直到它到达A中的空单元格为止。 这是我写的。 第一部分工作。 但是这是循环(注释的块部分),使我困惑。 我太可怕了。 目前,它进入了一个永无止境的循环,直到我停止它。 任何指导将非常感激。 谢谢。 Sub MigrateToTemplate() Dim NextSKU As Range Set […]

通过在多个工作表中添加行和列中的一个范围(例如5×5)中的值并将其转储到一个特定工作表中

我在单个工作簿中有多个工作表,每个工作表中有5行5列的值。 我需要在每个表格中添加相应的单元格值(例如:D5)并将其转储到D5中的新表格中。 我可以做一个特定的单元格,但我很困惑如何在嵌套for循环。 我只做了一天vba ..所以请帮助。 谢谢。 Sub Macro1() Dim i, val 'Select worksheets For i = 7 To Sheets.Count val = val + Sheets(i).Range("e6") Next Sheets("Summation").Range("e6") = val End Sub

将excel转换为R,从前一行计算,慢速循环

我有一些已被解码的数据,如下所示: datetime date – day date – month date – year gmt hrs gmt minutes gmt seconds val1 val2 val3 37:00.9 NULL NULL 15 0 30 54 1 1 0 37:01.9 29 9 NULL 0 30 55 1 1 0 37:02.9 NULL NULL NULL 0 30 56 1 1 0 37:03.9 NULL NULL NULL 0 […]

在Excel VBA中创build毫秒循环

由于我刚刚发现Excelmacros,我想尝试模拟移动的对象。 我想在我的项目的每个“框架”上运行一些循环代码。 我可以用Excel代码在Excel VBA中进行无限循环: Do While True: 'code Loop 但是,这使Excel崩溃。 有没有办法做一个无限循环运行每十毫秒左右,如下所示: Dim timer as Timer If timer = 10 Then 'code timer = 0 End If 编辑:你的答案是非常好的,但不完全是我在找什么。 我希望能够同时运行其他代码; 有点像Javascript的 setInterval(function(){}, 200); 可以同时运行多个function。

Visual Basic,VBA数组循环

我用http://www.homeandlearn.org/arrays_and_loops.html来帮助我。 我有过滤到一个表的数据连接。 不幸的是,当程序将文件导出到Excel时,其中一个源随机地将错误的数据(通常是date)放在错误的列(客户端列)中。 我想要做的是类似于索引/匹配function。 我想检查这个主表(A)中的每个预留号码与同一工作簿中的另一个表(B)。 如果来自其他工作表(B)的预订号码与主表(A)中的预留号码相匹配,则希望将正确的客户端值input到主表(A)中。 我还是很新的VBA所以任何帮助表示赞赏。 我试图修改我的代码,但无济于事。 另外,我原本是在没有真实数据的情况下将其作为练习来使用,所以我没有搞乱我的原始文件。 我试图添加适当的语法来引用其他工作表,而不是所以我想这也可能input不正确。 这里是我提出的最接近的原始代码: Sub TransferData() Dim MyArray(1 To 19) As Single MyArray(1) = 81899 MyArray(2) = 87172 MyArray(3) = 87275 MyArray(4) = 87394 MyArray(5) = 87446 MyArray(6) = 87496 MyArray(7) = 87621 MyArray(8) = 87631 MyArray(9) = 87726 MyArray(10) = 87822 MyArray(11) = 87858 MyArray(12) = 88041 […]