将数据从 Userform CheckBox 和 Textbox 复制到列
Copying data from Userform CheckBox and Textbox to columns
我正在尝试创建一个带有用户表单的工具,用户可以在其中的文本框中键入一个模型,然后在 10 个可能的复选框中选择该模型来自的所有国家/地区。
此信息通过命令按钮传输到“国家/地区”工作表。
我的代码将文本框值放在 A 列中,将复选框标签中的国家/地区名称放在 B 列中。
问题是我在多个国家/地区使用同一型号,所以我得到了没有匹配型号的空白单元格。
例如。 “Type A”属于美国、巴西、瑞典和墨西哥,因此我应该将“Type A”沿国家/地区名称复制四次,而不是一次。
Private sub Transfer()
Dim i As Long
Dim aCol As Range
Dim BS As Worksheet
Set aCol = Worksheets("Country").Range("A:A")
Set BS = Worksheets("Country")
For i = 1 To 10
With Me.Controls("CheckBox" & i)
If .Value Then
aCol.Cells(82, 2).End(xlUp).Offset(1, 0).Value = .Caption
End If
End With
Next i
Dim b As Integer
b = 1
Do Until BS.Range("A" & b).Value = ""
b = b + 1
end sub
使用您共享的代码且没有重大更改,我建议您考虑将文本框中包含的信息写在复选框循环内并紧跟在 if 之后。这样你将添加文本框文本,不管是什么避免空白
If .Value Then
aCol.Cells(82, 1).End(xlUp).Offset(1, 0).Value = Me.Controls("TextBox1").Text
aCol.Cells(82, 2).End(xlUp).Offset(1, 0).Value = .Caption
End If
让我知道是否可行,在我用来复制您的问题的完整代码下方:
Private Sub CommandButton1_Click()
Call Transfer
End Sub
Private Sub Transfer()
Dim i As Long
Dim aCol As Range
Dim BS As Worksheet
Set aCol = Worksheets("Country").Range("A:A")
Set BS = Worksheets("Country")
For i = 1 To 3
With Me.Controls("CheckBox" & i)
If .Value Then
aCol.Cells(82, 1).End(xlUp).Offset(1, 0).Value = Me.Controls("TextBox1").Text
aCol.Cells(82, 2).End(xlUp).Offset(1, 0).Value = .Caption
End If
End With
Next i
End Sub
How the form I did looks in VBA
How the results look like in the file
我正在尝试创建一个带有用户表单的工具,用户可以在其中的文本框中键入一个模型,然后在 10 个可能的复选框中选择该模型来自的所有国家/地区。
此信息通过命令按钮传输到“国家/地区”工作表。
我的代码将文本框值放在 A 列中,将复选框标签中的国家/地区名称放在 B 列中。
问题是我在多个国家/地区使用同一型号,所以我得到了没有匹配型号的空白单元格。
例如。 “Type A”属于美国、巴西、瑞典和墨西哥,因此我应该将“Type A”沿国家/地区名称复制四次,而不是一次。
Private sub Transfer()
Dim i As Long
Dim aCol As Range
Dim BS As Worksheet
Set aCol = Worksheets("Country").Range("A:A")
Set BS = Worksheets("Country")
For i = 1 To 10
With Me.Controls("CheckBox" & i)
If .Value Then
aCol.Cells(82, 2).End(xlUp).Offset(1, 0).Value = .Caption
End If
End With
Next i
Dim b As Integer
b = 1
Do Until BS.Range("A" & b).Value = ""
b = b + 1
end sub
使用您共享的代码且没有重大更改,我建议您考虑将文本框中包含的信息写在复选框循环内并紧跟在 if 之后。这样你将添加文本框文本,不管是什么避免空白
If .Value Then
aCol.Cells(82, 1).End(xlUp).Offset(1, 0).Value = Me.Controls("TextBox1").Text
aCol.Cells(82, 2).End(xlUp).Offset(1, 0).Value = .Caption
End If
让我知道是否可行,在我用来复制您的问题的完整代码下方:
Private Sub CommandButton1_Click()
Call Transfer
End Sub
Private Sub Transfer()
Dim i As Long
Dim aCol As Range
Dim BS As Worksheet
Set aCol = Worksheets("Country").Range("A:A")
Set BS = Worksheets("Country")
For i = 1 To 3
With Me.Controls("CheckBox" & i)
If .Value Then
aCol.Cells(82, 1).End(xlUp).Offset(1, 0).Value = Me.Controls("TextBox1").Text
aCol.Cells(82, 2).End(xlUp).Offset(1, 0).Value = .Caption
End If
End With
Next i
End Sub
How the form I did looks in VBA
How the results look like in the file