結論:備忘録ですが、便利に活用できると思います!
筆者がよく使い、よく忘れるExcel VBA コードをまとめています!
(よく使うなら忘れるなよっ!)
→値を入れる(Constなので、固定値。Integer なので、数値のみ。)
→値を入れる(Dimなので、可変。Variant なので、文字でも数値でも可)
→Public(Publicステートメント)を使っているので、
全体(標準モジュール内)に使用することができます。
(Longは、-2,147,483,648~2,147,483,647の整数)
→配列は、本来1度宣言してしまうと素数(ここでは k)は変更できないが、
ReDim Preserve を使うことで、素数(ここでは k)を変更することができる。
もくじ に戻る
→「Activate」メソッド
→「Select」メソッド
アクティブとセレクトの使い分けは、ここでは触れません(笑)
とりあえず「Select」を使っとけば大丈夫です(テキトーすぎ
→R, C は変数。
Cは、列(縦)。Rは、行(横)。
変数を使う場合は、Cells
変数を使わないセル指定は、Range で。ここでは省略
詳しくは→RangeとCellsの使い分けについて
↓指定方法のパターン参照
→例えば、Range("A8").Select の後に記載すると。
A8セルに、□が入ることになります。
→Sheet1のK21セルに「・ ・」を入れます。
→抽出したい列に対するフリガナを出力したい列に出力
→B6セルの値を変数F に入れる。
→確認というボックスが出て、数値を入力するように求められる。
入力後、Cに値が入る(Integer型だと数値しか受け付けない )
→現在選択しているセルの行番号を取得します
→現在選択しているセルの列番号を取得します
→選択されているセルから1つ下に移動する。
A1セルならA2セルに( ↓ と同じ)
→選択されているセルから1つ右に移動する。
A1セルならB1セルに( →とかTabキー と同じ)
→選択されているセルから下に "値があるセル"の最後(もしくは最初)に移動する。
Ctrl + ↓ と同じ
→選択されているセルから上に "値があるセル"の最後(もしくは最初)に移動する。
Ctrl + ↑ と同じ
→選択されているセルから右に "値があるセル"の最後(もしくは最初)に移動する。
Ctrl + → と同じ
→選択されているセルから左に "値があるセル"の最後(もしくは最初)に移動する。
Ctrl + ← と同じ
→選択されているセルに「F2」キーを送る
→選択されているセルに「Enter」キーを送る
→選択されているセルの値をコピーする。
Ctrl + C と同じ。
→選択されているセルの値を切り取りコピーする。
Ctrl + X と同じ。
→形式を選択して貼り付け の 値のみ を貼り付ける。
→形式を選択して貼り付け の 値のみ と行列を入れ替える で貼り付ける。
Transpose が行列を入れ替える
SkipBlanks が空白セルを無視する
→Sheet1のE2セルに、Sheet1のB2の値を"表示形式"が
「平成30(2019)年1月1日」で入る(例えば)。
もくじ に戻る
→現在選択しているシートのシート名を取得します
→A1セルの値を1番目のシート名にする
→1番目のシート名が、"作業日:20190111" になる(例えば)
→1番目のシート名を 変数sheetNameA に入れる
もくじ に戻る
→「画面の更新」を解除するまで画面を更新しない
本来マクロが動いている間、画面は高速移動して処理をしているのですが、
Falseを指定することで、画面が動かずバックでマクロが動いています
この方が、メモリを使わないので重たい処理もサクサクいける(限度はありますが)
→マクロの終了前に入れると良い
→後で"自動"にしたタイミングで更新
画面と同じく、マクロが数式をいじるたびに、計算を行っていては、
メモリが大量に使われるので、数式がいじり終わった後に計算をすることで、
動作が早くなります
→セル中の式の更新を自動で行う(更新されていないものを更新する)
→ステータスを表示
RとLRは、変数です
大量の処理をしている時に、画面の更新をOFFにしていると、
処理しているのか、止まっているのか(笑)わかりません
そんな時に、今どれくらい処理をしているのかの目安になります
ステータスが、Excel画面の一番下(濃い緑のバー)で白字で表示されます
→RNum (変数)件ありました。 と表示されます
→ステータスバーを非表示
→数値の分だけ、画面が下にスクロールする
数値1で、1セル分
→指定した数値のところに画面が移動する
もくじ に戻る
チェックボックス16 のチェックを外す。
→ここでは、チェックボックス i( i は変数)
がチェックされている(True)ならという意味
→ここでは、チェックボックスのCaptionに
指定されている文字を配列ArrySheetに入れる。
オブジェクト名ではない。
もくじ に戻る
Shell "C:\Windows\Explorer.exe " & CurrentD, vbNormalFocus
→ThisWorkbook.Pathで カレントディレクトリ(実行中のファイルのディレクトリ)を取得
Shell でエクスプローラーを利用してカレントディレクトリを開く
もくじ に戻る
他できたら、追記していきます!
もくじに戻る
→例えば、A1セルにいる場合
A1セル から I1セル(A1セルから右に8つ移動)まで選択される。
もくじ に戻る
【Excel】【marco】 マクロ 2019年01月11日
↓このゲームをプレイしたことはありませんか?



筆者がよく使い、よく忘れるExcel VBA コードをまとめています!
(よく使うなら忘れるなよっ!)
変数関係
変数宣言
Const C As Integer = 2
→値を入れる(Constなので、固定値。Integer なので、数値のみ。)
Dim R As Variant
→値を入れる(Dimなので、可変。Variant なので、文字でも数値でも可)
Public Const Sheetkazu As Long = 4
→Public(Publicステートメント)を使っているので、
全体(標準モジュール内)に使用することができます。
(Longは、-2,147,483,648~2,147,483,647の整数)
ReDim Preserve ArrySheet ( k )
→配列は、本来1度宣言してしまうと素数(ここでは k)は変更できないが、
ReDim Preserve を使うことで、素数(ここでは k)を変更することができる。
もくじ に戻る
セル関係
セルの選択
Range("A1").Activate
→「Activate」メソッド
Range("A1").Select
→「Select」メソッド
アクティブとセレクトの使い分けは、ここでは触れません(笑)
とりあえず「Select」を使っとけば大丈夫です(テキトーすぎ
Cells(R, C).Select
→R, C は変数。
Cは、列(縦)。Rは、行(横)。
変数を使う場合は、Cells
変数を使わないセル指定は、Range で。ここでは省略
詳しくは→RangeとCellsの使い分けについて
↓指定方法のパターン参照
1. Range("A1")→A1セル
2. Range("A1:B3")→A1~B3セル範囲
3. Range("A1,B3")→A1とB3セル
4. Range("A1", "B3")→A1~B3セル範囲
5. Range(Cells(1, 1))→A1セル
6. Range(Cells(1, 1), Cells(3,2))→A1~B3セル範囲
7. Range("A1", Cells(3,2))→A1~B3セル範囲
8. Range("A1:A3", "B1")→A1~B3セル範囲
9. Range("名前定義")→名前定義のセル範囲
10. Range(Rows(1), Rows(3)) →1~3行の範囲
11. Range(Columns(1), Columns(3)) →1~3列の範囲
12. Range("1:3") →1~3行の範囲
13. Range("A:C") →1~3列の範囲
14. Range(Rows(1), Columns(1)) →全セル
参考サイト:RangeとCellsの使い分けについて
セルの値
ActiveCell.FormulaR1C1 = "□"
→例えば、Range("A8").Select の後に記載すると。
A8セルに、□が入ることになります。
Worksheets("Sheet1").Range("k21").Value = "・ ・"
→Sheet1のK21セルに「・ ・」を入れます。
Cells(R, D).Value = Application.GetPhonetic(Cells(R, C).Value)
→抽出したい列に対するフリガナを出力したい列に出力
F = Range("B6").Value
→B6セルの値を変数F に入れる。
C = InputBox("数は?", "確認", "")
→確認というボックスが出て、数値を入力するように求められる。
入力後、Cに値が入る(Integer型だと数値しか受け付けない )
RNum = ActiveCell.Row
→現在選択しているセルの行番号を取得します
CNum = ActiveCell.Column
→現在選択しているセルの列番号を取得します
セルの操作
Selection.Offset(1, 0).Select
→選択されているセルから1つ下に移動する。
A1セルならA2セルに( ↓ と同じ)
Selection.Offset(0, 1).Select
→選択されているセルから1つ右に移動する。
A1セルならB1セルに( →とかTabキー と同じ)
Selection.End(xlDown).Select
→選択されているセルから下に "値があるセル"の最後(もしくは最初)に移動する。
Ctrl + ↓ と同じ
Selection.End(xlUp).Select
→選択されているセルから上に "値があるセル"の最後(もしくは最初)に移動する。
Ctrl + ↑ と同じ
Selection.End(xlToRight).Select
→選択されているセルから右に "値があるセル"の最後(もしくは最初)に移動する。
Ctrl + → と同じ
Selection.End(xlToLeft).Select
→選択されているセルから左に "値があるセル"の最後(もしくは最初)に移動する。
Ctrl + ← と同じ
SendKeys "{F2}", True
→選択されているセルに「F2」キーを送る
SendKeys "{ENTER}", True
→選択されているセルに「Enter」キーを送る
Selection.Copy
→選択されているセルの値をコピーする。
Ctrl + C と同じ。
Selection.Cut
→選択されているセルの値を切り取りコピーする。
Ctrl + X と同じ。
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
→形式を選択して貼り付け の 値のみ を貼り付ける。
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
→形式を選択して貼り付け の 値のみ と行列を入れ替える で貼り付ける。
Transpose が行列を入れ替える
SkipBlanks が空白セルを無視する
セルの表示形式
Worksheets("Sheet1").Range("e2").Value = "=TEXT(Sheet1!B2,""平成E(yyyy)年M月D日"")"
With Selection
.WrapText = False
.Orientation = 0
.AddIndent = False
.ShrinkToFit = True
.ReadingOrder = xlContext
End With
→Sheet1のE2セルに、Sheet1のB2の値を"表示形式"が
「平成30(2019)年1月1日」で入る(例えば)。
もくじ に戻る
シート関係
シート名関係
sheetName = ActiveSheet.Name
→現在選択しているシートのシート名を取得します
Worksheets(1).Name = Cells(1, 1)
→A1セルの値を1番目のシート名にする
Worksheets(1).Name = "作業日:" & Format(Date, "yyyymmdd")
→1番目のシート名が、"作業日:20190111" になる(例えば)
sheetNameA = Worksheets(1).Name
→1番目のシート名を 変数sheetNameA に入れる
もくじ に戻る
画面関係
画面の操作
Application.ScreenUpdating = False
→「画面の更新」を解除するまで画面を更新しない
本来マクロが動いている間、画面は高速移動して処理をしているのですが、
Falseを指定することで、画面が動かずバックでマクロが動いています
この方が、メモリを使わないので重たい処理もサクサクいける(限度はありますが)
Application.ScreenUpdating = Ture '画面を更新する。
→マクロの終了前に入れると良い
Application.Calculation = xlCalculationManual
'セル中の式の更新を手動で行う
→後で"自動"にしたタイミングで更新
画面と同じく、マクロが数式をいじるたびに、計算を行っていては、
メモリが大量に使われるので、数式がいじり終わった後に計算をすることで、
動作が早くなります
Application.Calculation = xlCalculationAutomatic
→セル中の式の更新を自動で行う(更新されていないものを更新する)
Application.StatusBar = R & "/" & Format(LR, "#,###")
→ステータスを表示
RとLRは、変数です
大量の処理をしている時に、画面の更新をOFFにしていると、
処理しているのか、止まっているのか(笑)わかりません
そんな時に、今どれくらい処理をしているのかの目安になります
ステータスが、Excel画面の一番下(濃い緑のバー)で白字で表示されます
Application.StatusBar = RNum & "件ありました。"
→RNum (変数)件ありました。 と表示されます
Application.StatusBar = False
→ステータスバーを非表示
ActiveWindow.SmallScroll Down:=100
→数値の分だけ、画面が下にスクロールする
数値1で、1セル分
With ActiveWindow
.ScrollRow = 5
.ScrollColumn = 1
End With
→指定した数値のところに画面が移動する
もくじ に戻る
フォーム関係
フォーム
CheckBox16.Value = False
チェックボックス16 のチェックを外す。
If Me.Controls("CheckBox" & i).Value = True Then
→ここでは、チェックボックス i( i は変数)
がチェックされている(True)ならという意味
ArrySheet(k) = Me.Controls("CheckBox" & i).Caption
→ここでは、チェックボックスのCaptionに
指定されている文字を配列ArrySheetに入れる。
オブジェクト名ではない。
もくじ に戻る
その他
カレントディレクトリを開く
CurrentD = ThisWorkbook.Path
Shell "C:\Windows\Explorer.exe " & CurrentD, vbNormalFocus
→ThisWorkbook.Pathで カレントディレクトリ(実行中のファイルのディレクトリ)を取得
Shell でエクスプローラーを利用してカレントディレクトリを開く
もくじ に戻る
他できたら、追記していきます!
もくじに戻る
少し応用
現在いるセルから複数選択
RNum = ActiveCell.Row '現在選択しているセルの行番号を取得
CNum = ActiveCell.Column '現在選択しているセルの列番号を取得
Range(Cells(RNum, CNum), Cells(RNum, CNum + 8)).Select
→例えば、A1セルにいる場合
A1セル から I1セル(A1セルから右に8つ移動)まで選択される。
もくじ に戻る
【Excel】【marco】 マクロ 2019年01月11日
↓このゲームをプレイしたことはありませんか?


