使用Excel用户窗体剪切具有“x”的行,删除行,并粘贴到不同的工作表中

在Excel中处理一个用户窗体,它将在用户窗体中input的列“B”中的值切割一行,然后将该行粘贴到工作表2中,同时从用户窗体中添加另外3个值。 这是我所拥有的,但是现在对我来说什么也没有做。

Private Sub OkButton2_Click() Dim i As Long: i = 1 With ActiveSheet For n = nLastRow To nFirstRow Step -1 If .Cells(n, "B") = "ChartTextBox2.Value" Then .Cells(n, "B").EntireRow.Cut Sheet2.Cells(i, "A") .Cells(n, "B").EntireRow.Delete i = i + 1 'Transfer information Sheets("Sheet2").Cells(emptyRow, 7).Value = DTPicker4.Value Sheets("Sheet2").Cells(emptyRow, 8).Value = DispoTextBox.Value Sheets("Sheet2").Cells(emptyRow, 9).Value = ReasonTextBox.Value End If Next End With End Sub 

下面的代码为我工作得很好。 你是比较文本"ChartTextBox2.Value"或文本框中的文本ChartTextBox2 ? 假设你正在比较文本框中的文本,下面的代码适合我。 在你的代码中也没有声明nLastRownFirstRow 。 如果不是这种情况,您可以删除这些语句。

 Private Sub OkButton2_Click() Dim nLastRow As Long 'If already declared neglect this statement Dim nFirstRow As Long 'If already declared neglect this statement Dim i As Long: i = 1 nLastRow = ActiveSheet.UsedRange.Rows.Count 'If already specified neglect this statement nFirstRow = ActiveSheet.UsedRange.Row 'If already specified neglect this statement With ActiveSheet For n = nLastRow To nFirstRow Step -1 If .Cells(n, "B") = ChartTextBox2.Value Then .Cells(n, "B").EntireRow.Cut Sheets("Sheet2").Cells(i, "A") .Cells(n, "B").EntireRow.Delete i = i + 1 'Transfer information Sheets("Sheet2").Cells(emptyRow, 7).Value = DTPicker4.Value Sheets("Sheet2").Cells(emptyRow, 8).Value = DispoTextBox.Value Sheets("Sheet2").Cells(emptyRow, 9).Value = ReasonTextBox.Value End If Next End With End Sub 
Interesting Posts