※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

「EXCEL-VBA」の編集履歴(バックアップ)一覧はこちら

EXCEL-VBA」の最新版変更点

追加された行は青色になります。

削除された行は赤色になります。

+*VBA(Visual Basic for Applications)
 
+マクロとは、アプリケエーションソフトの操作を自動化するための機能である。
+シートやフォームに関連しないコードを&bold(){標準モジュール}という。
+メッセージボックスを表示する。
+
+ Sub Message()
+   MsgBox "Hello World!"
+ End Sub
+
+SubとEnd Subの間に記述したコードのかたまりをプロシージャという。
+ステートメントを次の行に続ける場合は、改行の前に「 _」(半角スペースとアンダーバー)を記述する。
+コメントは「'」(シングルクォーテーション)を使って記述する。
+
+**変数の宣言
+
+Integer型(整数)の変数aを宣言する。
+ Dim a As Integer
+
+***文字列型
+文字列はStringというデータ型に格納する。
+ Dim fruit As String
+ fruit = "りんご"
+
+***定数
+定数はConstを使って定義する。
+ Const PI As Integer = 3.14
+定数に値を代入することはできない。
+
+***特殊文字
+
+-vbCr 改行
+-vbTab タブ
+-vbBack バックスペース
+-vbNullChar NULL文字
+
+***配列
+配列の宣言
+ Dim a(1 To 4) As Integer
+または、
+ Dim a(3) As Integer
+配列の要素の参照と代入
+ a(0) = 1
+ MsgBox a(0)
+
+**MsgBox関数
+
+ MsgBox (prompt[, buttons][,title][, helpfile, context])
+
+Buttonsには、vbOKOnly、vbOKCancel、vbYesNo、vbYesNoCancelなどを指定できる。
+
+
+**プロシージャ
+Subプロシージャは戻り値がない。
+SubステートメントとEnd Subステートメントを使って定義する。
+引数のあるプロシージャは以下のように定義する。
+ Sub A(str As String)
+   MsgBox str 
+ End Sub
+
+Functionプロシージャは戻り値がある。
+FunctionステートメントとEnd Functionステートメントを使って定義する。
+ Function A()
+   aaa = "Hello"
+ End Function
+
+プロシージャの呼び出しにはCallステートメントを用いる。
+ Call A
+引数を渡して呼び出す場合
+ Call A("引数1")
+
+**変数のスコープ
+プロシージャ内で宣言した変数は、宣言したプロシージャ内でのみ有効である。
+モジュールの先頭で宣言した変数は、モジュール内で有効である。
+
+**バリアント型
+宣言せずに使用した変数のデータ型をバリアント型(Variant)という。
+バリアント型のサイズは16バイトである。
+モジュールの先頭で次のように記述すると、宣言していない変数を使用できないようにできる。
+ Option Explicit
+
+**文字列連結演算子
+ MsgBox "2010" & "年"
+
+""IF~Thenステートメント
+
+ If 条件 Then
+   処理1
+ ElseIf 条件2 Then
+   処理2
+ ElseIf 条件3 Then
+   処理3
+ Else
+   処理4
+ End If
+
+""Select Caseステートメント
+ Select Case 式
+ Case 値1
+    処理1
+ Case 値2
+    処理2
+ Case Else
+    処理n
+ End Select
+
+値の指定方法
+ Case 4,5,6
+ Case 2 To 5  // 範囲指定
+比較演算子の使用
+ Case Is < 10
+
+**For~Nextステートメント
+ Dim i As Integer
+ For i = 0 To 3
+    処理
+ Next
+増分の指定
+ Dim i As Integer
+ For i = 2 To 30 Step 3
+    処理
+ Next
+
+**For Each ~Nextステートメント
+あるオブジェクトの集まりに対して、その中のすべての要素に対して処理を行う。
+ Dim ws As WorkSheet
+ For Each ws In WorkSheets
+    処理
+ Next
+
+**Do~Loopステートメント
+***Do While~Loopステートメント
+処理の前に条件を評価する。
+ Do While 条件
+    処理
+ Loop
+
+***Do ~Loop Whileステートメント
+処理の後に条件を評価する(必ず1度処理を実行する)。
+ Do
+    処理
+ Loop While 条件
+
+ある条件が成立するまで繰り返しを実行するには、Untilを使用する。
+
+***Do Until~Loopステートメント
+処理の前に条件を評価する。
+ Do Until 条件
+    処理
+ Loop
+
+***Do ~Loop Untilステートメント
+処理の後に条件を評価する(必ず1度処理を実行する)。
+ Do
+    処理
+ Loop Until 条件
+
+**Exitステートメント
+***Exit For
+***Exit Do
+
+**無限ループ
+[Ctrl] + [Break]で中断可能
+
+
+*オブジェクト
+操作の対象となる、Excelのワークブックやワークシートをオブジェクトという。
+また同じ種類のオブジェクトをひとまとめにしたものをコレクションという。
+オブジェクトはObject型の変数に代入できる。
+Setステートメントで変数とオブジェクトを関連付ける。
+ Dim obj As Object
+ Set obj = Application
+変数とオブジェクトの関連付けを無効にする場合は、Nothingキーワードを使用する。
+ Set obj = Nothing
+
+*プロパティ
+プロパティとは、オブジェクトの状態や属性のことである。
+参照
+ Dim cnt As Integer
+ cnt = ThisWorkbook.Worksheeets.Count
+
+*メソッド
+メソッドとは、オブジェクトを操作したり、動作させるインターフェースである。
+
+ワークブックBook2をアクティブにする。
+ Workbooks("Book2").Activate
+
+例  A1:A3にHelloを記入する。
+ Sub SheetActivate
+   Sheet3.Activate
+   ActiveSheet.Range("A1:A3").Select
+   Selection.Value = "Hello"
+ End Sub
+
+ワークブックBook1を、保存せずに閉じる。
+ WorkBooks("Book1").Close False
+
+2番目のワークシートの次に、ワークシートを1つ追加する。
+ Worksheets.Add After:=Worksheets(2), Count:=1
+
+
+*ユーザーフォームの操作
+
+ユーザーフォームを表示する
+ Load UserForm1
+ UserForm1.Show
+
+ユーザーフォームを閉じる
+ Unload UserForm1
+
+*セルの参照
+1つのセルを参照するには、CellsプロパティまたはRangeプロパティを使用する。
+A1セルに10を代入する。
+ Cells(1,1).Value = 10
+ Range("A1").Value = 10
+
+セル範囲の参照
+ Range("A1","B2").Select
+
+アクティブセルの参照
+ MsgBox ActiveCell.Value
+
+VBAで数式を取得・設定するにはFormulaプロパティを使用する。
+ Cells(1,1).Formula= "=1+1"
+
+セルの表示形式
+NumberFormatプロパティを使用する。
+-日付
+ ActiveCell.Value = "2010/5/5"
+ ActiveCell.NumberFormat = "yyyy年m月d日"
+-通貨
+ ActiveCell.Value = "1000"
+ ActiveCell.NumberFormat = "\\#,##0"
+-桁数指定
+ ActiveCell.Value = "10"
+ ActiveCell.NumberFormat = "0.00"
+
+文字の色
+ Cells(1,1).Value = "AAAAA"
+ Cells(1,1).Font.Color = RGB(255,0,0)
+
+文字の大きさ
+ Cells(1,1).Value = "AAAAA"
+ Cells(1,1).Font.Size = 8
+
+罫線
+ ActiveCell.Borders.LineStyle = xlContinuous
+他には、xlDash、xlDoubleなど
+
+セルの塗りつぶし
+ ActiveCell.Interior.Color = RGB(200,200,200)