我是VBA的新手,想知道我是否可以将以下声明和作业转换为一行:
Dim clientToTest As String
clientToTest = clientsToTest(i)
或
Dim clientString As Variant
clientString = Split(clientToTest)
答案 0 :(得分:210)
不幸的是,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 :(得分:19)
您可以使用对象进行排序,如下所示。
Dim w As New Widget
但不是字符串或变体。
答案 2 :(得分:1)
Sub MySub( Optional Byval Counter as Long=1 , Optional Byval Events as Boolean= True)
'code...
End Sub
您可以在调用sub时以不同方式设置变量,或者让它们保持默认值。
答案 3 :(得分:1)
您可以如下一行中所示定义和分配值。我给出了两个声明并在单行中分配的变量的示例。如果多个变量的数据类型相同
Dim recordStart, recordEnd As Integer: recordStart = 935: recordEnd = 946
答案 4 :(得分:0)
在某些情况下,使用here可以避免声明变量的全部需求。
例如,
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