Я новичок в 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
Но не со строками или вариантами.
:
. Существуют некоторые ограничения, поскольку вы не можете иметь несколько объявлений значений в одной строке (т.е. var1 = val1: var2 = val2
). Он будет ошибаться сперадически и позволит вам иногда выполнять этот тип назначения, но в целом не предлагается этим обозначением.
Dim x As New T
синтаксис, который работает только с объектами.
dim str as String: str = "value"
и dim str as Worksheet: set str = ActiveWorkbook.worksheets("Sheet1")
оба работают неоднократно. Хотя, если я сделаю экземпляр объекта, dim ws as New Worksheet: set ws = ActiveWorkbook.Worksheets("Sheet1")
произойдет ошибка, как и любая другая недопустимая операция в VBA.
New
Ключевое слово не делает. Это все, что я говорю.
на самом деле, вы можете, но не так.
Sub MySub( Optional Byval Counter as Long=1 , Optional Byval Events as Boolean= True)
'code...
End 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