私はVBAを初めて使用するので、次の宣言と割り当てを1行に変換できるかどうかを知りたいです。
Dim clientToTest As String
clientToTest = clientsToTest(i)
または
Dim clientString As Variant
clientString = Split(clientToTest)
私はVBAを初めて使用するので、次の宣言と割り当てを1行に変換できるかどうかを知りたいです。
Dim clientToTest As String
clientToTest = clientsToTest(i)
または
Dim clientString As Variant
clientString = Split(clientToTest)
回答:
残念ながらVBAには省略形はありません:
。読みやすくするために1行に続けたい場合は、継続文字を使用して純粋に視覚的なものになります。
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