2

在 VB6 中,我似乎无法做到这一点:

myListBox.List = listContentStringArrray

VB 抱怨编译错误说“参数不是可选的”,显然是因为.List(index)需要一个索引。

以下代码适用于 VBA:

Private Sub CommandButton1_Click()
    Dim result() As String
    ReDim result(0)
    result(0) = "hello"
    ReDim Preserve result(1)
    result(1) = "world"

    ListBox1.List = result

End Sub

查看对象浏览器,我发现 VBA 中的 ListBox 确实是MSForms.ListBox,而在 VB6 中它是VB.ListBox.

VBA ListBox 的List属性被声明为Property List([pvargIndex], [pvargColumn]),在 VB6 中它是Property List(Integer) As String,这就是我的问题所在。

有没有办法在现有代码库中“交换”而不破坏任何东西,或者VB.ListBox设计为仅在 VBA 中使用,因为“VB”库不包含在 VBA 中?如果我在我的 VB6 项目中引用,我可以在对象浏览器中看到,但在工具箱中看不到。MSForms.ListBoxMSFormsFM20.dllMSForms.ListBox

4

1 回答 1

3

Forms 2.0可以在 VB6 应用程序中使用控件。例如,它是获取支持 Unicode 的控件的一种方法(请参阅Visual Basic 表单知识库文章中的如何读取和显示 UNICODE 字符串)。

如果我在我的 VB6 项目中引用 FM20.dll,我可以在对象浏览器中看到 MSForms.ListBox,但在工具箱中看不到。

要将控件添加到工具箱中,您必须Microsoft Forms 2.0 Object Library通过Project |添加。组件菜单项 ( Ctrl+ T): 在此处输入图像描述

但是,坦率地说,如果您需要的只是“使用单条指令填充 VB6 列表框”的能力,那就太矫枉过正了。只需编写一个用于常规 VB6 的例程,ListBox就完成了。

另请记住,Forms 2.0 控件不可再分发。来自INFO:FM20.DLL KB 的使用和重新分发:

Fm20.dll 不可再分发。您必须在目标系统上安装 Microsoft Office 97 等应用程序,将 Fm20.dll 作为其安装程序的一部分...无论如何,您不得将 Fm20.dll 作为安装程序的一部分分发,即使您购买了Microsoft Office 开发人员版产品。

作为让最终用户安装 Microsoft Office 的替代方法,您可以让他们免费下载并安装 Microsoft ActiveX Control Pad,它还会安装 Fm20.dll。

于 2013-05-08T16:08:45.057 回答