我是 VBA 新手,想知道是否可以将以下声明和赋值转换为一行:
Dim clientToTest As String
clientToTest = clientsToTest(i)
或者
Dim clientString As Variant
clientString = Split(clientToTest)
我是 VBA 新手,想知道是否可以将以下声明和赋值转换为一行:
Dim clientToTest As String
clientToTest = clientsToTest(i)
或者
Dim clientString As Variant
clientString = Split(clientToTest)
不幸的是,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"
您可以对对象进行排序,如下所示。
Dim w As New Widget
但不适用于字符串或变体。
您可以在一行中定义和分配一个值,如下所示。我已经给出了在一行中声明和分配的两个变量的示例。如果多个变量的数据类型相同:
Dim recordStart, recordEnd As Integer: recordStart = 935: recordEnd = 946
事实上,你可以,但不是那样的。
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