困ったー

WIN10・アプリ・ゲームで困ったことを調べてみた

[イベント情報!] ✅メーカーズフェア。趣味TECH祭 2019(夏)は8/3-4。 ✅ラグビーワールドカップ。次の販売は8/10スタート! ✅オリンピック2020。8月にセカンドチャンスがスタート。

[スケジュール] ✅d払いで20%還元は7/1-7/31。 ✅ペイペイのセブンイレブン20%還元は7/31まで。 ✅ファミペイのチャージで最大15%還元は7/1-7/31。

[セール情報!] ✅3000円クーポン付き任天堂スイッチが登場。 ✅Office365が5%オフ!

【エクセル】VBA・マクロエラー一覧

エクセルではマクロが利用できます。

マクロはVBAと呼ばれるプログラム言語を使ってより自由度の高いカスタマイズが可能となります。

マクロを使うには?

Construction Site

エクセルのマクロとは?

コンピュータやプログラミングでは、プログラムの命令を記録したものなどにマクロという言い方をします。

 

エクセルならVisual Basicを使って作成したプログラムのことをマクロといいます。

 

いつもいつも同じ手順で繰り返しているような処理や関数で記述すると大変になる場合、マクロを使って処理できるようにすると事務も効率化できるでしょう。

 

マクロを使う準備は?

まず「ファイル」メニューから、「オプション」を選びます。

オプションが出たら、左側の項目から「リボンのユーザ設定」を選びます。

右側にある「開発」のチェックボックスをオンにします。

f:id:apicode:20150916092023p:plain

 

すると、「開発」メニューが表示されます。

リボンから「ビジュアルベーシックエディター」や「マクロ」といった機能をワンクリックで呼び出せるようになります。

f:id:apicode:20150916092025p:plain

 

マクロが動作するか確認するには?

実際にエクセル2016でマクロを使ってみて、マクロが動作するか確認してみましょう。

ここでは「ハローワールド」という文字をダイアログだけのプログラムを実行します。

 

まずは開発タブを選びます。タブがない場合にはオプション設定を確認しておきましょう。

次に「Visual Basic」をリボンで選びます。するとビジュアルベーシックエディターが起動します。

f:id:apicode:20150916092025p:plain

 

「vba project」というものが作られます。これは「マクロ」全般を含みます。「マクロ」ではいろんなファイルを使う場合がありますから、プロジェクトが1つの管理単位となります。ファイルを入れるフォルダーのようなもの考えるとわかりやすいかもしれません。

 

そのプロジェクトの中には「Sheet1」というファイルがあるので右クリックします。そして「コードの表示」を選びます。

または「Sheet1」をダブルクリックするだけでもOKです。

f:id:apicode:20150916092641p:plain

 

ここに文字列を入れます。

Sub test()
    MsgBox "HelloWorld!"
End Sub

f:id:apicode:20150916092642p:plain

 

カーソルがまだ文字入力の画面に残った状態で「F5」キーを押します。

するとプログラムが実行されます。

下記のように表示されます。

表示されたら「OK」を押してダイアログを閉じます。

f:id:apicode:20150916092644p:plain

 

このように

Sub プログラム名()
    命令1

 命令2....
End Sub

とマクロの命令を書いていくのが基本となります。

 

 

 

マクロ・VBAの不具合

マクロが動かない場合は?

マクロがうまく動かない、有効にできないという場合には以下チェックしてみましょう。

 

マクロの設定

オプション>セキュリティセンター>セキュリティーセンターの設定>マクロの設定」でマクロのオプションを選択します。

絶対安全なファイルであることが確実という場合には「すべてのマクロを有効にする」をチェックし、マクロが動作するように設定することができます。

f:id:apicode:20170501224632p:plain

 

なお、毎回マクロの確認がでるとうざい!という場合、特定の場所においたファイルはマクロの確認をださなくすることができます。

「信頼できる場所」で「新しい場所の追加」で特定のフォルダを追加しましょう。

f:id:apicode:20181124151156j:plain

 

保護ビュー

ネットから落としたファイルについては、セキュリティの関係で自動的に保護ビューにセットされる場合があります。

保護ビューでは、マクロ実行に制限がかかります。

 

そこで、「オプション>セキュリティセンター>保護ビュー」で、「インターネットから取得したファイルに対して保護ビューを有効にする」のチェックをはずしたり、「安全でない可能性のある場所のファイルに対して、保護ビューを有効にする」のチェックをはずしてみましょう。

そのうえで再度ファイルをダウンロードして開いてみましょう。

f:id:apicode:20170501224838p:plain

 

エクセルを最新版に保つ

マクロを実行してフリーズやクラッシュが起きる場合、DLLのバージョンが古かったというケースもあります。

バグが改善されている可能性もありますので、エクセルのプログラム自体を最新の状態に保っておきましょう。「ファイル>アカウント>Officeの更新プログラム」から確認できます。

 

ウィンドウズアップデート

マクロが有効かできず、原因がウィンドウズアップデートにあったというケースが報告されています。

今まで使えていたの急に動かない場合には、最近ウィンドウズアップデートがなかったかチェックしてみるのもいいかもしれません。

 

VBAが文字化けする?

どうもエクセル自体が文字エンコードにはあまり強くない印象です。

とはいえVBAで文字化けの場合には以下の設定を確認しておきましょう。

「コントロールパネル>地域>場所の設定」を実行します。

f:id:apicode:20170501213405p:plain

 

「ユニコード対応ではないプログラムの言語」で「システムロケールの変更」を押して日本語に設定をしておきましょう。

f:id:apicode:20170501213409p:plain  

 

マクロが保存されない?

エクセルには「.xlsx」や「.xlsm」といったファイルの保存方式があります。

 

「.xlsm」はマクロ有効なエクセルで、「.xlsx」だとマクロは保存されません。

 

間違えて「.xlsx」形式で保存してしまうと、マクロの情報がなくなってしまうことになります。

 

このブックには 安全ではない可能性?

ネットからダウンロードしたエクセルファイルでマクロが含まれている場合にこのような警告が表示されます。

 

エクセルのマクロは強力なので、セキュリティにかかわる不具合を生じる可能性がないとはいえません。

官公庁のようなところの提供するエクセルファイルなら、まずは大丈夫かとは思います。

が、身元の不明なところからダウンロードしたファイルを開く場合はかなり注意したほうがよいでしょう。

 

 

エラー一覧 

3:Return に対応する GoSub がありません

VBAでは、「GoSub」を使って「Sub1:」のようにラベルを定義した場所へ処理を移動させることができます。

GoSubを使った書き方を今一度確認してみましょう。

 

5:プロシージャの呼び出し、または引数が不正

引数の数や書き方が違う場合のエラー。

関数によっては「引数で0以上を書かないといけない」などの決まりがあります。

文法的に正しいかいまいちど確認してみましょう。

 

6:オーバーフロー

計算した値が型以上の数値を扱う場合などに発生します。

例えば、VBのIntegerは「-2147483648 ~ 2147483647」です。もっと大きい値を扱うにはLongやDouble型などを利用します。

最初からVariant型として計算するのもいいかもしれません。

 

場合によっては、仮想メモリを増やす、他に起動しているアプリを閉じる...などのメモリ自体の確保を試すのもよいでしょう。

 

7:メモリが不足

フォームやモジュールにはの最大サイズが64KBという制限があるため、1つのフォームに集中して書きまくるとよくないかもしれません。

 

また、配列など大量のデータを扱う場合にも注意が必要です。

 

9: インデックスが有効範囲内にありません

VisualBasicのプログラム上のエラー。

配列で範囲外へアクセスする場合などに表示されます。

 

最初に配列数を確認してから参照する....のように記述するとエラーは防げます。

 

11:0で除算

数学では数は0では割れないのでエラーになります。

計算前に、割る数が0かどうかチェックするとこの手のエラーは防げます。

Sub test()
   Dim i As Integer
   i = 1 / 0
End Sub

 

13:型が一致しない

VBでは真か偽化を扱う「Boolean」、文字を扱う「String」、日付を扱う「Date」などいろいろな型があります。

 

エラーの場合は、型変換するよう意識しないといけません。

 

14:文字列領域が不足

システムメモリの不足がないか確認。

 

また想定外に多量の文字データを扱っていないかチェックしてみましょう。

 

16:式が複雑

浮動小数点式のネストが制限を超える場合に起きるエラー。

 

17:要求された操作は実行できません

実行中モジュールをプログラムで変更しようとした場合のエラー。

 

28:スタック領域が不足

スタック領域では関数の実行手順などを記憶します。「再帰呼び出し」が多すぎたりするとスタック領域がオーバーフローしてしまいます。

 

プログラムが実行される手順について今一度見直してみましょう。

 

35:Sub または Function が定義されていません

Sub...EndSub Function...EndFunctionは基本的な書き方です。

 

53:ファイルが見つかりません

参照するためのファイルをあとで削除したり場所を移動してしまうことがあります。

OnErrorでファイルが見つからない場合の処理も記述しておくのをおすすめします。

 

55:ファイルは既に開かれています

ファイルを開いて、終了後は閉じるよう意識しましょう。

 

62:ファイルにこれ以上データがありません

ファイルの読み込みでのエラー。

EOF関数やLOF関数でファイルの終わりを確認するようにするとエラーは防げると思います。 

 

91:オブジェクト変数または With ブロック変数が設定されていません

オブジェクト変数にSetで正しくデータを入れましょう。

 

94:Nullの使い方が不正

Nullを型変換なく代入しようとしてエラーになる場合があります。

Variant型へデータを格納する、など型で問題が起きないよう見直してみましょう。

 

424:オブジェクトが必要です

オブジェクトにはSetで正しくデータを入れてから利用しましょう。

 

 

このブログは、ネットや書籍上の情報、個人の体験や感想を中心にまとめたものです。 正確性を期していはいますが、間違い・誤訳等あるかもしれません。 ご利用にあたっては、当サイトの情報によって生じたいかなる損失について一切の責任を負わないものとしますん。あらかじめご了承ください。