Tôi mới sử dụng VBA và muốn biết liệu tôi có thể chuyển đổi khai báo và chuyển nhượng sau thành một dòng không:
Dim clientToTest As String
clientToTest = clientsToTest(i)
hoặc là
Dim clientString As Variant
clientString = Split(clientToTest)
Tôi mới sử dụng VBA và muốn biết liệu tôi có thể chuyển đổi khai báo và chuyển nhượng sau thành một dòng không:
Dim clientToTest As String
clientToTest = clientsToTest(i)
hoặc là
Dim clientString As Variant
clientString = Split(clientToTest)
Câu trả lời:
Thật không may là không có tốc ký trong VBA, Điều gần nhất bạn sẽ nhận được là một thứ hoàn toàn trực quan bằng cách sử dụng :
ký tự tiếp tục nếu bạn muốn nó trên một dòng để dễ đọc;
Dim clientToTest As String: clientToTest = clientsToTest(i)
Dim clientString As Variant: clientString = Split(clientToTest)
Gợi ý (tóm tắt các câu trả lời / nhận xét khác): Cũng hoạt động với các đối tượng (Excel 2010):
Dim ws As Worksheet: Set ws = ActiveWorkbook.Worksheets("Sheet1")
Dim ws2 As New Worksheet: ws2.Name = "test"
Bạn có thể sắp xếp làm điều đó với các đối tượng, như sau.
Dim w As New Widget
Nhưng không phải với chuỗi hoặc biến thể.
:
. Có một số hạn chế vì bạn không thể có nhiều khai báo giá trị trên cùng một dòng (nghĩa là var1 = val1: var2 = val2
). Nó sẽ sửa lỗi đôi khi và cho phép bạn thực hiện loại bài tập này đôi khi nhưng nói chung không được đề xuất bởi ký hiệu này.
Dim x As New T
cú pháp, chỉ hoạt động với các đối tượng.
dim str as String: str = "value"
và dim str as Worksheet: set str = ActiveWorkbook.worksheets("Sheet1")
cả hai làm việc nhiều lần. Mặc dù, nếu tôi thực hiện khởi tạo đối tượng dim ws as New Worksheet: set ws = ActiveWorkbook.Worksheets("Sheet1")
sẽ lỗi như bất kỳ hoạt động không hợp lệ nào khác trong VBA.
New
từ khóa không. Đó là tất cả những gì tôi đang nói.
trong thực tế, bạn có thể, nhưng không phải theo cách đó.
Sub MySub( Optional Byval Counter as Long=1 , Optional Byval Events as Boolean= True)
'code...
End Sub
Và bạn có thể đặt các biến khác nhau khi gọi phụ hoặc để chúng ở các giá trị mặc định của chúng.
Trong một số trường hợp, toàn bộ nhu cầu khai báo một biến có thể tránh được bằng cách sử dụng With
câu lệnh .
Ví dụ,
Dim fd As Office.FileDialog
Set fd = Application.FileDialog(msoFileDialogSaveAs)
If fd.Show Then
'use fd.SelectedItems(1)
End If
điều này có thể được viết lại như
With Application.FileDialog(msoFileDialogSaveAs)
If .Show Then
'use .SelectedItems(1)
End If
End With
Bạn có thể xác định và gán giá trị như hiển thị bên dưới trong một dòng. Tôi đã đưa ra một ví dụ về hai biến được khai báo và gán trong một dòng. nếu kiểu dữ liệu của nhiều biến giống nhau
Dim recordStart, recordEnd As Integer: recordStart = 935: recordEnd = 946