先ほどはご回答くださりありがとうございました。

先ほどはご回答くださりありがとうございました。 今しがた気づいたのですが、以下の構文を組むと、一回、一回、マクロを実行しないと値を返してくれません。なぜなのか、わからずにます、、数字がセルにあったので、そのままいけたと思ったのですが、数字が変化しても値を返しくれません。。 Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("T2")) Is Nothing Then Exit Sub Else v1 = Sheets("計算表").Range("T2").Value Sheets("計算表").Range("T10").Value = WorksheetFunction.VLookup(v1, Sheets("10点").Range("A2:C33"), 3, False) End If End Sub

Visual Basic69閲覧xmlns="http://www.w3.org/2000/svg">100

ベストアンサー

1

ID非公開

2020/9/25 19:48

Private Sub Worksheet_Change は計算式による変更では作動しませんが、マクロによる値の変化では処理します。 「手入力以外の変化はスルーしちゃいますね。」は間違っています。 T2自体が空白が12以下になった時しか表示しないので、その誤解ではないですか? 空白が12以下になって、数字が表示されればT10に表示されます。 検索値がない時のエラー処理も入れました。 「計算表」シートのシートモジュールです。 Private Sub Worksheet_Change(ByVal Target As Range) Dim ck As Variant If Intersect(Target, Range("T2")) Is Nothing Then Exit Sub ck = Application.VLookup(Target, Sheets("10点").Range("A2:C33"), 3, False) If IsError(ck) Then MsgBox "10点シートに検索値がありません" Exit Sub Else Application.EnableEvents = False Range("T10").Value = WorksheetFunction.VLookup(Target, Sheets("10点").Range("A2:C33"), 3, False) Application.EnableEvents = True End If End Sub 一括削除ボタンは下記のように変更して下さい。 Sub clr() Application.EnableEvents = False Range("B2,D3:O3, D6:O6, D9:O9,D12,T2,T10").ClearContents Application.EnableEvents = True cnt = 0 End Sub

1人がナイス!しています

ここまで対応してくださり、本当にありがとうございます。 さて、動かしましたところ、"10点シートに検索値がありません"とい表示されます。  一方で、VLOOKUP関数をそのまま使うと、問題なく動きます。 なんでだろ、、、  なので、シートも存在するし、値も存在して問題はないと思うのですが、なんでこんなことが起こるのか、、。

ThanksImg質問者からのお礼コメント

たびたびご対応頂きまして ありがとうございます。 他の方々も対応してくださっており、皆様に感謝申し上げます。 今後もまだ素人に毛がミリ単位で生えてるだけなので、質問をするかと思いますが、よろしくお願い申し上げます。

お礼日時:9/26 6:35

その他の回答(2件)

0

ちょいとミスがあったので再投稿します。 他の方へのレスでみましたが、0-36のボタンとやらに Call マクロ1 とでも入れておき、標準モジュールに Sub マクロ1() v1 = Sheets("計算表").Range("T2").Value Sheets("計算表").Range("T10").Value = WorksheetFunction.VLookup(v1, Sheets("10点").Range("A2:C33"), 3, False) End Sub として呼び出してはどうでしょうか。

こういう方法もあるのですね、、ありがとうございます。 やってみますね、ただ、、VLOOKUP関数をそのまま使うと、問題なく動きます。 なのに、VBAだとエラーが出てどうやら検索してくれないようなので、 ほんとにどうしてなんだろか、、 エクセル怪奇現象にこういうのあるのかな、、

1

こんにちは。 正しく動作しましたよ。 確認するのは、 1) シート名が「計算表」のシートのコードに、示しているコードがあるのか ぐらいです。 マクロを一回ずつ、、、ですが、このコードは、「シートの変化」だけで 動作するので、T2を手で入力したら、すぐに実行します どのように「マクロを実行」したのですか?

1人がナイス!しています

おはようございます。早々のお返事痛み入ります。 >T2を手で入力したら、すぐに実行します  そうです。手で入力すると動きます。 →このT2は、0-36のボタンをプッシュすると、自動的に、1,2,3・・・とマクロで変化するようにしています。 自動で変化したときに、T10に点10の表のC列の金額が表示されるようにするには、、、ということなのです。 VLOOKUP関数では自動変化に対応して変化しました。  マクロでも自動で変化した際に、自動で変わる仕様にするにはどうしたらいいかなと、、ということなのです。