LoginSignup
0
0

ExcelVBA 勉強メモ

Posted at

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()
    'オブジェクトで主に使うのは下記
    ApplicationExcelアプリ全体
    WorkbookExcelブック
    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
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0