コメントと何が違うんじゃー
というと、コメントではなく、入力規則のメッセージから設定する
なんだよ、下手に手が込んでるな。。
ソフトウェアエンジニアの技術ブログ:Software engineer tech blog
随机应变 ABCD: Always Be Coding and … : хороший
コメントと何が違うんじゃー
というと、コメントではなく、入力規則のメッセージから設定する
なんだよ、下手に手が込んでるな。。
Select: Whenのようにcaseを書いていく構文です。
Sub SelectTest() Dim signal As String signal = Range("a1").Value Dim result As Range Set result = Range("a2") Select Case signal Case "red" result.Value = "Stop!" Case "green" result.Value = "Go" Case "yellow" result.Value = "Caution" Case Else result.Value = "n.a" End Select End Sub
while文
Sub WhileTest() Dim i As Integer i = 1 Do While i < 10 Cells(i, 1).Value = i i = i + 1 Loop End Sub
For文
Sub ForTest() Dim i As Integer For i = 1 To 9 Cells(i, 2).Value = i Next i End Subl
ForEachによるループ
Sub EachTest() Dim names As Variant names = Array("yamada", "taro", "sakamoto") For Each Name In names Debug.Print Name Next Name End Sub
プロシージャの呼び出し
Sub CallTest() Dim names As Variant names = Array("okamoto", "nakamura", "hayashi") For Each name In names Call SayHi(name) Next name End Sub Sub SayHi(ByVal name As String) Debug.Print "hi, " & name End Sub
返り値を返すfunctionプロシージャ
Sub CallTest() Dim names As Variant names = Array("okamoto", "nakamura", "hayashi") For Each name In names Debug.Print SayHi(name) Next name End Sub Function SayHi(ByVal name As String) SayHi = "hi, " & name End Function
成績表 :一定数以下の数字をカウントして、メッセージ表示
Sub FindLowScores() Dim i As Long Dim n As Long i = 2 n = 0 Do While Cells(i, 1).Value <> "" If Cells(i, 2).Value < 40 Then Cells(i, 2).Interior.Color = vbRed n = n + 1 End If i = i + 1 Loop MsgBox (n & "件該当しました!") End Sub
Excel VBAの開発には、Visual Basci Editorを使います。
ツール => マクロ => VBE
プログラムを書いていくには、標準モジュールを使います。プロシージャーはSubから書き始めていきましょう。
Sub HelloWorld() MsgBox ("hello wolrd") End Sub
セルにデータを書き込む
Sub CellChange() Worksheets("Sheet1").Range("A1").Value = "hello" Range("A2").Value = "hello2" Cells(3, 1).Value = "hello3" End Sub
Sub CellChange() Range("A1", "B3").Value = "hello" Range("A5:C7").Value = "hello2" Range("4:4").Value = "row 4" Range("C:C").Value = "Column C" End Sub
withで複数の命令を重ねる
Sub WithTest() With Range("A1") .Value = "hello" With .Font .Bold = True .Size = 16 End With .Interior.Color = vbRed End With End Sub
値の取得
Sub GetTest() MsgBox (Range("A1").Value) End Sub
メソッドで処理を呼び出し
Sub MethodTest() 'Range("B3").Delete shift:=xlShiftUp Worksheets.Add after:=Worksheets("sheet1"), Count:=3 End Sub
変数計算
Sub VariableTest() Dim x As Integer x = 10 + 5 x = x + 1 'Range("A1").Value = x Debug.Print x End Sub
配列
Sub VariableTest() Dim sales As Variant sales = Array(200, 150, 300) Debug.Print sales(2) End Sub
条件分岐
Sub IfTest() If Range("A1").Value > 15 Then Range("A2").Value = "OK" Else Range("A2").Value = "NG!" End If End Sub