• 締切済み

EXCEL VBA イベントプロシージャ

セルをダブルクリックすると反応するイベントプロシージャがありますが、これを特定のプロシージャ内でのみ反応させ、無用のときには反応させないということは可能でしょうか。

みんなの回答

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

元のご相談とは関係ないことをダラダラと後出しされても、おつきあいする義理はありません。 元のご質問には回答して納得も得られたようですので、そもそものアナタのヤリタイ事は、まずはアナタがご自分で考えて実装してください。 その上でまた新たな困った事が発生したのでしたら、別に丸投げで誰か作ってくださいでも構いませんが、それはそれで新しいご相談投稿として、質問を出しなおしてください。 「ついでにちょっと聞いちゃえ」で思いつきをちょこちょこっと書いているモノだから、 ○『取った』値を一体何にどう格納したいのか とか ○そもそも「最初にWクリックを格納」「次のWクリックで『取る』」 だとか、そういったヤリタイ事の段取りがまるで説明不足です。

kana14
質問者

お礼

ダラダラとおつきあいいただきましてありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

>特定のプロシージャ内で 何を意図しているのか不明ですが、 private sub worksheet_beforedoubleclick(byval Target as excel.range, cancel as boolean) if 特定の条件 then ’実施する処理 end if end sub などのようにして、条件が見合った時のみ所定の処理を行いそれ以外はスルーにすることは簡単に出来ます。 もちろん if 特定の条件 then exit sub などのようにして抜けてしまっても、同じ結果が得られます。 たとえば private sub worksheet_beforedoubleclick(byval Target as excel.range, cancel as boolean) if target.address <> "$A$1" then exit sub msgbox "A1" cancel = true end sub

kana14
質問者

お礼

早々にご回答いただきましてありがとうございます。

kana14
質問者

補足

cells(1,"A")をダブルクリック、次にcells(3,"B")をダブルクリック。cells(3,"B")が「=""」なら、cells(1,"A")の値をコピーしてcells(3,"B")に貼り付け。cells(3,"B")が「<>""」ならcells(3,"B")の値を「1列目」に格納した配列変数の「2列目(数量)」に「1」を加算し、cells(1,"A")の値をコピーしてcells(3,"B")に貼り付け。以下「終了の条件」に到達するまで繰り返す。 というものです。詰め将棋をイメージしています。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • イベントプロシージャの起動・停止の可否

    セルをダブルクリックすると反応するイベントプロシージャがありますが、無用のときはセルをダブルクリックしても反応せず、必要なときにだけ反応(起動)させることは可能でしょうか。 または、同一ブックに上記プロシージャを複数作成して異なる処理をすることは可能でしょうか。

  • EXCELVBAのイベントプロシージャ

    EXCELのVBAでダブルクリックイベントプロシージャについて質問です。 したいこと。 ある管理表がありその表の索引番号といくつかの項目が並んでいる表です、 その表を見て索引番号をダブルクリックするとその索引番号の表題部と明 細部を単票(カード)形式で表示するようなものをつくりたいと思っています。 困っているところ。 ダブルクリックのイベントプロシージャでこれを実現しようとしているのですが うまくいかなくて困っています。 ダブルクリックのイベントプロシージャでその値(ここでは索引番号)がTarget にはいるのですがその値は他のプロシージャに渡す方法がわかりません。 あるいは、イベントプロシージャの仕様としてTargetの値は当該プロシージャ内 でしか保持できないのでしょうか? 他のプロシージャでもその値を使いたいのですがダブルクリックイベントの値を 他のプロシージャで使う方法がありましたら教えてください。

  • イベントプロシージャについて(エクセル)

    あるエクセルのブックの全てのシートに 適用されるようなイベントプロシージャを 作りたく思っています。 1、あるセルをダブルクリックする 2、そのセルが含まれている行を選択する 3、メッセージボックスで「現在の行を削除する」  旨の確認を求めて 「はい」ならば削除  「いいえ」なら何もしない 1、あるセルをシングルクリックする 2、そのセルが含まれている行を選択する 3、メッセージボックスで「現在の行をコピーして   自身の一つしたの行に挿入する」  旨の確認を求めて 「はい」ならば実行  「いいえ」なら何もしない という二つのモノを作りたく思っています 自分で色々HPを見たり 書籍も見てみたのですが なかなかわかりませんでした 「ブック上での全てのシートで適用される」 という記述はどうしたらよろしいのでしょうか? 皆様よろしくお願いします

  • アクセスvba [イベント プロシージャ]つけたい

    もうフォームモジュールにイベントは出来上がってるのですが コントロールの名前を変更したため デザインビューのプロパティの[イベント プロシージャ]と言う文字が消えてしまいました。 フォーム上の全てのコマンドボタンのクリック時に [イベント プロシージャ]と言う文字を入れたいのですが そのような作業は可能でしょうか? [イベント プロシージャ]と言う文字が入れば、該当のイベントは既にモジュールにある為 イベントとして機能します。

  • VBAのイベントプロシージャ

    VBAのイベントプロシージャを詳しく紹介しているサイトを探してます。 しっている方がいたら教えてください

  • Accessでのイベントプロシージャ

    他の人が作成、使っているファイルで相談されたのですがわからないので教えてください。 今まで自分の意図するとおりの動いていたレポートがあります。 レポートのオープン時にイベントプロシージャを使ってコードをかいていました。 ですが動作がおかしかったので、イベントプロシージャを見ようと、デザインビューで 「開く時」のイベントプロシージャの横の「…」ボタンを押しても何も起こりません。 私もやってみたのですが何もおきません。 試しにと思い、「閉じる時」に新規にイベントプロシージャを作ってみようと、 横の▼ボタンを押してイベントプロシージャを選択し、「…」ボタンを押しても反応しません。 またMicrosoft Visual Basicを開き、左側のウィンドウを見たところ、上記の動作がおかしい レポート名が表示されていませんでした。 これはもうコードが消えてしまっているということでしょうか?

  • ExcelにおけるDDEデータのイベントプロシージャについて

    DEEをつかって、Excelのセルにデータを出力しています。 そのセルのデータが変更された時に、自動でそのデータをコピーし別のシートにペーストしたいのですが、よろしければ助言をお願い致します。 イベントプロシージャの(worksheet_change)で試してみたのですが、任意でセルの値を変えないとプロシージャが動かず行き詰りました。 VBAも超初心者なのですが、よろしくお願い致します。

  • リストボックスのイベントプロシージャー

    「氏名一覧」というフォームに、該当する氏名が リストボックスの中に表示されています。 リストボックスから1名氏名を選んだ時(ダブルクリックした時)に、 その選んだ人の個人情報のフォームを開くようにしたいのですが、 「氏名一覧」リストボックスの [ダブルクリック時]イベントプロシージャーでのコードの記述の仕方が分かりません。どなたか教えて下さい。宜しくお願いします。 ACCESS97を使っています。

  • エクセルVBA イベントプロシージャに引数を渡せま

    お世話になります。 エクセル2003/XP 使用です。 イベントプロシージャに引数を渡せまるかどうか教えていただけますでしょうか? 下記のコード中の変数mysheetnameを ユーザーフォーム、→ CommandButton1のプロシージャに 引数として渡して行きたいのですが、 実行すると、一番最初のWorkbook_SheetBeforeRightClickの時点で、 コンパイルエラー:  プロシージャの宣言が、イベントまたはプロシージャの定義と一致していません。 とエラー表示されます。 イベントプロシージャに引数を渡すことはできますでしょうか? ---------- ThisWorkBook内 ---------- Public mysheetname As String Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) mysheetname = ActiveSheet.Name UserForm1.Show (mysheetname)     '←変数mysheetnameの値をユーザーフォームに渡したい。 End Sub ---------- ユーザーフォーム ---------- Private Sub UserForm_Initialize(ByVal mysheetname As String ) 処理 End Sub Private Sub CommandButton1_Click(ByVal mysheetname As String ) 処理 End Sub ’--------- ここまで 引数について少し理解し始めたばかりの者です。 よろしくお願いします。

  • エクセルVBAのイベント起動について

    エクセルVBAのマクロのイベント起動について質問があります. セルのある特定の範囲(例えばA1:B6)のセルだけの値変更時に反応して,マクロ(例えば sub calcu)を起動させたいのですが,方法がわかりません. どなたか教えてください.

専門家に質問してみよう