Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 在MS Word中将多个选定的响应返回到书签_Vba_Listbox_Ms Word_Multi Select - Fatal编程技术网

Vba 在MS Word中将多个选定的响应返回到书签

Vba 在MS Word中将多个选定的响应返回到书签,vba,listbox,ms-word,multi-select,Vba,Listbox,Ms Word,Multi Select,我有一个word文档,用户单击一个commandbutton,它会显示一个userform,上面有一个multiselect列表框(listbox1)和一个commandbutton(cmnd1)。我希望用户选择多个项目,然后单击命令按钮 这会导致userform消失,所选项目在MS word文档(bkmrk1a)中的书签处显示为字符串 我可以很容易地做到这一点与单一选择。我被multiselect绊倒了 以下是我正在使用的代码: `Option Explicit Priva

我有一个word文档,用户单击一个commandbutton,它会显示一个userform,上面有一个multiselect列表框(listbox1)和一个commandbutton(cmnd1)。我希望用户选择多个项目,然后单击命令按钮

这会导致userform消失,所选项目在MS word文档(bkmrk1a)中的书签处显示为字符串

我可以很容易地做到这一点与单一选择。我被multiselect绊倒了

以下是我正在使用的代码:

    `Option Explicit

     Private Sub UserForm_Initialize()

     Dim i, Str As String
     Str = "Rating1,Rating2,Rating3,Rating4,"
     For i = 0 To UBound(Split(Str, ","))
         ListBox1.AddItem Split(Str, ",")(i)
     Next

     End Sub

     Private Sub CommandButton1_Click()
              Selection.Text = ListBox1.Value
              Application.ScreenRefresh
     End Sub
任何帮助都将不胜感激。我是VBA新手


标记要在列表框上启用multiselect,只需将
.multiselect
属性设置为
fmMultiSelectMulti
fmMultiSelectExtended
。后者允许您使用shift键选择多个项目。ie在初始化中:

ListBox1.MultiSelect = fmMultiSelectExtended
然后,当您单击commandbutton时,需要循环浏览列表项并检查它们是否已被选中。即:

 Private Sub CommandButton1_Click()
    Dim ii As Integer

        For ii = 0 To ListBox1.ListCount - 1
            If ListBox1.Selected(ii) Then
                Selection.Text = ListBox1.List(ii)
                Selection.MoveRight
                Selection.TypeParagraph
            End If
        Next ii
        Application.ScreenRefresh
 End Sub