VBA用户窗体:如何为选中复选框标题添加中间分隔符且末尾无多余分隔符
解决VBA复选框标题拼接时末尾多余分隔符的问题
你当前的代码会在每个选中的复选框标题后添加“ - ”,导致最后一个标题末尾也会多出这个分隔符。这里提供两种实用的解决方式:
方法一:用数组收集选中项后拼接(推荐)
这种方式先把所有选中的标题存入数组,再用Join函数自动处理分隔符,不会出现末尾多余符号的问题:
Dim selectedCaptions As Variant ReDim selectedCaptions(0 To 0) As String ' 收集选中的复选框标题 If PITCHSTYLESPOPUP.CheckBox1 = True Then selectedCaptions(UBound(selectedCaptions)) = PITCHSTYLESPOPUP.CheckBox1.Caption ReDim Preserve selectedCaptions(0 To UBound(selectedCaptions) + 1) End If If PITCHSTYLESPOPUP.CheckBox2 = True Then selectedCaptions(UBound(selectedCaptions)) = PITCHSTYLESPOPUP.CheckBox2.Caption ReDim Preserve selectedCaptions(0 To UBound(selectedCaptions) + 1) End If If PITCHSTYLESPOPUP.CheckBox3 = True Then selectedCaptions(UBound(selectedCaptions)) = PITCHSTYLESPOPUP.CheckBox3.Caption ReDim Preserve selectedCaptions(0 To UBound(selectedCaptions) + 1) End If ' 处理数组并赋值给文本框 If UBound(selectedCaptions) > 0 Then ReDim Preserve selectedCaptions(0 To UBound(selectedCaptions) - 1) Mark1.NEWPITCHSTYLETEXTBOX.Value = Join(selectedCaptions, " - ") Else Mark1.NEWPITCHSTYLETEXTBOX.Value = "" End If
方法二:先拼接再移除末尾多余分隔符
如果不想改动太多原有代码,可以先按原来的逻辑拼接,最后去掉末尾的“ - ”:
Dim resultText As String ' 按原有逻辑拼接标题 If PITCHSTYLESPOPUP.CheckBox1 = True Then resultText = resultText & PITCHSTYLESPOPUP.CheckBox1.Caption & " - " If PITCHSTYLESPOPUP.CheckBox2 = True Then resultText = resultText & PITCHSTYLESPOPUP.CheckBox2.Caption & " - " If PITCHSTYLESPOPUP.CheckBox3 = True Then resultText = resultText & PITCHSTYLESPOPUP.CheckBox3.Caption & " - " ' 移除末尾的" - "(共3个字符) If Len(resultText) > 0 Then resultText = Left(resultText, Len(resultText) - 3) End If Mark1.NEWPITCHSTYLETEXTBOX.Value = resultText
两种方式对比:方法一更灵活,后续如果修改分隔符或者增加复选框,调整起来更方便;方法二更贴近你原有代码的写法,改动量小。
内容的提问来源于stack exchange,提问作者cheese10234
相关产品推荐
相关产品推荐

