アフィリエイト広告を利用しています
検索
カテゴリーアーカイブ
タグクラウド
最新記事

2019年09月24日

【Excel VBA】入力規則でアプリケーション定義エラー

事件勃発

今まで問題なく回っていたのに、ある日突然、アプリケーション定義エラー

問題のコードはコチラ

Sub test()
 With Range("A1").Validation
   .Delete
   .Add Type:=xlValidateList, _
   Operator:=xlEqual, _
   Formula1:=strFormula
  End With
End Sub


.Addで出た
なんでーー???

同じモジュール内で、IMEのOn/OffとかxlValidateWholeNumber(指定した間の整数のみ)とかはエラー出ないのに。
それどころか、さっきはふつーに通ってたのに!



調査

とゆーかググっただけw

いろんなサイトやブログでの原因をまとめてみた

・シートの保護がかかっている
・すでに設定されている
・シートがActiveになっていない
・Formulaの式中のシート名が存在しない


うん。
どれも該当しない。
上記は全部イミディエイトで確認した。
わからん。

目下急ぎの仕事があったので、とりあえず放置。
んで翌日の朝回してみたら、エラー出なかった。

気のせいだったことにしておこうw



デバッグ

しばらくして、また回したら、嬉しくない再会。
2度と会いたくなかったんだけど。

仕方なくデバッグしてみる。

うんうん唸りながら3時間・・・。

ふと、strFormulaって何が返るんだ?って気になった。
他の人が作ったやつだし、エラー出ないときもあるから、strFormulaは絶対に合ってると思い込んでてちゃんと見てなかった。
COUNTIFだけども少々ややこしいんで、strFormulaをコピーしてセルに入れてみた。

アッ・・・!
035_1.png

そりゃそーだorz



答え

画像でわかるかな?

Excelの仕様です。

列の表示をR1C1形式にしてるときに、A1形式で式を入れるとエラー吐きます。
逆も然り。
このせいですね。

strFormulaはA1形式で書いてます。
んで、へなちょこは基本的にR1C1です。
VBAとゆーよりかはExcelそのものがエラー出してるんですねぇ。

それならもうちょっとわかりやすいエラー出してよ。
MSさんは、アプリケーション定義エラーをVariantと定義しているのだろうか。
なんかよくわからんエラーはとりあえずアプリケーション定義エラーにしとけ!みたいな・・・。



対策


入力規則を設定する直前に、コレを入れてみた
If Application.ReferenceStyle = xlR1C1 Then
 Application.ReferenceStyle = xlA1
End If

R1C1だったら強制的にA1に戻す。
これでおK♪



結論

入力規則をAddするときに出るアプリケーション定義エラーの原因
・シートの保護がかかっている
・すでに設定されている
・シートがActiveになっていない
・Formulaの式中のシート名が存在しない
Formulaと、現在のExcelの参照形式が異なっている



タグ:VBA Excel
この記事へのコメント
コメントを書く

お名前:

メールアドレス:


ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバックURL
https://fanblogs.jp/tb/9229072
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック
プロフィール
へなちょこさんの画像
へなちょこ
都内に出没するOLっぽい何か。大好物はExcelと効率化。独学でVBAやAccessをいじり始め、早10年。 5歩歩くと忘れてしまうので、ここにメモしていきます。
プロフィール
記事ランキング
  1. 1. 【Excel VBA】ユーザーフォームのCaptionが文字化け
  2. 2. 【Office365 SharePoint】Notesへのリンクを貼りたい
  3. 3. 【Excel VBA】StatusBarが表示されない
  4. 4. 【Excel VBA】入力規則でアプリケーション定義エラー
  5. 5. 【Excel】最大化で起動してくれない件
  6. 6. 【Excel VBA】Workbook_openで「パス名が無効です」
  7. 7. 【Excel VBA】.xlsm→.xlsx保存でエラー
  8. 8. 【Win10】タスクバーのプレビューを非表示にしたい
  9. 9. 【Win10】エクスプローラーがフリーズする
  10. 10. 【Win10】再発!!PC再起動すると、クイック起動バーが消える
ファン