我有一个名为“ srForm”的userform1,当单击保存命令按钮时,会将数据放入我的主工作表(“ srData”)中。在第一列“ A”中,将放置一个唯一ID,该ID由userform_initialize生成。
userform_initialize代码如下:
Private Sub UserForm_Initialize()
Me.srID.Enabled = True
Dim iRow As Long
Dim ws As Worksheet
Set ws = Worksheets("srData")
'find last data row from database
iRow = ws.Cells(Rows.Count, 1).End(xlUp).Row
If ws.[a2].Value = "" Then
Me.srID.Text = "SR-" & 1
Else
With ws.Cells(iRow, 1)
Me.srID.Text = Left(.Value, 3) & CInt(Right(.Value, Len(.Value) - 3)) + 1
End With
End If
End Sub
在userform1中有一个复选框“ zeefTest”,如果选中该复选框,则将打开第二个用户窗体“ Fracties”。该用户窗体包含更多复选框和一个选择命令按钮。 选中选择命令按钮后,数据将放入工作表(“ Result_Particles”)中。在此工作表中,列“ A”也是唯一ID。但这取决于选中的zeeftest复选框。 调用userform2“ Fracties”的代码是:
Private Sub zeefTest_Click()
Fracties.Show
Dim sRow As Long
With Worksheets("Result_Particles").Range("A1")
sRow = Worksheets("Result_Particles").Range("A1").CurrentRegion.Rows.Count
.Offset(sRow, 0).Value = Me.srID.Value
End With
End Sub
现在,当单击第二个用户窗体选择命令按钮时,将卸载该用户窗体,然后单击第一个用户窗体保存按钮。
我遇到的问题是userform1代码无法与userform2中的代码一起正常工作。当我单击用户窗体1中的“保存”命令按钮时,我认为它会覆盖userform2代码。唯一的ID代码已正确放置在工作表(“ Result_Particles”)中,但复选框internal.colorindex并未写入适当的列。它只对第一行正确地进行操作。 userform2的代码是:
Private Sub CmB1_Click()
Dim iRow As Long
With Worksheets("Result_Particles").Range("A1")
iRow = Worksheets("Result_Particles").Range("A1").CurrentRegion.Rows.Count
If Cbx1.Value = True Then
.Offset(iRow, 1).Interior.ColorIndex = 2
Else:
.Offset(iRow, 1).Interior.ColorIndex = 15
End If
If Cbx2.Value = True Then
.Offset(iRow, 2).Interior.ColorIndex = 2
Else:
.Offset(iRow, 2).Interior.ColorIndex = 15
End If
If Cbx3.Value = True Then
.Offset(iRow, 3).Interior.ColorIndex = 2
Else:
.Offset(iRow, 3).Interior.ColorIndex = 15
End If
If Cbx4.Value = True Then
.Offset(iRow, 4).Interior.ColorIndex = 2
Else:
.Offset(iRow, 4).Interior.ColorIndex = 15
End If
If Cbx5.Value = True Then
.Offset(iRow, 5).Interior.ColorIndex = 2
Else:
.Offset(iRow, 5).Interior.ColorIndex = 15
End If
If Cbx6.Value = True Then
.Offset(iRow, 6).Interior.ColorIndex = 2
Else:
.Offset(iRow, 6).Interior.ColorIndex = 15
End If
If Cbx7.Value = True Then
.Offset(iRow, 7).Interior.ColorIndex = 2
Else:
.Offset(iRow, 7).Interior.ColorIndex = 15
End If
If Cbx8.Value = True Then
.Offset(iRow, 8).Interior.ColorIndex = 2
Else:
.Offset(iRow, 8).Interior.ColorIndex = 15
End If
If Cbx9.Value = True Then
.Offset(iRow, 9).Interior.ColorIndex = 2
Else:
.Offset(iRow, 9).Interior.ColorIndex = 15
End If
If Cbx10.Value = True Then
.Offset(iRow, 10).Interior.ColorIndex = 2
Else:
.Offset(iRow, 10).Interior.ColorIndex = 15
End If
If Cbx11.Value = True Then
.Offset(iRow, 11).Interior.ColorIndex = 2
Else:
.Offset(iRow, 11).Interior.ColorIndex = 15
End If
If Cbx12.Value = True Then
.Offset(iRow, 12).Interior.ColorIndex = 2
Else:
.Offset(iRow, 12).Interior.ColorIndex = 15
End If
End With
Unload Me
End Sub
我希望有人可以帮助我修复我的代码以使其正常工作。我知道这不是最整洁的代码,所以如果有人还知道为我的复选框编写代码的更好方法,也将不胜感激。
谢谢您的时间。
答案 0 :(得分:0)
此行的结果:
Worksheets("Result_Particles").Range("A1").CurrentRegion.Rows.Count
是1。
这是因为CurrentRegion
仅应用于Range("A1")
仅是Rows
的{{1}}。
据我了解您的目标,您应该将该范围更改为更广泛的范围,以使Count
的结果更有意义。
让我知道这是否无济于事。