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

早上好!

我目前正在写一个VBA支持函数的Excel表单。 这些function将允许用户1.添加一个新的input行到电子表格,2.擦除数据表并将其返回到其原始configuration,并3.将数据表中的数据复制到数据积累表。

到目前为止,我已经指出2.已完成,正在进行1.我在一个循环内遇到了一个问题。 问题是,这个循环不断重复自己(这就是循环的重点…)一遍又一遍的细胞,它不必。 我有一个偷偷的怀疑,它是在循环的迭代计数器,我应该做一个改变,以便它不总是在一开始就重新开始,但我失去了如何做到这一点。 循环的function是根据用户select哪个选项框,将值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 

让我们缩短一点:(这允许用户selectMULTIPLEbutton条件)

 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