• 締切済み

エクセル VBA について

エクセルで、 ダブルクリックしたら"*"を表示したい範囲に【入力】という名前をつけ、 ダブルクリックしたら9つ左のセルの内容を表示したい範囲に【金額】という名前をつけ、 二つの構文?をVisual Basicに作成したんですが、エラーが出てしまいます。 ひとつずつだと上手くいくのですが、なぜでしょうか? わかる方教えてください。 あと申し訳ないのですが、VBAはまったくわからないため、ネット上で構文をコピーして貼り付けました。 そんな者でもわかる修正の説明をお願いいたします。 以下が作成し、エラーとなってしまう構文です。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Const RangeName As String = "金額" If Target.Value = "" Then Target.Value = Target.Offset(0, -9).Value Cancel = True End If End Sub Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Const RangeName As String = "入力" If Not Intersect(Range(RangeName), Target) Is Nothing Then Cancel = True If Target = "*" Then Target = "" Else Target = "*" End If End If End Sub

みんなの回答

  • FEX2053
  • ベストアンサー率37% (7991/21371)
回答No.2

単純に2つサブルーチンを設定したからじゃ? 2つあると「Worksheet_BeforeDoubleClick」の時に「どっちを動作 させるか」Excelが迷ってしまうので、1イベントには1つのサブ ルーチンというのが原則なんです。 ですので、この2つのサブルーチンを一つにまとめて見てください。 (sub~end subを一つにする)どっちを動作させるかは、アクティブ セルの位置などで判断させる・・・とかというテクニックを使います。 それこそ「メッセージボックスを出して選ばせる」でも良いです。

chmbr
質問者

補足

そうだったんですね。 >どっちを動作させるかは、アクティブ セルの位置などで判断させる・・・とかというテクニックを使います。 これはどの場所にどう書けばいいのでしょうか?

  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.1

> ひとつずつだと上手くいくのですが、 それぞれはどの状態ですか? > 二つの構文?をVisual Basicに作成したんですが、エラーが出てしまいます。 まとめたのはどの状態ですか? どんなエラーメッセージが出ますか? ただ単に、同じ名前の関数が2つ存在するからエラーになるんだと思うのですが、情報が少ないので、何とも言えません。

chmbr
質問者

補足

説明が悪くてすません。 先の質問内容に、Private Sub Worksheetから始まる構文を二つ書きましたが、そのどちらかのみを記述すると上手く実行されましたが、二つを記述するとコンパイルエラーとなり Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) に黄色い網掛けがされワークシート名が正しくありませんというメッセージがでます。

関連するQ&A