vba listview 允许 复制_怎么使用VBA对象库

在前面的例子里,你学习使用了Excel对象库里的Shapes(图形)集合成员的属性。Excel库包含专门使用Excel的对象,而VBA库则提供对许多内置VBA函数的访问,这些函数按类别分组。这些函数是通用的,它们使你能够管理文件,设置日期和时间,与用户交流,转换数据类型,处理文本串或者进行数学计算。在下面的练习中,你将学习如何使用内置的VBA函数来创建一个新文件夹,而不需要离开Excel界面:

1.回到模块Manipulations,那里有你的MoveTextBox和MoveCircle过程

2. 输入一个新的过程:

Sub NewFolder()

3. 点击回车键,VB会自动输入结束关键词End Sub

4. 按下F2激活对象浏览器

5. 在“工程/库”列表框里选择VBA

6. 在搜索文本框里输入file并且回车

7. 滚动成员列表框,并且选中MkDir方法(参见图2-21)

8. 点击对象浏览器上的“复制”按钮,将被选择的方法名称复制到剪贴板

aa4fdae3bc21e7aeffba1ae88a4f6e8b.png

图2-21 编写过程时,向对象浏览器寻求帮助来找内置的VBA函数

9. 返回Manipulations窗口,并且将复制的指令粘贴到NewFolder过程

10. 输入一个空格,接着是”C:Study”。确保你在引号里输入了整个路径名。NewFolder过程为:

Sub NewFolder()

MkDir "C:Study"

End Sub

11. 运行过程NewFolder

当你运行NewFolder过程,VB在C盘上创建了一个新的文件夹。激活Windows浏览器可以查看该新文件夹。创建一个新的文件夹后,你可能会发现你根本就不需要它,虽然你可以轻易地从Windows浏览器里删除该文件夹,但是,如何从编程上去掉它呢?对象浏览器上列出了许多对文件夹和文件操作很有帮助的其它方法。RmDir方法正如MkDir 方法一样使用简单。想要删除你硬盘上的“Study”文件夹,只要将MkDir方法换成RmDir方法然后重新运行NewFolder过程就可以了。或者,你也可以创建一个新的过程RemoveFolder,如下:

Sub RemoveFolder()

RmDir "C:Study"

End Sub

RmDir方法允许你从硬盘上删除不需要的文件夹。

用对象浏览器来定位过程

除了定位对象,属性和方法外,对象浏览器还是个定位在不同工程里面的过程非常方便的工具。下

面的例子给你演示如何查看存在“Personal”工作簿里面的过程:

1. 激活对象浏览器并且选择工程/库下拉列表里的Personal。(因为我没有Personal这个文件。。。)

9de87ca725695823db21b121d1adadf2.png

图2-22 对象浏览器列出所有在某个特定VBA工程里可用的过程

对象浏览器的左边显示所选工程里面对象名称,而右边则列出了所有可用的过程。

2.双击NewFolder过程名称,VB将光标定位到该过程的第一行

3.关闭对象浏览器

使用立即窗口

在你开始创建一个完善的VBA过程前(在下一章),先来做一些热身练习,增加你的VBA词汇。你怎样才能学得快而且没有痛苦?你如何试验一下一些新学的VBA指令?这里有一些简短的,互动的语言练习:输入一个简单的VBA指令,Excel会检查并且将结果显示在下一行。我们开始来设定你的练习屏幕:

1.在VB编辑器窗口,选择“视图”-“立即窗口”

在决定使用在你自己的VBA过程之前,立即窗口可以用来试验VB语言中不同的指令,函数和运算符。这是一个非常好的调试新语言的工具,你输入在这个窗口里面的指令,将会立即显示结果。

立即窗口可以在VB编辑器窗口上任意移动,也可以设置为可连接的,这样它就会出现在相同的地方。可以通过选项对话框上的“可连接的”页来打开或关闭可连接设置。在VB编辑器窗口上按下Ctrl+G就可以快速访问立即窗口。立即窗口允许你输入VBA语句,并且测试它们的结果,而不需要写成一个过程。立即窗口就像一个草稿板,你可以用它测试你的语句。如果该语句输出了你希望的结果,你就可以将立即窗口上的语句复制到你的过程中去(或者,你也可以将语句拖曳到代码窗口,如果代码窗口是可见的)

2.将Excel和VB编辑器窗口并排排列

3.在立即窗口里输入下述指令,并且回车

Worksheets("Sheet2").Activate

当你按下回车键,VB开始工作,如果你上面输入的语句是正确的话,VBA激活当前工作簿里的第二个工作表。工作簿底部的Sheet2这时应该是突出显示的。

4.在立即窗口,输入其它VBA语句并回车

Range("A1:A4").Select

你一旦按下回车,VB将选中当前工作表的A1,A2,A3和A4

5.在立即窗口里输入下述指令:

[A1:A4].Value = 55

当你按下回车,VB在A1:A4中的每个单元格里放置数字55。上面的语句是引用Range对象的一种所写方式,完整的语法可读性更强:

Range("A1:A4").Value = 55

932a33f992225916fcfb10bb667f25bf.png

图2-23 将Excel和VB窗口并排排列让你可以观察指令的运行

6.在立即窗口输入下述指令:

Selection.ClearContents

7.回车后,VBA清除所选单元格区域的内容,区域A1:A4现在是空的

在立即窗口输入下述指令:

ActiveCell.Select

回车后,VB激活A1单元格

008f94efcd48ea6bd865660035f5ae3b.png

图2-24 在立即窗口里输入指令,一旦你按下回车键,指令就会被执行

图2-24显示了上面练习中在立即窗口里输入的所有指令。你每次按下回车键后,Excel总是执行光标所在行的语句。如果你想要再次执行同一指令,那么点击该指令行的任意位置,回车。为了更多的练习,重新运行图2-24里语句,从立即窗口的第二行指令开始,点击合适的地方并回车,一个一个地执行这些指令。

获取立即窗口里的信息

到目前为止,你已经使用立即窗口执行操作了,这些操作也可以是手动地在工作表的任意区域点击鼠标并且输入数据。立即窗口也允许你问问题。假设你想要找到下面问题的答案:“现在选中的是哪些单元格?”,“当前单元格里的值是多少?”,“当前工作表的名称是什么?”,“当前窗口的编号是多少?”使用立即窗口,你可以轻易地找到这些问题,以及其它问题的答案。在前面的例子里,你输入了好几个指令,让我们返回立即窗口去问几个问题。Excel甚至在你关闭了立即窗口后还能记住你在立即窗口里输入的指令。当你退出Excel时,立即窗口的内容自动会被删除。

1. 鼠标点击立即窗口第二行你输入Range("A1:A4").Select的任意地方

2. 回车,让Excel再次选择单元格A1:A4

3. 在立即窗口新的一行输入下面的问题:

?Selection.Address

当你按回车,Excel不会选择工作表的任何东西,取而代之,立即窗口上会在另外一行显示该指令的结果。在该例中,Excel返回的是当前被选择的单元格的绝对地址($A$1:$A$4)。问号(?)告诉Excel在立即窗口显示指令的结果。除了问号,你还可以使用Print关键字。让我们使用关键字Print问工作表名称

4. 在立即窗口新的一行,输入下述问题:

Print ActiveWorkbook.Name

回车后,Excel在立即窗口新的一行输入了当前工作簿的名称。找找应用程序的名称如何?Chap02.xls的父对象是谁?

5. 在立即窗口新的一行,输入下述问题:

?Application.Name

Excel会显示它自己的全名:Microsoft Excel

立即窗口也可以用来做一个快速计算

6. 在立即窗口新的一行,输入下述问题:

?12/3

回车后,Excel会在下一行显示该除法运算的结果。但是,万一你想立即知道3+2和12*8的结果呢?你可以将它们输入在一行,而不必分成两行,例如:?3+2:?12*8

注意,冒号将两个代码块分割开来。

当你按下回车键,Excel分别在立即窗口的两行显示结果5,96。下面是你在立即窗口里输入的所有指令,以及Excel对你问题的回答:

Worksheets("Sheet2").Activate

Range("A1:A4").Select

[A1:A4].Value = 55

Selection.ClearContents

ActiveCell.Select

?Selection.Address

$A$1:$A$4

Print ActiveWorkbook.Name

Chap02.xls

?Application.Name

Microsoft Excel

?12/3

4

?3+2:?12*8

5

96

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: VBA(Visual Basic for Applications)是一种用于自动化和自定义Microsoft Office应用程序的编程语言。Listview是一种常用的界面控件,用于显示并编辑列表数据。在VBA中,我们可以通过设置Listview的属性来允许编辑。 首先,我们可以通过设置Listview控件ListView.View属性为lvwReport来显示数据。lvwReport表示以表格形式显示数据,这样可以方便编辑。接下来,我们需要设置Listview控件的LabelEdit属性为True,来允许编辑标签。 以Excel为例,下面是一个简单的VBA代码示例,演示如何允许编辑Listview控件: ```vba Sub AllowEditListView() Dim ws As Worksheet Dim lvw As ListView ' 获取当前活动的工作表 Set ws = ActiveSheet ' 获取Listview控件 Set lvw = ws.ListView1 ' 设置Listview的属性 lvw.View = lvwReport lvw.LabelEdit = True ' 添加数据 lvw.ListItems.Add , , "Item1" lvw.ListItems.Add , , "Item2" End Sub ``` 在这个示例中,我们首先获取当前活动的工作表,并通过ListView1获取Listview控件对象。然后设置Listview的属性,将数据以表格形式显示,并允许编辑。最后,我们添加了两个列表项。 这样,当用户双击Listview中的标签时,可以编辑该标签的内容。用户可以直接在表格中编辑数据,并且修改后的数据会自动更新到Listview中。 总之,通过设置Listview的属性,我们可以在VBA允许编辑Listview控件,从而实现对列表数据的编辑操作。 ### 回答2: VBA中的ListView控件允许用户编辑列表中的项目。通过设置ListView控件的属性,我们可以启用或禁用编辑功能。 在VBA中,可以通过设置ListView控件的View属性为lvwReport来启用编辑功能。这将以报表视图显示ListView,并且用户可以双击列表中的项目来编辑它们。 为了进一步控制哪些列可以编辑,我们可以使用ListView控件的SubItems属性。SubItems属性允许我们访问并修改每个列表项的子项数据。我们可以通过使用SubItems属性的ListItems集合来遍历和修改每个子项的值。 例如,以下是一个示例代码,该代码启用了ListView的编辑功能,并显示一个具有两个列的ListView控件: Private Sub UserForm_Initialize() ListView1.View = lvwReport ListView1.ColumnHeaders.Add , , "姓名" ListView1.ColumnHeaders.Add , , "年龄" ' 添加示例数据 Dim item As ListItem Set item = ListView1.ListItems.Add(, , "张三") item.SubItems(1) = "25" Set item = ListView1.ListItems.Add(, , "李四") item.SubItems(1) = "30" End Sub 当用户双击特定的列表项时,我们可以在ListView控件的DblClick事件中编写代码来处理编辑操作。例如,以下是一个示例代码,该代码将弹出对话框显示编辑的子项值: Private Sub ListView1_DblClick() Dim selectedItem As ListItem Set selectedItem = ListView1.SelectedItem Dim editedValue As String editedValue = InputBox("请输入新的值:", "编辑子项", selectedItem.SubItems(1)) If editedValue <> "" Then selectedItem.SubItems(1) = editedValue End If End Sub 通过上述方法,我们可以在VBA中实现ListView控件的编辑功能,使用户能够方便地修改列表项的值。 ### 回答3: VBA ListView 允许编辑是指在使用 Visual Basic for Applications (VBA) 编程语言与 ListView 控件进行交互时,可以允许用户对部分或所有的列表项进行编辑操作。 在 Listview 控件中,我们可以添加多个列以展示不同类型的数据。当允许编辑时,用户可以直接在控件中修改列表项中的数据。要实现这一功能,可以通过以下步骤进行操作: 1. 首先,确保已经添加了 Listview 控件到用户界面。可以通过调用 VBA 中的 "ListView" 控件创建一个新的控件对象。 2. 使用控件的 Columns 属性来添加列。可以添加多个列以适应需求。每个列都可以指定其标题、宽度和数据类型。 3. 使用控件的 View 属性来设置显示方式。可以选择详细信息(Detail)视图,以便在每个列中显示更多的信息。 4. 可以通过调用 ListItems 属性来添加列表项。每个列表项都可以在不同的列中展示相关数据。 5. 当允许编辑时,用户可以通过双击特定列表项的单元格来进入编辑模式。此时,用户可以修改该单元格中的数据。可以使用 VBA 的 "Listview_Edit" 事件来监听并响应编辑操作。 6. 在编辑操作完成后,可以使用 VBA 的 "Listview_AfterEdit" 事件来获取修改后的数据,并进行后续操作。 需要注意的是,在进行编辑操作时,可能需要在运行时检查列的数据类型,以确保用户输入的数据符合所需格式。 综上所述,VBA ListView 可以配置为允许用户对列表项进行编辑。这为用户提供了一种直观、方便的方式来修改列表中的数据,并且可以通过 VBA 编程来控制编辑操作的行为以满足特定需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值