![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
コマンドボタンがセル上の任意の文字を検知して、有効/無効にするため下記の様に
Private Sub Worksheet_Change(ByVal Target As Range)
➡If Target.Address = "$BA$1" And Target.Value = "合格" Then
⑤FCDデータ転送.Enabled = True
ElseIf Target.Address = "$BA$1" And Target.Value = "" Then
⑤FCDデータ転送.Enabled = False
End If
End Sub
BA1のセルに”合格”と入れたら、コマンドボタンが有効に”空白”なら無効にと出来たと思っております。
問題無くコマンドボタンは有効/無効に動く事が確認出来たのですが、複数セルを選択しセル内の文字を消したり、マクロによる複数セル内の文字を消すと何故かエラー13(型が一致しません)、が出てしまいます。(単セルの文字削除の時は出ないのですが・・・)
デバック時には、添付写真の黄色部(上記➡)の所がおかしいとなるのですが、よくわからず・・・・。
ここ2か月間ゼロから独学でVBAを覚えてきたのですが、自分で解決できるレベルを超えてしまったので、皆さまを頼らせて頂きたく(泣き)
何卒、ご教授の程よろしくお願いします。
![「ExcelのVBAでエラー13が出てしま」の質問画像](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/2/543116649_6144301e3a72d/M.png)
No.1ベストアンサー
- 回答日時:
こんにちは。
複数セルでエラーが出るという事でしょうか?
1つずつのセルで処理すれば良いのでは?と思います。
全て手入力ですので、間違っているかも知れませんが、下記の様にして
どうでしょうか? もし、エラーが出たら、修正してみて下さい。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim myRng as Range
For Each myRng in Target
With myRng
If .Address = "$BA$1" And .Value = "合格" Then
⑤FCDデータ転送.Enabled = True
ElseIf .Address = "$BA$1" And .Value = "" Then
⑤FCDデータ転送.Enabled = False
End If
End With
Next
End Sub
ご丁寧な回答を頂き感謝いたします!
VBA独学初心者の小職にとっては、一番分かりやすく解決が早急に出来る、mygoonickname様のを参考にさせて頂きました!
内容を拝見いたしまして、さっそく取り入れた所問題なく実行されました!エラー13は無事解消されました!ありがとうございます!!
”VBAが出来たらカッコいいな”の発想から、独学でやってきたのですが、やはりこういったデバックとか、問題を解決できる能力がある人に憧れます!ご丁寧なご回答誠にありがとうございました!!
No.3
- 回答日時:
こんばんは
エラーの原因は、すでに回答されている通りでは無いかと思います。
対策については、示されている内容だけでは分かりませんので
私も独学なのでデタラメな解釈をしている事もありますが、
アドバイスとしては、シートイベントを使用する場合、使うイベントを理解する事が必要です。
Private Sub Worksheet_Change(ByVal Target As Range) は
対象シートのどのセルを変更しても実行されます。
単セルでも複数セルでも全然関係のないセルを変更しても実行されるので、
シート処理が重くなったり、思わぬエラーが発生したりします。
従って実行したい条件(セル範囲など)をプロシージャの初期に設定する必要が出て来ます。
よく使う例として
If Intersect(Target, Range("A1:A100")) Is Nothing Then Exit Sub
A1~A100セル以外のセルが変更された場合、ここでExit Sub
イベントプロシージャが終了します
単セルの変更以外では実行しないようにするには
If Target.Count > 1 Then Exit Sub
Then Exit Subとしていますが、複数範囲や結合セルなどを対処とする場合は
Elseなどで分岐処理を行ってください。
実行コードでセルの値を変更する事により繰り返しイベントが発生しないようにするには
Application.EnableEvents = False イベント発生を抑止
正し、このコードを実行した場合、処理の後に
Application.EnableEvents = True で 設定を戻す必要があります。
*デバッグなどで途中で止めて抜けてしまいイベントが発生しない状況が発生する事を覚えておいてください。
上記は、よく使うコードですが、他にも結合セル判定などが必要な場合もあります。 さらに選択範囲すべてを処理したい場合などは、ループ処理で対応するのがわかり易いと思います。
おお!もうド素人丸出しの返信になってしますのですが、Worksheet_Changeがシート全体に影響するとは思いもしりませんでした!
よくこの辺を勉強しなおして、ご教授頂いた内容で実行できるかTRYしてみようかと思います!
ご丁寧なご回答ありがとうございました!!
No.2
- 回答日時:
こんにちは
とりあえずエラーの原因と対処法のみ。
>(上記➡)の所がおかしいとなるのですが、~~
その際の、個々の内容を調べてみればわかると思いますけれど・・・
複数のセルが同時に変更された場合(コピペなどで)、ChangeイベントのTargetにはそのセル範囲(=複数セル)が渡されます。
単体セルでない場合は、Target.Valueは「エラー13」を返します。
というのが原因でしょう。
(Target.Addressはエラーになりませんが、複数のセル範囲を返すので、目的のセルが含まれていても一致にはなりません)
そのような場合でも、きちんと処理したければ
For Each c In Target
' 個別のセル(c)の処理
Next c
のような形式で、ひとつづつのセルをチェックして処理するようにすれば宜しいのではないかと思います。
分かる方には対処方が直ぐ分かるのですね・・・・ホント頭が上がりません。
小職の説明分もあいまい(理解できていないからですね・・・ホント・・・泣)の中、小職の言いたい事をくみ取って頂き、誠に感謝です!このようなやり方もあるのですね・・・、これもまた勉強から入り、どの様に実行されるのかやってみようと思います!
早急なご回答に誠に感謝いたします!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/05/26 17:19
- Visual Basic(VBA) エクセル VBAで複数セル選択時エラーになる問題 3 2022/10/04 02:40
- Visual Basic(VBA) エクセルのVBAでダブルクリックでチェックを入れたあと 1 2022/10/26 20:30
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) エクセルVBA ダブルクリックしたら色反転を指定したセルのみにしたい 2 2022/04/06 12:52
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Visual Basic(VBA) Excelにて、シート1の行を削除するとシート2のシート1と同じ番号の行も削除したい 3 2022/05/08 04:24
- Visual Basic(VBA) 【再投稿】VBAで動作しなくて困っています 2 2022/10/11 11:05
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) エクセルのイベントプロシージャーでF列の最終行のセルの入力をトリガーにしたいのですが 1 2022/10/14 09:36
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
Changeイベントでの複数セルのクリアの処理について
Visual Basic(VBA)
-
VBA:結合されたセルに対する「Target」について
Access(アクセス)
-
エクセルエラー13型が一致しませんの直し方教えて下さい。
その他(Microsoft Office)
-
-
4
エクセルVBAのDeleteキーによるエラー
Excel(エクセル)
-
5
Changeイベントで複数セルへの貼り付けおよび値削除時に1個目のセルのみエラーになる
Visual Basic(VBA)
-
6
エクセル VBAで複数セル選択時エラーになる問題
Visual Basic(VBA)
-
7
エクセルvba (ByVal Target As Range)について
Excel(エクセル)
-
8
エクセル イベントマクロ Changeイベントを複数作りたい
Access(アクセス)
-
9
worksheet_changeがループする
PowerPoint(パワーポイント)
-
10
VBA deleteをクリックすると型が一致しないとデバッグになります。
Visual Basic(VBA)
-
11
エクセル 「実行時エラー13":型が一致しません。」エラーについて"
Excel(エクセル)
-
12
Excel VBA で End Subのところで「型が一致しません」のエラーとなります。
Visual Basic(VBA)
-
13
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
14
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
15
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
16
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
17
VBA ユーザーフォームのChangeイベントを停止したい
Access(アクセス)
-
18
excel vba で 実行時エラー13となります。
Excel(エクセル)
-
19
複数処理 Worksheet_Change(ByVal Target As Range)
Visual Basic(VBA)
-
20
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelデータをコピペして、ペー...
-
スプレッドシート、Excelでの数...
-
エクセルの関数について教えて...
-
スプレッドシートで使う数式を...
-
Microsoft Officeの中古は信用...
-
エクセルで会社の従業員のデー...
-
Excelで50個のセルに同じ文字を...
-
エクセルの表で1年間の曜日を...
-
エクセルでの特別な文字を上に...
-
エクセルで不等号記号(≠)が上に...
-
エクセルでB列でフィルターをか...
-
エクセルでセルに標準で入力さ...
-
Excelで、項目の種類ごとにカウ...
-
【マクロ】アクティブセルにブ...
-
EXCELの質問です 119から足した...
-
【マクロ】アクティブセルの、...
-
【マクロ】アクティブセルの行...
-
エクセルの空欄をつめて、次の...
-
Excelの数式について教えてくだ...
-
非表示列の再表示に失敗
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA、別ブックへ転記す...
-
エクセルでの作業計算方法について
-
時間によってファイル名が変わ...
-
【関数】適切な文字数の数字を...
-
Excelについて教えてください
-
エクセル初心者です 関数の入れ...
-
【マクロ】ファイル名の変更に...
-
UNIQUE関数が使えないバージョ...
-
エクセルの計算
-
【関数】先頭だけにある、半角...
-
Excelで、決まった行を繰り返し...
-
Excelでセルの値が同じか...
-
LOOKUP関数を使えばいいのでし...
-
Excel
-
はがきについて。
-
エクセルの条件付き書式につい...
-
エクセルのデーターが2か月前の...
-
エクセル②
-
エクセルで「-0.0」と表示さ...
-
Microsoft1Officeの互換ソフト...
おすすめ情報