首页 文章

我可以同时在VBA中声明和分配变量吗?

提问于
浏览
145

我是VBA的新手,想知道我是否可以将以下声明和作业转换为一行:

Dim clientToTest As String
clientToTest = clientsToTest(i)

要么

Dim clientString As Variant
clientString = Split(clientToTest)

4 回答

  • 205

    不幸的是,在VBA中没有简写,如果你想让它在一行上以便于阅读,你将得到的最接近的是使用 : 延续字符的纯粹视觉效果;

    Dim clientToTest As String:  clientToTest = clientsToTest(i)
    Dim clientString As Variant: clientString = Split(clientToTest)
    

    提示(其他答案/评论的摘要):也适用于对象(Excel 2010):

    Dim ws  As Worksheet:     Set ws       = ActiveWorkbook.Worksheets("Sheet1")
    Dim ws2 As New Worksheet:     ws2.Name = "test"
    
  • 1

    您可以使用对象进行排序,如下所示 .

    Dim w As New Widget
    

    但不是字符串或变体 .

  • 19

    事实上,你可以,但不是那样 .

    Sub MySub( Optional Byval Counter as Long=1 , Optional Byval Events as Boolean= True)
    
    'code...
    
    End Sub
    

    并且您可以在调用sub时以不同方式设置变量,或者让它们保持默认值 .

  • 0

    在某些情况下,使用With statement可以避免声明变量的全部需要 .

    例如,

    Dim fd As Office.FileDialog
        Set fd = Application.FileDialog(msoFileDialogSaveAs)
        If fd.Show Then
            'use fd.SelectedItems(1)
        End If
    

    这可以改写成

    With Application.FileDialog(msoFileDialogSaveAs)
          If .Show Then
            'use .SelectedItems(1)
          End If
        End With
    

相关问题