我有一个用户表单,它被填写并在电子表格中输入数据。我添加的一个特性是由10个文本框组成的框架,除非在前面的框中输入数据,否则这些文本框将保持隐藏状态,最多允许10个条目。因为用户要在这些文本框中输入参与者的姓名,所以我希望他们都填充电子表格的相同单元格,用逗号分隔。一开始,我输入代码时没有考虑,即使没有添加名称,我也会在单元格中接收9个逗号。从那以后,我成功地获得了第二个文本框值,前面添加了一个逗号到单元格中,但无法获得任何附加文本框(3-10)的值来进行同样的操作。
ws.Range("I" & LastRow).Value = tbPart1.Value
If Not IsEmpty(tbPart2.Value) Then
ws.Range("I" & LastRow).Value = tbPart1.Value & "," & tbPart2.Value
ElseIf Not IsEmpty(tbPart3.Value) Then
ws.Range("I" & LastRow).Value = tbPart1.Value & "," & tbPart2.Value & "," & tbPart3.Value
End If发布于 2016-08-30 12:22:42
循环遍历所有Textboxes并检查其值:
Dim i As Integer
For i = 1 To 10
'Loop through all 10 Textboxes and add its value to the cell
If Not Controls("tbPart" & i).Value = "" Then
'Check if cell is empty
If ws.Range("I" & LastRow).Value = "" Then
ws.Range("I" & LastRow).Value = Controls("tbPart" & i).Value
Else
ws.Range("I" & LastRow).Value = _
ws.Range("I" & LastRow).Value & ", " & Controls("tbPart" & i).Value
End if
End If
Next i代码没有经过测试。
发布于 2016-08-30 12:56:41
阿威尔,试试这样的东西。它应该符合您的需要,而且代码非常灵活。与其为每个组合创建一个If Then语句,不如循环遍历所有文本框,并更优雅地填充工作表。
Dim ctrl As Control
Dim ctrlName As String, ctrlNum As Integer
For Each ctrl In Me.Controls 'Loops through all controls on the Userform
If TypeName(ctrl) = "TextBox" Then 'Only acknowledges TextBox Controls
ctrlName = ctrl.Name
ctrlNum = CInt(Replace(ctrlName, "tbPart", "")) 'Names each textbox by number
If ctrlNum > 0 And ctrlNum < 11 And ctrl.Value <> "" Then 'cycles through textboxes 1-10
If ws.Range("I" & NextRow).Value <> "" Then 'If cell isn't blank, preclude with comma
ws.Range("I" & NextRow).Value = ws.Range("I" & NextRow).Value & ", " & ctrl.Text
Else: ws.Range("I" & NextRow).Value = ctrl.Text 'otherwise value only
End If
End If
End If
Next ctrlhttps://stackoverflow.com/questions/39226998
复制相似问题