Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

[5分]竹笛老师的一段打开文件对话框的代码为什么要用循环语句?

殷小宝  发表于:2013-02-17 20:05:41  
复制

下面是竹笛老师的一个示例中的打开对话框的代码:

    Dim dlgOpen As FileDialog

    Dim vrtSelectedItem As Variant

    Dim strPathFile As String

Set dlgOpen = CurrentProject.Application.FileDialog(msoFileDialogFilePicker)

    With dlgOpen

        .AllowMultiSelect = False

     If .Show = True Then

           For Each vrtSelectedItem In .SelectedItems

            strPathFile = vrtSelectedItem

            Next vrtSelectedItem

        End If

    End With

上面的代码只是打开对话框,选择一个文件,为什么用循环语句呢?因为只需选中一个呀。又不是每一个都选择。用下面的一句完全可以代替呀:

          .AllowMultiSelect = False

        If .Show Then strFileName = .SelectedItems(1)


故不明其理,敬请老师们解答。

 

Top
竹笛 发表于:2013-02-18 13:46:31
实现一个功能有多种代码可以实现,我们只要达到目的就可以了嘛。

殷小宝 发表于:2013-02-18 15:43:22
是的,一否有多种代码可以实现,我想了解的是上述代码虽然运行正常,但逻辑上是否有问题.

叶海峰 发表于:2013-02-18 16:40:47

Public Function dlggetFile(MultiSelect As Boolean)
 Dim dlgOpen As FileDialog
 Dim vrtSelectedItem As Variant
 Dim strPathFile As String
Set dlgOpen = CurrentProject.Application.FileDialog(msoFileDialogFilePicker)
    With dlgOpen
        .AllowMultiSelect =
MultiSelect
     If .Show = True Then
           For Each vrtSelectedItem In .SelectedItems
            strPathFile = vrtSelectedItem
            Next vrtSelectedItem
        End If
    End With
End Function

这样会不会好理解点呢? 虽然写循环多了3行代码,但通用性是大大的提高了.




殷小宝 发表于:2013-02-19 11:59:16
叶老师,上面那个函数怎么应用呢?这样用:dlggetFile(1),代表多选,dlggetFile(0)代表单选?

殷小宝 发表于:2013-02-19 12:17:18
理解了一些,SelectedItems是指所有选中的条目,如果是多选,就有多个选中的条目,如果 .AllowMultiSelect = False,只能选择一个.谢谢两位老师的解答.

殷小宝 发表于:2013-02-19 12:41:40
有的意思,可能是与电脑理解的不一样,if filedialog.show电脑就让对话框显示,人脑就完全可以去掉if,直接让对话框显示,而不是"如果对话框显示",事实上正是如此,去掉"如果"后,照样运行正常.

总记录:6篇  页次:1/1 9 1 :