VBAエラー関係の解決方法

VBA使用時に発生する問題について解決方法を解説します

マクロが起動しない

office365などに更新した場合、IPアドレスを追加しないとマクロが起動しないことがあります
IPアドレスの確認方法~IPアドレスを追加する方法を解説します

手順1: IPアドレスを確認する

Winボタン 押下 ~ cmd 入力 ~ Enter 押下

Windボタン

cmd 入力 ~ Enter 押下で コマンドプロンプトが起動します
コマンドプロンプトに、 ipconfig 入力 ~ Enter 押下で、下記のような画面が表示されます

IPv4 アドレスの右側の 12.34.56.78 のような数字がIPアドレスです
後で追加しますのでメモしておいてください

手順2: IPアドレスを追加画面へ移動

Winボタン押下 ~ インターネットオプション 入力 ~ Enter 押下
インターネットのプロパティの画面が表示されます

ここで、
セキュリティ
ローカル イントラネット
サイト
の順でクリックしていきます

セキュリティ
ローカル イントラネット
サイト
のボタンは、矢印を参照してください

サイト ボタン 押下で、ローカル イントラネットの画面が表示されます

ローカル イントラネットで、詳細設定(A) 押下

手順3: IPアドレスを追加

詳細設定(A) 押下で、下記の画面が表示されます

このWebサイトをゾーンに追加する(D):
の欄に、先ほどのIPアドレスを追加します
\\12.34.56.78
のように記述します
(12.34.56.78 が IPアドレスで左側に、\\ を追加します)
追加(A) ~ 閉じる(C)

これでマクロが起動できるようになります

“…ActiveXコントロール…” が表示される

マクロを起動するときに、下記のようなメッセージが表示されることがあります

これは、ファイルが問題ないかどうか確認するよう警告メッセージが表示されています
ファイルに問題なくても表示されてしまいます

この警告メッセージを非表示にする方法について解説していきます

手順1: “ファイル名を指定して実行”

Winボタン押下 ~ “ファイル名を指定して実行” ~ Enter押下

Windボタン

手順2: レジストリ―エディターを起動

“ファイル名を指定して実行” ~ Enter押下 で、
下記が表示されます

名前に”regedit”入力して、OKボタンを押下します

手順3: Securityキーを追加

(既に、Securityキーが存在する場合は、この手順をスキップ)
HKEY_CURRENT_USER\Software\Microsoft\VBA
にアクセス

最上位のフォルダから
“HKEY_CURRENT_USER” の中の
“Software” の中の
“Microsoft” の中の
“VBA”
です

VBAフォルダ右クリック ~ 新規(N) > ~ キー(K)

新しいキー#1 → Security に書き換える

ここでのキーは、フォルダのようなものです

手順4: REG_DWORDを追加

(既に、REG_DWORDが存在する場合は、この手順をスキップ)
Securityキー内で右クリック ~ 新規(N) > ~ DWORD (32ビット)値(D)
新しい値#1 → LoadControlsInForms に書き換える

手順5: DWORD(32ビット)値の編集

LoadControlsInForms ダブルクリック
値のデータを 0 → 1 へ書き換える
OKボタン押下

これで、マクロを起動したときに、”このアプリケーションは、安全でない可能性があるActiveXコントロール…” という警告文が表示されなくなります

ワークシートを取得できない

下記のように変数に s_Main を代入しようとするとエラーになります
(s_Main は、MyWorkbook(ThisWorkbook)内に存在するワークシートです)

Dim MyWorkbook As Workbook
Dim MySheet As Worksheet

Set MyWorkbook = ThisWorkbook
Set MySheet = MyWorkbook.s_Main

error438

MyWorkbook. の後ろは、MyWorkbook がもっているメンバーのみ受け付けます

そのため、このような場合は下記のように記述します
(Sheet1 は、s_Main の名前です)

Dim MyWorkbook As Workbook
Dim MySheet As Worksheet

Set MyWorkbook = ThisWorkbook
Set MySheet = MyWorkbook.Worksheets(“Sheet1”)

クラスモジュールの呼び出し箇所が表示される

デバッグ時に、クラスモジュールを呼び出している箇所が表示され、どこでエラーが発生してるかが分からない場合があります

設定を変更すると、どこでエラーが発生しているかが表示できるようになります

VBエディタ内で

ツール” クリック

オプション(O)…” クリック

全般” クリック

エラートラップ” で、”エラー発生時に中断(B)” を選択します

これで、デバッグ時に、クラスモジュールの呼び出し箇所ではなく、エラー発生個所が表示されるようになります。

コメント

この記事が気に入ったら
いいね!しよう
最新情報をお届けします。
タイトルとURLをコピーしました