【问题标题】:Get multiselect listbox items to print from MS Word userform从 MS Word 用户窗体中获取要打印的多选列表框项目
【发布时间】:2014-06-26 21:10:33
【问题描述】:

我正在尝试获取它,以便如果有人在用户窗体的列表框中选择多个项目,这些项目将全部打印在从设置的书签开始的 Word 文档上。我将它们作为连续的 If 语句进行处理,希望能够做到这一点,因此它们只是堆叠在一起。但是,不工作。任何帮助,将不胜感激。有更多的州有联系信息,但我认为这会更容易处理。

With ActiveDocument
  .Bookmarks("Contact").Select
  Dim varItem As Variant
  Dim i As Long
  Do While Len(Me.lstState & vbNullString) > 0
    For Each varItem In lstState
      For i = 0 To Len(Me.lstState) - 1
        If lboState.Selected(i) = "Alabama" Then
          .Selection.WriteLine ("Alabama UI: 866-555-5382")
          .Selection.WriteLine ("www.alabama.com")
          .Selection.WriteLine ("")
        End If
        If lstState.Selected(i) = "Alaska" Then
          .Selection.WriteLine ("Alaska UI: 907-555-5552")
          .Selection.WriteLine ("www.alaska.us")
          .Selection.WriteLine ("")
        End If
      Next i
    Next varItem
  Loop
End With

【问题讨论】:

  • 下次请描述具体问题:如果有错误,错误是什么,哪一行引发的。如果没有错误,请详细说明观察到的结果与预期结果有何不同。

标签: vba listbox ms-word multi-select userform


【解决方案1】:

这是您应该寻找的:

Dim i As Integer

With ActiveDocument
  .Bookmarks("Contact").Select

    For i = 0 To lstState.ListCount - 1
      If lstState.Selected(i) = True Then
        If lstState.List(i) = "Alabama" Then
          Selection.TypeText ("Alabama UI: 866-555-5382") & vbCr
          Selection.TypeText ("www.alabama.com") & vbCr
          Selection.TypeText vbCr
        End If
        If lstState.List(i) = "Alaska" Then
          Selection.TypeText ("Alaska UI: 907-555-5552") & vbCr
          Selection.TypeText ("www.alaska.us") & vbCr
          Selection.TypeText vbCr
        End If
      End If
    Next i
End With

有几件事是错误的:

  1. 您尝试循环选择的项目不正确;您需要使用 lstState.ListCount 递增每个项目,它会返回列表框中的项目总数。
  2. 您检查所选值不正确; lstState.List(i) 将为您提供项目(选定状态)。
  3. lboState 不存在 - 可能只是开发中的一个错字。
  4. 选择是应用程序范围的属性(在给定时间只有一个);所以 .Selection 暗示它属于 ActiveDocument 是不正确的。
  5. 没有Selection.WriteLine 方法;使用 TypeText。

所以只是一点点 VBA 不正确,但你会学到的。我在每个项目(vbCr)之后添加了一个换行符,但您可以更多地使用格式。如果您打算遍历每个州,也请查看 SELECT...CASE。

编辑:再次将 i 调暗为整数,因为我已经撕掉了一些 OP 的代码并忘记替换它。

【讨论】:

  • 哇,非常感谢@VBlades!它就像一个魅力。我很抱歉我的反应迟钝——我上周都在度假。我是 VBA 新手,从未在该网站上发过帖子,但我很高兴我做到了。再次感谢!
  • @user3781002:哈哈,别担心,希望你过得愉快。很高兴它对你有效。如果您有机会,请将此标记为答案,以便下次有人遇到同样的问题并偶然发现它时,他们知道它有效。保重。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-16
  • 2021-11-10
  • 1970-01-01
  • 2015-09-27
  • 2014-10-14
  • 2021-11-23
  • 2019-06-03
相关资源
最近更新 更多