在新行而不是现有行上使用VBA
早上好 我目前正在使用VBA支持的函数编写Excel表单。这些功能将允许用户1。在电子表格中添加新的输入行,2。擦拭数据表并将其返回到原始配置和3。将工作表中的数据复制到数据累积工作表中 到目前为止,我有第二点。已完成并正在处理1.,我在循环中遇到了一个问题。问题是这个循环一直在重复,这就是循环的要点。。。一次又一次地在它不需要的细胞上。我暗自怀疑,在循环的迭代计数器中,我应该进行更改,这样它就不会总是在开始时再次启动,但我不知道如何做。循环的功能是根据用户选择的选项框将值1赋予相应的单元格。实际上,代码重写了整个列,而不仅仅是它应该位于的行。因此,数据丢失在以前填写过的单元格中 代码如下:在新行而不是现有行上使用VBA,vba,excel,Vba,Excel,早上好 我目前正在使用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来进行调整,因为它在一行中写入的值比我想要的低。谢谢大家的帮助和建议!