ฉันใหม่กับ 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")
ทั้งสองทำงานซ้ำ ๆ แม้ว่าถ้าฉันทำอินสแตนซ์ Object 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
และคุณสามารถตั้งค่าตัวแปรต่าง ๆ เมื่อเรียก 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