●出典:Excel VBA 入門講座
●visual basic editor(※今は「開発」から入る)
- ツール→マクロ→visual basic editor
- メニュー→挿入→標準モジュール→(Module1が自動生成される)
●コードの入力と実行
- sub test()と打つと、end sub()が自動で入る
- msgbox "hello world"と打つ
- ▶(又は実行→Sub/ユーザーフォームの実行)
- T:「メッセージボックス」というのか!
●保存
- 「マクロ有効」で保存=.xlsm
- xls →xlsx → xlsm
●オブジェクト、プロパティ、メソッド
- オブジェクト:ワークブック、ワークシート、セルなど
- そのプロパティ値を変えるには:
-
-
Worksheets("Sheet1").Range("A1").Value = "HELLO WORLD"
- メソッド:動作を与えるもの
-
- Worksheets("Sheet1").Range("A1").Select
-
T:プログラム文の順番は日本語の文法のようですね!
●セルにプロパティ値を与える
-
Range("A1").Value="Hello world1"
- cells(1,1).value = "Hello world2"
- ※シート名を指定しないとアクティブなシートが選択される
-
- Worksheets("シート名").Activate
- with: 同じプロパティに対し繰り返しプロパティをセットする
-
- With Worksheets("Sheet6")
- .Activate
- With .Range("A1")
- .Value = "EXCEL VBA"
- .RowHeight = 20
- .ColumnWidth = 20
- End With
- End With
- セルに値を埋める
-
- Range("A1:E7").Value="Excel VBA"
- Range(Cells(1,1),Cells(7,5)).Value="Excel VBA"
- 行の指定
- Worksheets("Sheet1").Range(Cells(2,2),Cells(5, 5)) _
- .EntireRow.Value="Excel VBA"
- 列の指定: entirecolumn
- ※文をつなぐのは ␣_ ?
- Sub CopyCell()
- Range(Cells(1,2),Cells(3,4)).Copy Destination:=Cells(5,6)
- End Sub
- Sub CutCell()
- Range(Cells(1,2),Cells(3,4)).Cut Destination:=Cells(5,6)
- End Sub
- Sub AddWorksheet()
- Worksheets.Add
- End Sub
-
'シート"Sheet1"の名前を"TEST"にする
- Sub ChangeSheetName()
- Worksheets("Sheet1").Name="TEST"
- End Sub
- '現在アクティブなシートを"Sheet2"の後ろに移動する
- Sub MoveWorksheet()
- ActiveSheet.Move After:=Worksheets("Sheet2")
- End Sub
- '現在アクティブなシートを"Sheet2"の後ろにコピーする
- Sub CopyWorksheet()
- ActiveSheet.Copy After:=Worksheets("Sheet2")
- End Sub
- '現在アクティブなシートを削除する
- Sub DeleteWorksheet()
- Application.DisplayAlerts = False
- ActiveSheet.Delete
- Application.DisplayAlerts = True
- End Sub
- Sub SelectCell()
- Dim suuti
- Dim mojiretu
- suuti = 7
- mojiretu = "文字列代入"
- MsgBox suuti
- MsgBox mojiretu
- End Sub
- Sub Test()
- 'SubプロシージャとFunctionプロシージャのテスト
- intData = 1
- Call Subプロシージャ(intData)
- intData = Functionプロシージャ(intData)
- MsgBox "Functionプロシージャ結果:" + CStr(intData)
- End Sub
- Sub Subプロシージャ(ByVal intData As Integer)
- MsgBox "Subプロシージャ結果:" + CStr(intData)
- End Sub
- Function Functionプロシージャ(ByVal intData As Integer) As Integer
- intData = intData + 1
- Functionプロシージャ = intData
- End Function
- Privateステートメントで宣言されたSubプロシージャとFunctionプロシージャは プロシージャを記述したモジュール内のほかのプロシージャからのみ参照できます。