●出典: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プロシージャは プロシージャを記述したモジュール内のほかのプロシージャからのみ参照できます。