2007.5.30 作成
むちゃくちゃ初歩的なことばっかです。ぼちぽちほちと更新して行きます...。
■ 参考リンク 3
いっぱい勉強させて頂きましたー。ありがとうございます。
- Excel VBA モーグ即効テクニック集
- VBAestに学べ ExcelVBA上級テクニック モーグスキルアップ講座
- Excel エクセルの使い方-マクロ/VBA - インストラクターのネタ帳
- やさしく学ぶExcelVBA:日経パソコン オンライン
- Office TANAKA - トップページ
- ExcelVBAメニュー - Shun's Page
- Excel全開VBA
- ☆ Excelでお仕事!(Excel全般の解説サイト) ☆
- Excel VBA 入門講座
- VBA - エクセルマクロめも。 - 634 - めざせへなちょこ
- Excel VBA入門
- ★ Let's Excel VBA ★
- Excel(エクセル)VBAメモ:目次 - よねさんのWordとExcelの小部屋
- Excel VBAを使い始めた人から - SETO HOME
- エクセル講座目次 - ゆうゆうくらぶ
- 犬でもわかるExcelVBA講座
ページ先頭 U
■ 参照(オブジェクト) 4
■ ワークブック(ファイル)参照
※省略可能
Workbook オブジェクトは、Workbooks プロパティ、ActiveWorkbook プロパティ、ThisWorkbook プロパティから取得可能。
Application.Workbooks- Applicationオブジェクトは省略可能WorkBooks("Book1")- ファイル名で指定Workbooks.Open filename:="abc.xls"- abc.xls を開く
ページ先頭 U
■ ワークシート参照
※省略可能
Worksheet オブジェクトは、Worksheets プロパティ、ActiveSheet プロパティから取得可能。
ActiveSheetプロパティ - アクティブシートActiveSheet.Previous- 前のシートActiveSheet.Next- 後のシート
Worksheets("Sheet1")- シート名で指定Worksheets(1)- 1枚目のワークシートActiveCell.Worksheet
ページ先頭 U
■ セル参照
Selectionプロパティ - 選択領域(全体)Selection.EntireRow- 選択セルを含む行Selection.EntireColumn- 選択セルを含む列
ActiveCellプロパティ - アクティブなセル(複数選択の場合など)ActiveCell.Offset(1,0)- 下ActiveCell.Offset(-1,0)- 上ActiveCell.Offset(0,1)- 右ActiveCell.Offset(0,-1)- 左ActiveCell.EntireRow- アクティブセルを含む行ActiveCell.EntireColumn- アクティブセルを含む列
Rangeプロパティ - セル番地 / 行 / 列 を指定Range("A1")-Range("A1,B5")- とびとび指定(A1がアクティブ)Range("A1:C5")- 範囲指定Range("A1", "C5")- 範囲指定Range("A:A")- 列A全体Range("A:A,C:C")- 列Aと列CRange("20:20")- 行20全体Range("20:20,25:25")- 行20と行25
Cellsプロパティ - 行/列を番号で指定Cells- シート全体Cells(2, 1)- 行/列番号を指定Range(Cells(1,1),Cells(5,3))- 範囲指定
Rowsプロパティ - 行Rows(2)- 行2Rows("2:2")- 行2Rows(ActiveCell.Row)- アクティブセルの行Rows("2:4")- 行2から行4
Columnsプロパティ - 列Columns(2)- 列BColumns("A:A")- 列AColumns("A:B")- 列Aから列BColumns(ActiveCell.Column)- アクティブセルの列
UsedRangeプロパティ - 使用済みセル領域選択ActiveSheet.UsedRange.Select- Excel(エクセル)VBAメモ:セル範囲の指定方法
CurrentRegion- プロパティアクティブセル領域を選択-
Range("A1").CurrentRegion.Select- アクティブセル領域を選択する−CurrentRegionプロパティ:Excel エクセルの使い方-マクロ/VBA
SpecialCellsプロパティSpecialCells(xlCellTypeBlanks)- 空SpecialCells(xlCellTypeConstants)- 定数(値)のあるセルSpecialCells(xlCellTypeFormulas)- 数式が含まれるセルSpecialCells(xlCellTypeLastCell)- 使われた最後のセルSpecialCells(xlCellTypeVisible)- すべての可視セルSpecialCells(xlCellTypeNotes)- コメントが含まれるセルSpecialCells()-
- 数式のあるセルを選択
Cells.SpecialCells(xlCellTypeFormulas).Select
- 数式の結果がエラーとなっているセルを選択
Cells.SpecialCells(xlCellTypeFormulas, xlErrors).Select
ページ先頭 U
■ プロパティ / 定数 5
下記のように記述
対象.プロパティ(.プロパティ) = 定数/値/数式など
■ セルの設定
- 入力
Value- 値(文字/数値/定数など)を入力(※省略可能)Formula- 数式を入力FormulaR1C1- R1C1形式で数式を入力R[0]C[-1]はRC[-1]と同じ
- セルに数式を入力/取得する(Formula/FormulaR1C1プロパティ) - Excel VBA モーグ即効テクニック集
- フォント -
FontFont.Name = "MS ゴシック"- フォント名Font.Size = 14- フォントサイズFont.ColorIndex = 3- フォントカラー(赤)Font.Bold = True- 太字Font.Italic = True- 斜体Font.Underline = True- 下線Font.Strikethrough = True- 取り消し線- Excel(エクセル)VBAメモ:セルのフォント・塗りつぶし・罫線を設定する
- Excel VBA Reference ★文字色とセルの塗りつぶし設定★
- Excel VBA Reference ★セルのフォント書式設定★
- 表示形式 -
NumberFormatLocalNumberFormatLocal = "yyyy/mm/dd"- 日付NumberFormatLocal = "@"- 文字列NumberFormat = "#,##0.00"- 小数点以下2桁- Excel(エクセル)VBAメモ:セルの表示形式・表示位置など
- 配置
HorizontalAlignment = xlHAlignCenter- 横位置を中央揃えVerticalAlignment = xlVAlignTop- 縦位置を上詰めOrientation = xlVertical- 文字方向を垂直にWrapText = True- 折り返して全体を表示するShrinkToFit = True- 縮小して全体を表示するMergeCells = True- セルを結合する- 文字の配置を設定する - Excel VBA モーグ即効テクニック集
- Excel(エクセル)VBAメモ:セルの表示形式・表示位置など
- 罫線
Borders.LineStyle = True- セル四方Borders.Weight = xlThick- 太線を指定(セル四方)Borders(xlEdgeBottom).LineStyle = xlDouble- 選択セル底部に二重線- Excel(エクセル)VBAメモ:セルのフォント・塗りつぶし・罫線を設定する
- 塗りつぶし / パターン
Interior.ColorIndex = 3- 赤色で塗りつぶしInterior.Pattern = xlChecker- チェック模様パターン- Excel(エクセル)VBAメモ:セルのフォント・塗りつぶし・罫線を設定する
- パターンを設定する - Excel VBA モーグ即効テクニック集
ページ先頭 U
■ 列 / 行 の調整
ColumnWidth- 列の幅を標準フォント文字数で設定Columns("A:C").ColumnWidth = 15- 列Aから列CRange("A2:C5").ColumnWidth = 10- A2からC5が含まれる列(= 列Aから列C)Range("A2,E5").ColumnWidth = 10- A2とE5が含まれる列(= 列Aと列E)Selection.ColumnWidth = 20- 選択領域が含まれる列
RowHeight- 行の高さをポイント(1p = 0.35mm)で設定Rows("3").RowHeight = 30- 行3Range("A2:C5").RowHeight = 30- A2からC5が含まれる行(= 行2から行3)Range("A2,E5").RowHeight = 30- A2とE5が含まれる行(= 行2と行5)Selection.RowHeight = 30- 選択領域含まれる行
ページ先頭 U
■ その他
- カラーパレットで色を設定 -
ColorIndexInterior.ColorIndex = 3- セルを赤で塗りつぶしFont.ColorIndex = 5- セルのフォントを青に- カラーパレットで色を設定する(ColorIndexプロパティ) - Excel VBA モーグ即効テクニック集
- ColorIndexプロパティ値一覧:Excel エクセルの使い方-マクロ/VBA
Name- 対象の名前を指定対象.name = 値- 領域(テーブル)の名前定義も可能
Count- セル(行/列)を数えるRange("A1:B5").Count- 選択セルの数Range("A1:B5").Rows.Count- 選択行の数Range("A1:B5").Columns.Count- 選択列の数
対象.Row- 行番号を取得対象.Column- 列番号を取得
Application.DisplayAlerts = False- 警告画面を出さない
ページ先頭 U
■ メソッド 6
下記のように記述
対象.メソッド(引数:=対象/定数)
Activate- 対象をアクティブにするSelect- 選択する
- 消去
Clear- すべてクリアClearContents- 値 / 数式をクリアClearFormats- 書式をクリア
Copy- コピー&貼り付けSelection.Copy Destination:=Range("F10")- 選択セルをF10へコピー&貼り付け
Cut- 切り取り&貼り付けSelection.Cut Destination:=Range("F10")- 選択セルをF10へ切り取り&貼り付け
Paste- クリップボードから貼り付けActiveSheet.Paste- 選択領域へ貼り付けActiveSheet.Paste Destination:=Range("B1")- 貼り付け先を指定
Application.CutCopyMode = False- コピー / 切り取りモードをオフにする
Insert- セル(行/列)の挿入- Excel VBA 入門講座 セルの挿入
Range("B2:E3").Insert- B2:E3に挿入、下(行)方向にシフト(範囲は横長)Range("B2:C3").Insert- B2:C3に挿入、下(行)方向にシフト(範囲は正方)Range("B2:C4").Insert- B2:C4に挿入、右(列)方向にシフト(範囲は縦長)ActiveCell.EntireRow.Insert- アクティブセルのある行から1行挿入Range("B2:E3").EntireRow.Insert- 2行目から2行挿入ActiveCell.EntireColumn.Insert- アクティブセルのある列から1列挿入Range("B2:E3").EntireColumn.Insert- 列Bから4列挿入Range("B2").Insert Shift:=xlShiftToRight- シフト方向を右に指定Range("B2").Insert Shift:=xlShiftDown- シフト方向を下に指定
Delete- セル(行/列)の削除- Excel VBA 入門講座 セルの削除
Range("B1:D4").Delete- 左(列)方向にシフト((範囲横長)Range("C3:D4").Delete- 上(行)方向にシフト(範囲は正方)Range("B2:C4").EntireRow.Delete- 上(行)方向にシフト(範囲縦長)Range("C3:D5").EntireRow.Delete- 行3から行5を削除Range("C3:D4").EntireColumn.Delete- 列Cから列Dを削除Range("B2:C4").Delete Shift:=xlShiftToLeft- シフト方向を左に指定Range("B2").Delete.Shift:=xlShiftUp- シフト方向を上に指定
ページ先頭 U
■ 形式を選択して貼り付け
対象.PasteSpecial 引数:=定数, 引数:=真偽値, ...
※引数は省略可能
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
- 引数
Paste- 貼り付け内容Paste:=xlValues- 値Paste:=xlPasteFormulas- 数式Paste:=xlPasteFormats- 書式Paste:=xlPasteComments- コメントPaste:=xlDataValidation- 入力規則Paste:=xlPasteAllExceptBorders- 罫線を除く全て
- 引数
Operation- 演算Operation:=xlNone- 設定しない(既定)Operation:=xlAdd- 加算Operation:=xlSubtract- 引算
- 引数
SkipBlanks- 空白セルの処理SkipBlanks:=False- 空白セルとして処理する(既定)SkipBlanks:=True- 空白セルを無視する
- 引数
Transpose- 行列の入替Transpose:=False- しない(既定)Transpose:=True- する
ページ先頭 U
■ 列 / 行 の最適化
AutoFit- 列幅をセルの内容に合わせるColumns("B").AutoFit- 列Bの幅を最適化Range("A1:B4").Columns.AutoFit- A1からB4の内容に合わせてRange("A1,B4").Columns.AutoFit- A1とB4の内容に合わせてSelection.Columns.AutoFit- 選択領域の内容に合わせて
AutoFit- 行の高さをセルの内容に合わせるRows(1).AutoFit- 行1の高さを最適化Range("A1:B4").Rows.AutoFit- A1からB4の内容に合わせてRange("A1,B4").Rows.AutoFit- A1とB4の内容に合わせてSelection.Rows.AutoFit- 選択領域の内容に合わせて
ページ先頭 U
■ ワークシートの扱い
Move- 移動WorkSheets(4).Move Before:=WorkSheets(1)- (4)を(1)の前にWorkSheets(4).Move After:=WorkSheets(1)- (4)を(1)の後ろに
Add- 新規シートを追加WorkSheets.Add Before:=WorkSheets(1)- 新規シートを(1)の前にWorkSheets.Add After:=WorkSheets(1)- 新規シートを(1)の後に
Worksheets("Sheet2").Copy After:=Worksheets(4)- シートをコピー
ページ先頭 U
■ プログラム制御文 7
- If構文で条件に応じた処理を実行する(第11回):日経パソコンオンライン
- 変数を使ってすっきりとしたマクロを作る (第12回):日経パソコンオンライン
- 繰り返し処理の基本形を覚える (第16回):日経パソコンオンライン
- 条件を満たすまで処理を繰り返す (第20回):日経パソコンオンライン
ページ先頭 U
■ “ミニ”マクロ 8
- 選択領域を太線で囲む
-
Sub 太線で囲む() With Selection .Borders.Weight = xlThick .Borders(xlInsideVertical).LineStyle = xlNone .Borders(xlInsideHorizontal).LineStyle = xlNone End With End Sub - 列Aの一番下のセルを選択
-
Sub 一番下のセルを選択() Range("A65536").End(xlUp).Select End SubSub 一番下のセルを選択() Range("A" & Rows.Count).End(xlUp).Select End Sub - アクティブセルのある列の一番下のセルを選択
-
Sub 一番下のセルを選択EntireColumn() Selection.EntireColumn.Select '列を選択 ActiveCell.Offset(65535).End(xlUp).Select '65536行からCtrl + ↑ End Sub
Sub 一番下のセルを選択() Dim i As Long Dim h As Long i = Rows.Count 'シート最終行の番号 h = ActiveCell.Column 'アクティブセルの列番号 Cells(i, h).End(xlUp).Select '最終行からCtrl + ↑ End Sub
- フィルハンドルをWクリック
-
例えば、A列にデータ、B1に数式入力してフィルハンドルをWクリックする時の動作風に。
Sub オートフィルWクリック風() Selection.Copy ActiveCell.Offset(0, -1).Select '左のセルへ移動 Selection.End(xlDown).Select 'Ctrl + ↓ ActiveCell.Offset(0, 1).Select '右のセルへ移動 Range(Selection, Selection.End(xlUp)).Select 'Ctrl+Shift+↑ ActiveSheet.Paste Application.CutCopyMode = False End Sub
- 選択領域内の空白セルを選択
-
値を入れてセンタリング
Sub 空白セル選択() With Selection.SpecialCells(xlCellTypeBlanks) .Value = "--" .HorizontalAlignment = xlCenter End With End Sub - 重複削除
-
キーとなる列のセルを選択して実行。新規シートに重複行を除きコピー。
Sub 重複削除() Columns(ActiveCell.Column).AdvancedFilter Action:=xlFilterInPlace, Unique:=True Selection.CurrentRegion.Select Selection.Copy Sheets.Add Before:=ActiveSheet Selection.PasteSpecial Paste:=xlPasteColumnWidths ActiveSheet.Paste Application.CutCopyMode = False End Sub
ページ先頭 U
■ ワークシート関数 9
ページ先頭 U