デバッグ時は、要所要所にメッセージボックスを組み込んでおき、メッセージボックス表示中にESCを押せば停止できる(デバッグ、終了などを選択するダイアログが表示される)。
そのように事前に組み込んでいればいいが、そうでない時や想定外の場所で時間がかかったりして止めるに止められない時はESCを連打していればいいらしい。 ユーザーフォームが表示され、閉じないと次に進まず、そのせいですごく進行が遅延する時、ESCを押しながらユーザーフォームと閉じると止まった。
行頭にシングルクォート記号(アポストロフィ、'
)を記せば、その行はコメント行とみなされて、処理は行われない。
場所:参考文献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
セルの内容をクリップボードにコピーする場合は以下の通り。 コピー先に「形式を選択して貼り付け」を行う場合は、こちらを用いて、 一旦クリップボードにコピーする。
セルの内容をコピーし、別のセルに貼りつける場合は以下の通り。 単純にセルの内容全体を他のセルにコピーする場合はこちらで良い。
[Rangeオブジェクト].pastespecial
Paste:=[xlPasteAll/xlPasteAllExceptBorders/xlPasteColumnWidths/
xlPasteComments/xlPasteFormats/xlPasteFormulas/xlPasteFormulasAndNumberFormats/xlPasteValidation/xlPasteValues/xlPasteValuesAndNumberFormats]
Operation:=[xlPasteSpecialOperationAdd/xlPasteSpecialOperationDivide/xlPasteSpecialOperationMultiply/xlPasteSpecialOperationNone/xlPasteSpecialOperationSubtract]
Transpose:=[True/False]
選択範囲の行数、列数はそれぞれ Rows.Count、Columns.Count で得られる。
Dim rowcount,colcount as Integer Range("A1:F8").Select rowcount = Selection.Rows.Count colcount = Selection.Columns.Count MsgBox行番号、列番号、セル数