Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过命令按钮递增循环的VBA_Vba_For Loop_Increment_Activexobject - Fatal编程技术网

通过命令按钮递增循环的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)
有什么特别之处呢?Aka
C16
?它显示此工作表上的行数。这里的行是指机器操作员填写的数字。在要填充的行的顶部还有其他行的标题和绒毛,这些不算在内。初始值设置为1。我不确定代码背后的逻辑。这里是我掌握的:我应该创建一个变量,它是结束行(lEndRow)。我应该创建一个变量,它是起始行(lStartRow)。然后使用Row.Count函数使循环循环以有多少行为函数…?我想我真的不需要起始行,因为我只需要知道最后一行在工作表上的什么位置,这样我就可以在它下面加上一个新行。谢谢你的帮助!如果您只需要工作表上的最后一行,则存储该值。插入新行时,在值中添加一行。这将使您不必担心行数等问题。不完全是这样,我需要最后一行,以便在其下方添加另一行,并且添加的行数+1。