手把手教你使用窗体设计工具(二)
【前情回顾】
Kevin Cai,公众号:VBA基础入门手把手教你使用窗体设计工具(一)
12,追加输出列表 框架。(操作方法同文件夹路径一样)

13,在输出列表 框架内,追加 输出列表框。(工具箱,控件里面的列表框)


14,追加执行按钮 和 退出按钮。(操作方法同选择按钮一样)

15,追加 执行信息 框架。(操作方法同输出列表一样)

16,在执行信息框架内,追加 执行信息的显示标签。(工具箱,控件里面的标签)

17,写入执行按钮的代码。我们先将之前的代码复制过来稍加改动。(双击执行按钮后,粘贴代码)

Dim fs, folder, files, fileDim inpath As StringDim nowRow As Integer
'初始值设定inpath = Sheets('Tool').Range('C2')nowRow = 2
'InputPath CheckIf inpath = '' Then MsgBox '请输入InputPath!' Exit SubEnd If
Set fs = CreateObject('Scripting.FileSystemObject')Set folder = fs.getfolder(inpath)Set files = folder.files
Sheets('List').Range('A2:A65536').ClearContents
For Each file In files Sheets('List').Range('A' & nowRow) = file.Name nowRow = nowRow + 1Next
MsgBox '完了'1,第7行的文件夹路径我们从文本框中获取了,而不是excel单元格,所以需要更改,改成 【inpath = TextBox1.Text】。
2,第23行的输出列表清空不是清空excel里面的单元格了,所以应该改成【ListBox1.Clear】。
3,第27,28行,因为不用向excel里面写入了,直接写入到窗体中的列表框,所以应该改成【ListBox1.AddItem (file.Name)】。从而不需要使用nowrow这个变量了,所以第3行的定义,以及第6行的给它赋初始值也便不需要了。
4,由于变更成把执行信息写入 执行信息的标签,所以第32行的弹信息框改为【Label1.Caption = '完了'】。并且,需要在一开始的时候给它赋初始值空。
【变更后代码】

Dim fs, folder, files, fileDim inpath As String'初始值设定inpath = TextBox1.TextLabel1.Caption = '''InputPath CheckIf inpath = '' ThenMsgBox '请输入文件夹路径!'Exit SubEnd IfSet fs = CreateObject('Scripting.FileSystemObject')Set folder = fs.getfolder(inpath)Set files = folder.filesListBox1.ClearFor Each file In filesListBox1.AddItem (file.Name)NextLabel1.Caption = '完了'
18,让我们测试一下代码的正确性。
按F5运行代码。

点击选择,选择文件夹路径。


点击执行。

可以看见文件夹中的文件名被正确的写入了输出列表,并在执行信息中显示完了。说明我们的代码是正确的。到目前为止,我们算是把功能基本上移植到了窗体中去。
下期我们接着分享 优化这个工具的不足。

赞 (0)
