【问题标题】:How to delimit listbox selections by comma?如何用逗号分隔列表框选择?
【发布时间】:2021-02-18 02:45:23
【问题描述】:

我有一个用户表单,其中包含一个表格中三个标题的选择列表。每个标题至少有一个选择。我正在尝试用逗号分隔每个选择,并以句点结束列表。

表格在按钮点击时填充。

Private Sub CommandButton6_Click()
    Dim tableSequence As Table
    Set tableSequence = ActiveDocument.Tables(1)
    Dim NewRow As Row
    Set NewRow = tableSequence.Rows.Add
    Dim MyString2 As String
    Dim MyString5 As String
    Dim v As Variant
    Dim t As String
    Dim r As String
    Dim i As Long
    Dim L As Long
    Dim var
    Dim var1
    Dim MyString3 As String
    Dim MyString4 As String
    Dim var2
    Dim var3
    Dim p As String
    Dim M As Long
    Dim q As String
    Dim Y As Long
    For var3 = 0 To ListBox7.ListCount - 1
        If ListBox7.Selected(var3) = True Then
            MyString5 = MyString5 & ListBox7.List(var3)
            v = Split(MyString5, ",")
            p = ""
            For M = LBound(v) To UBound(v)
                p = p + v(M)
                If M Mod 3 = 2 Then
                    p = p + vbCr
                Else
                    p = p + ","
                End If
            Next M
            p = Left(p, Len(p) - 1)
            Debug.Print p
        End If
    Next
      
    NewRow.Cells(2).Range.Text = TextBox8.Text
   
    NewRow.Cells(3).Range.Text = TextBox9.Text
    
    NewRow.Cells(4).Range.Text = MyString2
    
    NewRow.Cells(5).Range.Text = "Engineering: " & MyString3 & "." _
      & vbCrLf & "Administrative: " _
      & MyString4 & "." & vbCrLf & "PPE: " & MyString5 & "."
    NewRow.Cells(5).Range.Bold = False
    NewRow.Cells(5).Range.Underline = False
    
    NewRow.Cells(6).Range.Text = ComboBox1.Text
    
    NewRow.Cells(7).Range.Text = ComboBox2.Text
    
    NewRow.Cells(8).Range.Text = ComboBox3.Text
    Dim keywordArr As Variant
    keywordArr = Array("Engineering:", "Administrative:", "PPE:")

    Dim keyword As Variant
    Dim myRange As Variant
    Dim startPos As Integer
    Dim endPos As Integer
    Dim length As Integer
    Dim i1 As Integer
    i1 = 1

    For Each keyword In keywordArr

        Do While InStr(1, myRange, keyword) = 0
            Set myRange = NewRow.Cells(5).Range.Paragraphs(i1).Range
            i1 = i1 + 1
        Loop
        startPos = InStr(1, myRange, keyword)
        startPos = myRange.Characters(startPos).Start
        length = Len(keyword)
        endPos = startPos + length
    
        Set myRange = ActiveDocument.Range(startPos, endPos)
        With myRange.Font
            .Bold = True
            .Underline = True
        End With
    Next keyword

End Sub

我相信从For var3 到第二个end if 的代码部分应该提供我的逗号分隔符。

所附图片显示了我在左边得到的东西与我试图在右边得到的东西。

【问题讨论】:

  • 我对您的问题不太了解...您是否收到如此凌乱的列表(图片的左侧)并尝试在不存在的逗号分隔符上拆分元素?
  • v = Split(MyString5, ",") 不添加逗号,它将包含逗号的字符串拆分为一个数组,同时删除所有逗号。我在您的代码中没有看到您实际添加任何逗号的任何地方。
  • 所以我想所有这些代码对于我的目的来说都是多余的。是否可以自动在多选列表框中的选项之间插入逗号?
  • @FaneDuru 好吧...左侧是表单输出到我的文档的内容。我试图让逗号出现在任何两个选择之间。我以为是 split 函数做到了这一点,但显然我错了。

标签: vba ms-word userform


【解决方案1】:

您需要在构建字符串时添加逗号。

   For var3 = 0 To ListBox7.ListCount - 1
      If ListBox7.Selected(var3) = True Then
         If MyString5 = vbNullString Then
            MyString5 = ListBox7.List(var3)
         Else
            MyString5 = MyString5 & ", " & ListBox7.List(var3)
         End If
      End If
   Next

【讨论】:

  • 谢谢!效果很好!我需要将您添加到我的圣诞贺卡列表中,或者至少将您添加到此应用程序的学分中,哈哈!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-13
  • 1970-01-01
  • 2018-03-09
  • 2013-07-03
相关资源
最近更新 更多