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

Ian*_*ien 157 vba variable-declaration

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

Dim clientToTest As String
clientToTest = clientsToTest(i)
Run Code Online (Sandbox Code Playgroud)

要么

Dim clientString As Variant
clientString = Split(clientToTest)
Run Code Online (Sandbox Code Playgroud)

Ale*_* K. 223

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

Dim clientToTest As String:  clientToTest = clientsToTest(i)
Dim clientString As Variant: clientString = Split(clientToTest)
Run Code Online (Sandbox Code Playgroud)

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

Dim ws  As Worksheet: Set ws = ActiveWorkbook.Worksheets("Sheet1")
Dim ws2 As New Worksheet: ws2.Name = "test"
Run Code Online (Sandbox Code Playgroud)

  • +1,我记得微软建议在.NET构建期间,VB6开发人员开始这样做,以便为VB.NET做好准备. (13认同)
  • 这是我对 VBA 最大的抱怨;我敢打赌,如果管理层愿意添加这个快捷方式,初级程序员只需一天的时间就能将其添加到 VBA 中。 (3认同)

Joh*_*ant 20

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

Dim w As New Widget
Run Code Online (Sandbox Code Playgroud)

但不是字符串或变体.

  • 冒号技巧适用于变量和字符串赋值.`New`关键字没有.这就是我所说的. (3认同)
  • @GoldBishop,是的,使用冒号将多个语句组合成一行通常是有效的(正如Alex K.所说).我所说的不适用于字符串或变体(或者可能与其他原语一起使用)是"Dim x As New T"语法,它只适用于对象. (2认同)
  • @JohnMGrant可能想澄清你的答案,正如我读到的那样,声明:你不能用构造函数初始化和字符串/变量值类型进行同一行分配.对某些人来说可能有点混乱. (2认同)