Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.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_Excel - Fatal编程技术网

在新行而不是现有行上使用VBA

在新行而不是现有行上使用VBA,vba,excel,Vba,Excel,早上好 我目前正在使用VBA支持的函数编写Excel表单。这些功能将允许用户1。在电子表格中添加新的输入行,2。擦拭数据表并将其返回到原始配置和3。将工作表中的数据复制到数据累积工作表中 到目前为止,我有第二点。已完成并正在处理1.,我在循环中遇到了一个问题。问题是这个循环一直在重复,这就是循环的要点。。。一次又一次地在它不需要的细胞上。我暗自怀疑,在循环的迭代计数器中,我应该进行更改,这样它就不会总是在开始时再次启动,但我不知道如何做。循环的功能是根据用户选择的选项框将值1赋予相应的单元格。实

早上好

我目前正在使用VBA支持的函数编写Excel表单。这些功能将允许用户1。在电子表格中添加新的输入行,2。擦拭数据表并将其返回到原始配置和3。将工作表中的数据复制到数据累积工作表中

到目前为止,我有第二点。已完成并正在处理1.,我在循环中遇到了一个问题。问题是这个循环一直在重复,这就是循环的要点。。。一次又一次地在它不需要的细胞上。我暗自怀疑,在循环的迭代计数器中,我应该进行更改,这样它就不会总是在开始时再次启动,但我不知道如何做。循环的功能是根据用户选择的选项框将值1赋予相应的单元格。实际上,代码重写了整个列,而不仅仅是它应该位于的行。因此,数据丢失在以前填写过的单元格中

代码如下:

Private Sub NextLineRed()

Dim i As Long
Dim End Row As Long

EndRow = ThisWorkbook.Worksheets.("Drapeaux Rouges").Cells(Rows.Count.1).End(xlUp).Row

    For i = 19 To EndRow + 1 Step 1
        If MétalButton.Value = True Then
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 7).ClearContents
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 8).ClearContents
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 9).ClearContents
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 10).ClearContents
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 11).ClearContents
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 12).ClearContents
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 13).ClearContents
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 7) = 1
        End If

        If TMétalButton.Value = True Then
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 7).ClearContents
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 8).ClearContents
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 9).ClearContents
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 10).ClearContents
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 11).ClearContents
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 12).ClearContents
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 13).ClearContents
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 8) = 1
        End If

        If ContaButton.Value = True Then
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 7).ClearContents
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 8).ClearContents
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 9).ClearContents
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 10).ClearContents
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 11).ClearContents
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 12).ClearContents
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 13).ClearContents
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 9) = 1
        End If

        If MottonButton.Value = True Then
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 7).ClearContents
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 8).ClearContents
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 9).ClearContents
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 10).ClearContents
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 11).ClearContents
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 12).ClearContents
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 13).ClearContents
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 10) = 1
        End If

        If TrouButton.Value = True Then
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 7).ClearContents
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 8).ClearContents
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 9).ClearContents
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 10).ClearContents
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 11).ClearContents
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 12).ClearContents
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 13).ClearContents
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 11) = 1
        End If

        If TombéButton.Value = True Then
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 7).ClearContents
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 8).ClearContents
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 9).ClearContents
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 10).ClearContents
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 11).ClearContents
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 12).ClearContents
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 13).ClearContents
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 12) = 1
        End If

        If AutreButton.Value = True Then
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 7).ClearContents
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 8).ClearContents
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 9).ClearContents
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 10).ClearContents
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 11).ClearContents
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 12).ClearContents
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 13).ClearContents
            ThisWorkbook.Worksheets("Drapeaux Rouges").Cells(i, 13) = 1
        End If
    Next

End Sub

让我们把它缩短一点:这允许用户选择多个按钮条件

Private Sub NextLineRed()

Dim i As Long
Dim EndRow As Long
Dim ws1 As Worksheet

Set ws1 = ThisWorkbook.Worksheets("Drapeaux Rouges")
EndRow = ws1.Cells(Rows.Count, 1).End(xlUp).Row
    ws1.Range(Cells(EndRow, 7), Cells(EndRow, 13)).ClearContents
            If MétalButton.Value = True Then ws1.Cells(EndRow, 7) = 1
            If TMétalButton.Value = True Then ws1.Cells(EndRow, 8) = 1
            If ContaButton.Value = True Then ws1.Cells(EndRow, 9) = 1
            If MottonButton.Value = True Then ws1.Cells(EndRow, 10) = 1
            If TrouButton.Value = True Then ws1.Cells(EndRow, 11) = 1
            If TombéButton.Value = True Then ws1.Cells(EndRow, 12) = 1
            If AutreButton.Value = True Then ws1.Cells(EndRow, 13) = 1

End Sub

学习它。拥抱它。你的密码很湿。减少重复会让你更容易在很多其他的好处中发现错误。如果你做了一个函数,把单元格从7清除到7,不是会更容易吗13@user3980820-这正是我的观点。毫无疑问,我的代码是湿的,我对编程相当陌生,也相当无知。然而,减少重复代码行并不是这里的问题,这里有一个循环笑话。清除细胞确实是一种形式,因为它们一开始应该是空白的。我认为删除关联的行不会对输出有太大的改变。现在,问题是如何将循环指向工作表上的正确位置,使其不必重做不必重做的行。你能更具体一些吗?我仍然看到Drapaux Rouges反复出现。你能不能在顶部设一个常数?非常感谢,我不知道如何,也找不到如何在单元格中,而不是在A1:A1符号中调用范围@roryap也许用Drapaux胭脂作为根和With可以减少这种重复?@Chrismas007只有最后一行。谢谢你的帮助。现在测试它,重写很多东西,以便用你在这里展示给我的方法缩短它。你应该从上一个删除下一个line@Chrismas007了不起的只是需要通过删除EndRow值的+1来进行调整,因为它在一行中写入的值比我想要的低。谢谢大家的帮助和建议!