home(h) links(l) memo profile(r)
memo(m)  >  VBA関係

メモ〜VBA関係

index

  1. メモ
  2. コマンド集(アルファベット順)
  3. コマンド集(分野別)
  4. コマンド集(階層構造別)
  5. 参考文献
  6. リンク集

1. メモ

マクロの強制終了

デバッグ時は、要所要所にメッセージボックスを組み込んでおき、メッセージボックス表示中にESCを押せば停止できる(デバッグ、終了などを選択するダイアログが表示される)。

そのように事前に組み込んでいればいいが、そうでない時や想定外の場所で時間がかかったりして止めるに止められない時はESCを連打していればいいらしい。 ユーザーフォームが表示され、閉じないと次に進まず、そのせいですごく進行が遅延する時、ESCを押しながらユーザーフォームと閉じると止まった。

1. コマンド集(アルファベット順)

2. コマンド集(分野別)

表記法など

コメント行

行頭にシングルクォート記号(アポストロフィ、')を記せば、その行はコメント行とみなされて、処理は行われない。

コマンドの途中での改行

オプションの記述法

場所:参考文献p33

説明では次の例のように括弧で囲んでオプションが記述されているが、実際の記述法とは異なる。実際の記述法例は以下の通り。

object.AdvancedFilter(Action, CriteriaRange, CopyToRange, Unique)
↓
Range("A1:F100").AdvancedFilter _
  Action:=xlFilterCopy, _
  CriteriaRange:=Range("H1:I2"), _
  CopyToRange:=Range("K1"), _
  Unique:=False

シート、ブックの編集

新規ブックの作成

新規シートの作成

シートのコピー、移動

シートの名称変更

ファイルの読み込み、保存

ファイルを開く

ファイルを閉じる

ファイルの保存

セルの選択と編集

範囲指定

キーワード:range,cells

1つまたは複数のセルを選択する操作を行うメソッドは2種類ある。A1方式で指定する場合はrange、R1C1方式で指定する場合はcellsを用いる。

例1:A1〜C3を選択
Range("A1:C3").Select
Cells(Cells(1,1),Cells(3,3)).Select

ワークシート操作においてCtrl+矢印キーのキー操作により、 カレントセルから指定した方向へ向かって空白セルを検索しその直前のセルまで移動することができるが、この操作をVBAで行うにはEndを用いる。

【書式】
セル範囲表現.End(方向指示)
方向指示 は上(xlUp)、下(xlDown)、右(xlToRight)、左(xlToLeft)のいずれか

【例】
A1から下方向へ空白セルを検索し、その直前セルに移動
Range("A1").End(xlDown).Select
A1から右方向へ空白セルを検索し、その直前セルに移動
Range("A1").End(xlToRight).Select
H10から上方向へ空白セルを検索し、その直前セルに移動
Range("H10").End(xlUp).Select
H10から左方向へ空白セルを検索し、その直前セルに移動
Range("H10").End(xlToLeft).Select

Shift を組み合わせると、カレントセルから移動先セルまでを選択できる。

【例】
A1から下方向へ空白セルを検索し、A1からその直前セルまでを選択
Range(Range("A1"),Range("A1").End(xlDown)).Select

選択

コピー

セルの内容をクリップボードにコピーする場合は以下の通り。 コピー先に「形式を選択して貼り付け」を行う場合は、こちらを用いて、 一旦クリップボードにコピーする。

セルの内容をコピーし、別のセルに貼りつける場合は以下の通り。 単純にセルの内容全体を他のセルにコピーする場合はこちらで良い。

例:セルA1〜C3の範囲を、E1を左上とする範囲に複写する。
Range("A1:C3").copy Destination:=Range("E1")

切り取り

貼り付け

形式を選択して貼り付け

[Rangeオブジェクト].pastespecial
Paste:=[xlPasteAll/xlPasteAllExceptBorders/xlPasteColumnWidths/ xlPasteComments/xlPasteFormats/xlPasteFormulas/xlPasteFormulasAndNumberFormats/xlPasteValidation/xlPasteValues/xlPasteValuesAndNumberFormats]
Operation:=[xlPasteSpecialOperationAdd/xlPasteSpecialOperationDivide/xlPasteSpecialOperationMultiply/xlPasteSpecialOperationNone/xlPasteSpecialOperationSubtract]
Transpose:=[True/False]

例:Sheet1のセルD1〜D5の値を、E1を左上とする範囲に複写する。
Range("C1:C5").Copy Range("D1:D5").PasteSpecial _ Operation:=xlPasteSpecialOperationAdd

フィル

消去

セルの書式設定

数式

情報取得

選択範囲の行数、列数はそれぞれ Rows.Count、Columns.Count で得られる。

Dim rowcount,colcount as Integer
Range("A1:F8").Select
rowcount = Selection.Rows.Count
colcount = Selection.Columns.Count
MsgBox 
行番号、列番号、セル数

データ処理

並べ替え

フィルタ

変数、定数

定義と型

繰り返し処理

変数を一定規則で変化させて繰り返す(For…Next)

条件が満たされている間は繰り返す(Do While…Loop)

条件が満たされるまで繰り返す(Do Until…Loop)

条件分岐

2分岐型(If…Then…Else…End If)

条件列挙型(In case…)

参考文献

  1. 大庭 敦子、常見 美保「Excel VBA 逆引き大全 6000の極意」秀和システム(2007)ISBN 978-4-7980-1712-9