通过命令按钮递增循环的VBA
你好 目前,我对命令按钮有一个小问题,我希望能够执行以下操作:将特定行格式化为特定的行高,为同一行中的特定数量的单元格添加厚边框,计算并将由此产生的行数添加到文件中的初始数。基本上,该按钮应允许电子表格的用户添加具有特定格式的新行,用户将在其中输入数据并跟踪添加的行数 我目前的代码是:通过命令按钮递增循环的VBA,vba,for-loop,increment,activexobject,Vba,For Loop,Increment,Activexobject,你好 目前,我对命令按钮有一个小问题,我希望能够执行以下操作:将特定行格式化为特定的行高,为同一行中的特定数量的单元格添加厚边框,计算并将由此产生的行数添加到文件中的初始数。基本上,该按钮应允许电子表格的用户添加具有特定格式的新行,用户将在其中输入数据并跟踪添加的行数 我目前的代码是: Option Explicit Private Sub NewLineRedButton_Click() Dim i As Long Dim y As Long For y = Th
Option Explicit
Private Sub NewLineRedButton_Click()
Dim i As Long
Dim y As Long
For y = ThisWorkbook.Worksheets("Flags").Cells(16.3) To y + 1
ThisWorkbook.Worksheets("Flags").Cells(16, 3) = y + 1
For i = 20 To i + y Step 1
ThisWorkbook.Worksheets("Flags").Rows(i).RowHeight = 45
ThisWorkbook.Worksheets("Flags").Cells(i, 1).Borders.LineStyle = xlContinuous
ThisWorkbook.Worksheets("Flags").Cells(i, 1).Borders.Weight = xlMedium
Next
Next
End Sub
此时,代码只执行下面的两行并停止。我不太清楚,为什么…?编写这样的for循环
For y = ThisWorkbook.Worksheets("Flags").Cells(16.3) To y + 1
For y = ThisWorkbook.Worksheets("Flags").Cells(16.3) To 1
和这样写一样吗
For y = ThisWorkbook.Worksheets("Flags").Cells(16.3) To y + 1
For y = ThisWorkbook.Worksheets("Flags").Cells(16.3) To 1
我猜单元格中的值是零,因此它将执行0和1的循环-即,您看到的两次
你需要像这样的东西
lEndRow = lStartRow + (lRowCount - 1)
For y = lStartRow to lEndRow
我现在一切顺利。只是不能让它用正确的边框做所有的列。。。我不知道在使用单元格(#,#)表示法时如何调用它们,我看不出如何在我的I变量是长变量的情况下使用范围(“'Z#,Z#”)表示法 无论如何,以下是目前为止的结果:
Option Explicit
Private Sub NewLineRedButton_Click()
Dim i As Long
Dim y As Long
Dim RowEnd As Long
RowEnd = ThisWorkbook.Worksheets("Flags").Cells(Rows.Count, 1).End(xlUp).Row
For y = 19 To RowEnd
ThisWorkbook.Worksheets("Flags").Cells(16, 3) = y - 17 ' First row which is already on the sheet is on row 19, first row appearing by button clicking is on row 20 and the program is counting the header hence the y - 17 for the value of the number of rows.
For i = 19 To RowEnd + 1 Step 1
ThisWorkbook.Worksheets("Flags").Rows(i).RowHeight = 45
ThisWorkbook.Worksheets("Flags").Cells(i, 1).Borders.LineStyle = xlContinuous
ThisWorkbook.Worksheets("Flags").Cells(i, 1).Borders.Weight = xlMedium
Next
Next
End Sub
感谢您的帮助和想法,我终于从这里提供的线索中找到了其他资源。可能是因为某些值是硬编码的?我不知道您所说的硬编码是什么意思。我几乎没有编程知识,我出人意料地无知,但愿意学习。@BOB那么
单元格(16,3)
有什么特别之处呢?AkaC16
?它显示此工作表上的行数。这里的行是指机器操作员填写的数字。在要填充的行的顶部还有其他行的标题和绒毛,这些不算在内。初始值设置为1。我不确定代码背后的逻辑。这里是我掌握的:我应该创建一个变量,它是结束行(lEndRow)。我应该创建一个变量,它是起始行(lStartRow)。然后使用Row.Count函数使循环循环以有多少行为函数…?我想我真的不需要起始行,因为我只需要知道最后一行在工作表上的什么位置,这样我就可以在它下面加上一个新行。谢谢你的帮助!如果您只需要工作表上的最后一行,则存储该值。插入新行时,在值中添加一行。这将使您不必担心行数等问题。不完全是这样,我需要最后一行,以便在其下方添加另一行,并且添加的行数+1。