我可以在 VBA 中同时声明和赋值一个变量吗?

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

Dim clientToTest As String
clientToTest = clientsToTest(i)

或者

Dim clientString As Variant
clientString = Split(clientToTest)
197488 次浏览

您可以对对象进行排序,如下所示。

Dim w As New Widget

但没有字符串或变体。

不幸的是,在 VBA 中没有速记,如果您希望在一行中使用 :延续字符,那么最接近的就是使用纯粹的视觉效果,以提高可读性;

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

提示(其他回答/评论摘要) : 也可以使用对象(Excel2010) :

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

事实上,你可以,但不是那种方式。

Sub MySub( Optional Byval Counter as Long=1 , Optional Byval Events as Boolean= True)


'code...


End Sub

在调用 sub 时,您可以设置不同的变量,或者让它们保持默认值。

在某些情况下,通过使用 With语句可以避免声明变量的全部需要。

比如说,

    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

您可以在一行中定义和分配一个值,如下所示。我已经给出了一个在一行中声明和赋值的两个变量的例子。如果多个变量的数据类型相同:

Dim recordStart, recordEnd As Integer: recordStart = 935: recordEnd = 946