#ExcelVBA
#ExcelVBAマクロを使いこなす 101

頻出パターン:
ブラウザ(IE)を自動操作したい
https://language-and-engineeri...

' IE起動
Set ie = CreateObject("InternetExplorer.Application")
ie.Navigate "http:// www.google.co.jp/"
ie.Visible = True
November 6, 2026 at 8:08 PM
#ExcelVBAマクロを使いこなす 102

ブラウザを自動操作

Set ie = CreateObject("InternetExplorer.Application")
ie.Navigate "http:// www.google.co.jp/"
ie.Visible = True

' ビジー状態の間待つ
Do While ie.Busy = True Or ie.readystate <> 4
DoEvents
Loop
Sleep 100
November 7, 2026 at 3:09 AM
#ExcelVBAマクロを使いこなす 99

入力候補のサジェスト機能を作る:

セルの「入力規則」を
VBAで動的に書き換える。

ActiveCell.Validation.Delete
ActiveCell.Validation.Add Type:=xlValidateList, Formula1:="山田,山川"
ActiveCell.Validation.ShowError = False

https://language-and-engineeri...
November 6, 2026 at 4:08 AM
#ExcelVBAマクロを使いこなす 103

頻出パターン
IEを自動操作する際,
「COMイベント」を使いたい。

https://language-and-engineeri...

' イベント検知機能付き
Set objIE = CreateObject("InternetExplorer.Application")

' イベントフック
Private Sub objIE_OnQuit()
MsgBox "IEを閉じた"
End Sub
November 7, 2026 at 10:08 AM
#ExcelVBAマクロを使いこなす 104

IEを自動操作する際,
「COMアプリケーションイベント」を使う

ツール→参照設定 から,
「Microsoft Browser Helpers」に
チェックを入れて参照設定しておくこと。

' COMイベントと関連付けて IE を定義
Public WithEvents objIE As InternetExplorer
November 7, 2026 at 10:09 PM
VBAのRound関数は、一般的な四捨五入ではありません。

Debug.Print Round(2.5, 0), Round(3.5, 0)

結果は2と4です。.5は偶数側に丸められます。金額計算では注意しましょう。

#VBA #ExcelVBA #Round #金額計算
November 7, 2026 at 3:00 AM
#ExcelVBAマクロを使いこなす 98

入力候補のサジェスト機能を作りたい:

セルに文字列を入力したら
その入力文字列を確定するために
Enter キーではなく,Ctrl + Enter を押す。

・そうすれば,文字列を確定した時に
カーソルが移動しない。

・押下直後にWorkbook_SheetChangeイベントが走る
November 5, 2026 at 6:08 PM
#ExcelVBAマクロを使いこなす 100

入力候補のサジェスト機能を作る:

・アクティブなセルの
「入力規則」(Validation)を,
リアルタイムで変化させてゆく。

・セルの「入力規則」を,マウスを使わずに
キー入力だけで表示させるには
Alt+下キーを押せばよい。

・キャンセルは Esc キー
November 6, 2026 at 9:39 AM
VBAで全角の英数字を半角にそろえたいとき。

Debug.Print StrConv("ABC123", vbNarrow)

結果はABC123です。氏名や商品コードの表記ゆれをなくし、検索や照合のミスを減らせます。

#VBA #ExcelVBA #StrConv #データ整形
November 4, 2026 at 3:00 AM
#ExcelVBAマクロを使いこなす 96

入力候補のサジェスト機能:

Excelの「入力規則」機能で
セルに特定のデータしか入力できないよう制限できる。

[データ]タブ
→データの入力規則
→入力値の種類
→リスト

「石川,山田」と設定しておけば
「石川」と「山田」がドロップダウンに現れる。
November 4, 2026 at 11:38 PM
#ExcelVBAマクロを使いこなす 93

頻出パターン:
複数ブック間でVBAコードを共有したい

→マクロのコードを
外部テキストファイル内に保管すればよい。
https://language-and-engineeri...

' テキストファイル内のVBAコードを標準モジュールに登録
ThisWorkbook.VBProject.VBComponents.Import file_path
November 3, 2026 at 8:38 PM
#ExcelVBAマクロを使いこなす 97

入力候補のサジェスト機能を作りたい:

Excelの「入力規則」は,実用上は
ごく少数の入力候補しか使えない。

入力候補の数が増えてくると
ドロップダウンが巨大化して使いにくい。

検索のヒントを与えて自動補完する
「サジェスチョン機能」ではないのだ。
November 5, 2026 at 7:39 AM
#ExcelVBAマクロを使いこなす 94

マクロのコードを
外部テキストファイル内に保管することのメリット:
https://language-and-engineeri...

・複数のブックで,常に共通のマクロを利用できる。

・マクロに変更があっても,たった1箇所の修正ですむ。

・Git等で差分管理しやすい。
November 4, 2026 at 3:09 AM
#ExcelVBAマクロを使いこなす 92

頻出パターン:

別ブック内のマクロを実行したい
(複数ブック間でVBAコードを共有)

https://language-and-engineeri...

' 別ブックを開く
Workbooks.Open Filename:="D:\hoge\a.xlsx", ReadOnly:=True
Application.Run("'a.xlsx'!HogeModule.hello")
November 3, 2026 at 8:10 AM
#ExcelVBAマクロを使いこなす 95

頻出パターン:
入力ボックスやセルに,
「入力サジェスト機能」(検索候補の自動補完)
を付けたい。

https://language-and-engineeri...

「山」と入力したら
山田,山川などの候補をドロップダウンで表示。

最初の1文字だけ入力すればよく
楽だし,ミスタイプもない。
.
November 4, 2026 at 11:38 AM
#ExcelVBAマクロを使いこなす 90

頻出パターン:
シートやセルの「編集・可/不可」を切り替え

https://computer-technology.ha...

' シート保護解除
ActiveSheet.Unprotect

' セルのロック解除
If CheckBox1.Value = True Then
Range("E5").Locked = False
End If

' シート保護
ActiveSheet.Protect
November 2, 2026 at 3:38 PM
#ExcelVBAマクロを使いこなす 91

頻出パターン:

配布したExcelブックで,中身のVBAコードを
見れないようにしたい。

https://language-and-engineeri...

VBE上で
ツール>VBAプロジェクトのプロパティ>保護
「プロジェクトを表示用にロックする」
「プロジェクトのプロパティ表示のためのパスワード」
November 2, 2026 at 11:09 PM
#ExcelVBAマクロを使いこなす 87

シート保護時
各種オプションを設定可能
https://excel-ubara.com/excelv...

' セルの書式変更を許可
' 行挿入を許可
' 行削除を許可
sheet1.Protect _
AllowFormattingCells:=True, _
AllowInsertingRows:=True, _
AllowDeletingRows:=True
November 1, 2026 at 12:09 PM
#ExcelVBAマクロを使いこなす 85

VBAから画面キャプチャを自動撮影

この時,
Excelそのものが画面に表示されていてはダメ。
(スクリーンショットに余計な情報が混ざってしまう)

VBA上で,Excelを非表示に切り替えてから
PrintScreen処理を走らせよう。

撮影完了後に再表示すればよい。
October 31, 2026 at 8:39 PM
#ExcelVBAマクロを使いこなす 88

「実行時エラー
変更しようとしているセルやグラフは保護されているシート上にあります。変更するには,シートの保護を解除してください。」
http://officetanaka.net/excel/...

ActiveSheet.Unprotectで
シート保護を解除すればよい。
November 1, 2026 at 7:08 PM
#ExcelVBAマクロを使いこなす 89

シートやセルの「編集・可/不可」

・VBAから「セルのロック」を解除したい場合
RangeのLockedプロパティを操作する。

・シート保護が有効だと
「RangeクラスのLockedプロパティを設定できません。」 というエラーになるので
いったんシート保護の解除が必要。
November 2, 2026 at 2:08 AM
#ExcelVBAマクロを使いこなす 83

' VBAで画面キャプチャ実行(PrintScreen)
keybd_event vbKeySnapshot, 0&, fKEYDOWN, 0&
keybd_event vbKeySnapshot, 0&, fKEYUP, 0&

' キャプチャ結果のスクショ画像をシートに貼り付け
Sheets("sheet1").Activate
Range("A1").Select
ActiveSheet.Paste
October 31, 2026 at 6:39 AM
#ExcelVBAマクロを使いこなす 78

頻出パターン:

フォルダ上の画像を,VBAで
シート上に読み込みたい

https://language-and-engineeri...

ActiveSheet.Shapes.AddPicture( _
Filename:=file_path, _
LinkToFile:=False, _
SaveWithDocument:=True, _
Left:=~, Top:=~, Width:=~, Height:=~)
October 29, 2026 at 12:38 PM
#ExcelVBAマクロを使いこなす 84

VBAから,画面のスクショを自動撮影
&ブック内に保存

直前にシート内の全画像を削除しよう。

Sheets("sheet1").Activate

' このシート内の全画像について
For Each pic In ActiveSheet.Pictures
' 削除
pic.Delete
Next

https://language-and-engineeri...
October 31, 2026 at 2:09 PM