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

问题描述 投票:148回答:4

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

Dim clientToTest As String
clientToTest = clientsToTest(i)

要么

Dim clientString As Variant
clientString = Split(clientToTest)
vba variable-declaration
4个回答
217
投票

不幸的是,在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"

19
投票

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

Dim w As New Widget

但不是字符串或变体。


1
投票

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

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
© www.soinside.com 2019 - 2024. All rights reserved.