我有一个填写的用户表单,并在电子表格中输入数据。 我添加的一个功能是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
答案 0 :(得分:2)
循环浏览所有文本框并检查其值:
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
代码未经过测试。
答案 1 :(得分:0)
Awill,尝试这样的事情。它应该符合您的需求,而且代码非常灵活。您可以循环浏览所有文本框,然后更优雅地填充工作表,而不是为每个组合创建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 ctrl