VBA勉強メモ(2024/4/30)
勤務先で使えるかな~?って思ったのでメモ程度に残しておく
基本
Sub プロシージャ名()
Dim 変数名
Dim 変数名 as 型
'型名は色々ある。DateとかVarriantとか
Const 定数名 As 型名
'比較演算子
'下記例 Modとかあるよ。後「かつ」はAndね
Range("A1").Value < Range("A2").Value
'文字列結合 "+"も使えるけど、"&"で全部解決
Dim x
Dim y
Dim z
x = "どうも"
y = "よろしくお願いします"
'どうもよろしくお願いします
z = x & y
'改行
Range("B2") = "札幌市" & vbLf & "中央区"
End Sub
Sub セル出力()
Worksheets("出力練習シート").Range("B2") = "札幌市" & vbLf & "中央区"
End Sub
Sub object_colection()
'オブジェクトで主に使うのは下記
Application:Excelアプリ全体
Workbook:Excelブック
Worksheets:ワークシート
Range:行とかセル
Chart:グラフ
Dialog:組み込みダイアログ
'コレクションは下記 オブジェクトの複数みたいなもん
Workbooks:開いているすべてのブック
Worksheets:ブックに含まれるすべてのシート
'任意のワークシートを変数として指定
Dim ws as Worksheets
Set ws = Worksheets("ワークシート名")
'こんなこともできる 下記の階層参照
Dim sell As Range
Set sell = Worksheets("別のワークシート").Range("B5")
'VBAはTrueは-1でFalseは0
End Sub
代替こんな階層
Application
|
+- Workbook(s)
|
+- Worksheets
|
+- Range
|
+- Font など
条件分岐
Sub 条件分岐()
If Worksheets("条件分岐シート").Range("B2").Value > 70 Then
MsgBox "条件分岐シート選択ができました" & vbCrLf & "値は70以上です"
ElseIf Worksheets("条件分岐シート").Range("B2").Value > 60 Then
MsgBox "条件分岐シート選択ができました" & vbCrLf & "値は60以上です"
End If
End Sub
Sub Case条件分岐()
Select Case Worksheets("条件分岐シート").Range("C2").Value
Case 0
MsgBox "値は0です!"
Case 1
MsgBox "値は1です!"
Case 2
MsgBox "値は2です!"
Case Else
MsgBox "値はその他です。" & vbCrLf & "値:" & Worksheets("条件分岐シート").Range("C2")
End Select
End Sub
Sub 継続条件分岐()
Dim num As Integer
num = 0
Worksheets("条件分岐シート").Range("D2").Value = 0
Do While num < 5
Worksheets("条件分岐シート").Range("D2").Value = Worksheets("条件分岐シート").Range("D2").Value + 1
num = num + 1
Loop
End Sub
Sub FOR繰り返し()
Dim sum As Integer
Dim i As Integer
sum = 0
For i = 0 To 9
sum = sum + 1
MsgBox "現在の値は" & sum
Next
End Sub
' 5回しか行わない
Sub FOR繰り返し_STEP()
Dim sum As Integer
Dim i As Integer
sum = 0
For i = 0 To 9 Step 2
sum = sum + 1
MsgBox "現在の値は" & sum
Next
End Sub
' Exit DoがBreakの代わりになる
配列
' B2から値が入ってます。
Sub 配列()
Dim pref(4) As String
Dim i As Integer
Dim n As Integer
Dim src As String
i = 2
n = 0
src = 3
Do Until IsEmpty(Worksheets("配列シート").Range("B" & i).Value)
pref(n) = Worksheets("配列シート").Range("B" & i).Value
i = i + 1
n = n + 1
Loop
For i = 0 To UBound(pref)
If src = pref(i) Then
MsgBox "一致しました" & vbCrLf & "セル位置:" & "B" & i + 2
End If
Next
End Sub