
コマンドボタンがセル上の任意の文字を検知して、有効/無効にするため下記の様に
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を覚えてきたのですが、自分で解決できるレベルを超えてしまったので、皆さまを頼らせて頂きたく(泣き)
何卒、ご教授の程よろしくお願いします。

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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
VBA:結合されたセルに対する「Target」について
Access(アクセス)
-
[Excel VBA] このコードでは行の挿入や行の消去をすると13のエラーが出てしまう。
Visual Basic(VBA)
-
Vba 型が一致しません(エラー13)のセルを特定する方法を教えてください
Visual Basic(VBA)
-
-
4
エクセルエラー13型が一致しませんの直し方教えて下さい。
その他(Microsoft Office)
-
5
エクセルVBA セルの入力後「Delete」キーを押したか判断するプログラム
Excel(エクセル)
-
6
エクセル VBAで複数セル選択時エラーになる問題
Visual Basic(VBA)
-
7
なぜこんな初歩的なVBAのIf文でエラーか発生して使えないのか、全く理解出来ません。誰か助けてくださ
Visual Basic(VBA)
-
8
VBA deleteをクリックすると型が一致しないとデバッグになります。
Visual Basic(VBA)
-
9
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
10
worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応
Visual Basic(VBA)
-
11
Changeイベントでの複数セルのクリアの処理について
Visual Basic(VBA)
-
12
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
13
バックスペース機能の作り方
Visual Basic(VBA)
-
14
Enterキーでマクロを起動さす。
その他(ソフトウェア)
-
15
Excel VBA あるセルでENTERを押すと特定のセルへ移動したい
Excel(エクセル)
-
16
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
17
エクセル イベントマクロ Changeイベントを複数作りたい
Access(アクセス)
-
18
excel vba で 実行時エラー13となります。
Excel(エクセル)
-
19
型が一致しない というエラー
Excel(エクセル)
-
20
COUNTIFS関数 参照先の列を可変にしたい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VLOOKUP FALSEのこと
-
if関数の複数条件について
-
【関数】=EXACT(a1,b1) a1とb1...
-
【マクロ】数式を入力したい。...
-
同じ名前(重複)かつ 日本 ア...
-
excel
-
エクセルシートの見出しの文字...
-
エクセルの文字数列関数と競馬...
-
エクセルでフィルターした値を...
-
表計算ソフトでの様式の呼称
-
【画像あり】【関数】指定した...
-
Dir関数のDo Whileステートメン...
-
【マクロ】実行時エラー '424':...
-
Excelに貼ったXのURLのリンク...
-
【関数】3つのセルの中で最新...
-
【マクロ】【画像あり】❶ブック...
-
【マクロ】【画像あり】4つの...
-
【マクロ】【画像あり】4つの...
-
セルにぴったし写真を挿入
-
【マクロ】エラー【#DIV/0!】が...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでフィルターした値を...
-
if関数の複数条件について
-
エクセルシートの見出しの文字...
-
excel
-
エクセルの文字数列関数と競馬...
-
VLOOKUP FALSEのこと
-
同じ名前(重複)かつ 日本 ア...
-
表計算ソフトでの様式の呼称
-
エクセルに写真が貼れない(フ...
-
【マクロ】数式を入力したい。...
-
【マクロ】実行時エラー '424':...
-
【画像あり】オートフィルター...
-
Office2021のエクセルで米国株...
-
【画像あり】【関数】指定した...
-
エクセルのVBAで集計をしたい
-
【マクロ】【画像あり】4つの...
-
【関数】3つのセルの中で最新...
-
【マクロ】excelファイルを開く...
-
LibreOffice Clalc(またはエク...
-
エクセルのライセンスが分かり...
おすすめ情報