Я новачок у 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