アプリ版:「スタンプのみでお礼する」機能のリリースについて

VBAを仕事にと勉強しています。先日2週間前にご指導頂いたコードで作表し、完璧でしたが、進めて行くと入力データに間違い削除、修正が必要になりました。この際、別添の画像のとおりG36セルを削除するとエラー表示されます。エラーは添付画像の黄色表示の所です。よろしくお願い致します。

「データを入力後、セルの数値を修正のため「」の質問画像

A 回答 (4件)

ご存知とは思いますが、引数Targetには、Rangeオブジェクトが渡されてきます。


当然、ひとつのセルが渡ってくる場合もあれば、範囲(複数セル)が渡ってくることもあります。

結合されたセルの値を削除した場合は、結合された範囲の複数セルが渡ってくるようなので、複数セルに対応したコードを書く必要があるということです。

今回の場合、手っ取り早く直したいのであれば、Target(1).Valueにすることによって、実行時エラーは解消できるおと思われます(直らなかったらゴメンナサイ)。
しかし、G列を複数行選択して削除した場合、最初の行しか処理されませんので、最初に述べたとおり、「複数セルに対応したVBA」に書き換える必要があると思います。
    • good
    • 2
この回答へのお礼

エラーが解消出来ました。今のところ、複数行選択しても正しく処理できました。有り難う御座いました。

お礼日時:2020/08/15 14:06

こんにちは、


#3さんのアドバイスに賛成です。

しかし、Target(1).Valueとすると処理が通ってしまい
おそらく、Target.Offset(, 4).Value = 0 が実行されてしまいます。
条件を設定して排除する方法が良いかと思いますが、代替え案としては
エラートラップになるかと思います。。
トラップは色々やり方がありますが、一例として

On Error Resume Next 'エラーが発生しても次の行に実行が移ります。
If Target.Value < 10000 Or Not IsNumeric(Target.Value) Then ’エラー発生行
If Err <> 0 Then Exit Sub ’エラーがあった場合、処理を終了(中止)します。
    • good
    • 0
この回答へのお礼

いつもご教授頂き有り難う御座います。ご指導頂いたとおり「0」が実行されます。M列は今のところ0表示でも支障がありません。条件排除のコードは、また必要になったら有り難く使用させて頂きます。

お礼日時:2020/08/15 14:01

老眼で見えないので違ってたらごめんなさい。



Private Sub ~
If Target.Value = "" then exit sub ' これ追加
If Inte~

セルに値がないから問題なので最初に値がない時は「やってられかぁ~」と抜けてしまう。
とか?
    • good
    • 0
この回答へのお礼

有り難う御座いました。

お礼日時:2020/08/15 14:07

数字判定と


以上
はわけないとそうなる可能性があります。

あと特に事象が前にあるので先に以上判定をして
後に数字化を判定してるかと思います。
    • good
    • 0
この回答へのお礼

有り難うございました。

お礼日時:2020/08/15 14:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!