• ベストアンサー

エクセル マクロ ダブルクリックのイベント

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As range) というマクロをしても動きません。どうしてでしょうか? 他のsheetchaneとかのマクロは動くのですが・・ (ダブルクリックしてもセルが入力可能な状態になるだけです)

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 最初に、イベントのコードが違っていませんか? × Private Sub Worksheet_BeforeDoubleClick(ByVal Target As range) ○ Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) ダブルクリックは、セルに入力待ち状態にさせてしまうので、マクロが止まってしまいます。ですから、入力待ち状態を作らないように、Cancel = True をして、一旦、セルの入力待ち状態を解除してあげなくてはなりません。 例: Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) MsgBox Format(Date, "yy/mm/dd") Cancel = True '入力待ちを解除 End Sub なお、通例、最後のほうに、入力待ち解除コードを置くことが多いようです。

hayakutabetai
質問者

お礼

ありがとうございます。 解決です。キャンセルのこと知らなかったので、 よかったです。

その他の回答 (1)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

マクロが書かれているシートとダブルクリックしたシートは同じになっていますか? MsgBox "BeforeDoubleClick" とか書いてダブルクリックしても、メッセージボックスが表示されませんか? selectionChangeとかを使っていると、ダブルクリックしたことになる前に、 selectionChangeが起動してダブルクリックになりません。 そういう場合セルを移動しないでダブルクリックすると起動するはずです。 多分、そういうことではないでしょうか

hayakutabetai
質問者

お礼

そうなんですか。しらなかったです。 ありがとうございました。

関連するQ&A

  • エクセルVBA ダブルクリックした左隣の値を返す方法

    いつもお世話になっております。 あるワークシートにおいて、 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, _ Cancel As Boolean) If ActiveCell.Column = 7 Then Target.Value = "希望" End If End Sub というマクロを記述することができました。 今度は、 G列のどこかのセルをダブルクリックすると、 同じ行のE列の値が、 ダブルクリックしたセルに入るようにしたいのです。 どのような記述をすればよいのか ご教示ください。

  • 選択したセルでダブルクリックをするとエクセルマクロによりそのセルがコピ

    選択したセルでダブルクリックをするとエクセルマクロによりそのセルがコピーされて、メモ帳等のテキストエディタで貼りつけるとその値が出るようにしたいと思っています。 ほとんどイメージ通りにできたのですが、テキストエディタで貼りつけた値に加えて改行が入ってしまいます。 どのようにすると改行コードを消せますか?できないのなら、どのようにすればエクセルで任意のセルをダブルクリックをしたときに改行コードのないようにコピーできますか? 参考に現在のVBEで記述したコードを示します。 ----------------------------- Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, _ Cancel As Boolean) Target.Interior.ColorIndex = 37 Cancel = True Target.Copy End Sub

  • エクセル マクロ ダブルクリックで…(2)

    たびたび申し訳ございません。 先ほどエクセルでダブルクリックをすると順番に該当セル内の値が「有」→「無」→「空白」 となるマクロをご教授頂き、下記の内容で解決した者です。 B列についての該当セルへの入力がなされるという内容だったのですが、実はC列にも同様の処理を致したく、またもや素人はなすすべが無くなってしまいました。 B列は「要」「不要」「請求」「空白」としたいと思います。 たびたび大変恐縮ですがよろしくご教授くださいませ。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Range("d1:d999")) Is Nothing Then Exit Sub With Target   If .Value = "" Then    .Value = "有"   ElseIf .Value = "有" Then    .Value = "無"   ElseIf .Value = "無" Then    .Value = ""   End If End With End Sub

  • excel マクロでの特殊文字入力方法

    マクロで特殊文字入力は出来ないのでしょうか? やりたい内容は、セルをダブルクリックした時に✓を表示させたいのです。 セルをダブルクリックした時に○を表示するマクロが、下記の通りである時、 ○の代わりに✓を表示させたいのですが、VBAで○の所に✓で書き換えると ?と表示されてしまいます。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) With Target If .Value = "○" Then .Value = "" Else .Value = "○" End If End With End Sub

  • ダブルクリックイベントで良いのかどうか?

    お世話になります。 ダブルクリックイベントで、そのセルを赤く色を塗り、尚且つ、 そのセルをダブルクリックした事により、別のワークブックを開き、 また、開いたワークブックのシートの中からある単語を検索して その属性を現在アクティブにしている、ブックのシートに記入しよう としていますが、 まず、下記の様に、ダブルクリックイベントで、セルを赤く塗るまではうまくいったのですが、別のブックを開く事がうまく出来ません。 記述が悪いのか、または標準モジュールに記述するべきなのか分からなく困っています。 どなたかご教授頂きたく宜しくお願い申し上げます。        記 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim Rng As Range, myRng As Range Set Rng = Range("c2:d2,f2") Set myRng = Intersect(Target, Rng) If myRng Is Nothing Then Exit Sub Rng.Interior.ColorIndex = xlColorIndexNone myRng.Interior.ColorIndex = 3 Cancel = True If Intersect(Target, Range("c2")) Then Workbooks.Open Filename:="C:\Documents and Settings\Owner\デスクトップ\台帳.xls" End If End Sub

  • エクセル ダブルクリック マクロについてご教授下さい

    よろしくお願い致します。 すみません、マクロの超初心者です。 見よう見まねで組んでみたのですが、セルが選択されるばかりでさっぱり動きません。 同じような処理で多数のパターンを覚えたいのですが、お教え頂けますでしょうか。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Range("d1:d999")) Is Nothing Then Exit Sub With Selection.Interior If ActiveCell = "" Then .Value = "有" ElseIf .Value Like "有*" Then .Value = "無" Else Cancel = True End If End With End Sub やりたい処理は、セルをダブルクリックするごとに該当文字が順に出たのち、また空白に戻る、というものです。 恥ずかしいのですが、すべてコピペしたので、どこがどう間違っているのかもご指摘頂けると幸いです。 不勉強で申し訳ございません。お助け下さい。 よろしくお願い致します。

  • 特定の列でダブルクリックのイベントを発生させたい

    ExcelのA列に写真を挿入し、その他の列に文字を入力するようなシートを作成しており、 (1)A列では写真を挿入 (2)その他の列ではExcel本来の仕様通り(ダブルクリックした付近から文字列を編集できる)に動作する 上記のようなマクロを検討しております。 サンプルとして以下のようなマクロを作成しました。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean) Cancel = True '===============A列以外は処理を行わない If Intersect(Target, Range("A:A")) Is Nothing Then Exit Sub '===============写真挿入処理  ~略~ End Sub しかしながら、ダブルクリックをした段階でBeforeDoubleClickが呼ばれ、 何もせず終了するため(2)でやりたいことが実現できないでおります。 BeforeDoubleClickとは別のものを利用できるのか、 実直に(2)の処理をマクロで記載するしかないのかご教授いただければと思います。

  • Excel 2007 マクロについて

    初心者なりに試行錯誤しながら、チャレンジしています。 B1セルには日付が入力されています。 B1をダブルクリックしたときにUserForm1のTextBox1にその 日付を表示したいのですが上手くいきません。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Range("B1:B15")) Is Nothing Then Exit Sub Cancel = True UserForm1.Show UserForm1.TextBox1.Value = Target.Value Unload UserForm1 End Sub どこをどのように修正したらよろしいでしょうか?

  • エクセルにてダブルクッリクしたときの動作

    エクセルにて特定のセルをダブルクリックをした時に日付を表示させたくて以下のマクロを組みました。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range,Cancel As Boolean) If intersect(Target, Range("A1")) Is Nothing Then Exit Sub If ActiveCell = "" Then ActiveCell = Format(date, "yyyy") Cancel = True End If End Sub この場合A1セルをダブルクリックした時のみ西暦が入力されるようになっていますが、他のセルで、例えばB1セルでは月、C1セルでは日にちをダブルクリックで入力させるにはどうしたら良いでしょうか? If intersect(Target, Range("A1")) Is Nothing Then Exit Sub のTarget, Rangeを書き換えて複数このマクロを書き込んだのですがうまく動作しなくて。 知恵を貸していただけると助かります。

  • 複数のダブルクリックイベントを同一シートで

    以前 質問して回答をいただいたシートで他のダブルクリックイベントを記述したいのですが・・・ 単独だと できるようですが 複数できるようにしたいのですが エクセル2010です。 >http://okwave.jp/qa/q7230128.html A1:N1 のセルをダブルクリックしたら 色が黄色 また ダブルクリックしたら 色なし 教えをうけたマクロコードが 以下です。 ダブルクリックイベント その1 Private Sub worksheet_beforedoubleclick(ByVal Target As Excel.Range, cancel As Boolean) If Application.Intersect(Target, Range("A1:N1")) Is Nothing Then Exit Sub If Target.Interior.ColorIndex = xlNone Then Target.Interior.Color = vbYellow Else Target.Interior.ColorIndex = xlNone End If cancel = True End Sub ダブルクリックイベントその2 J8:J9,L8:L9,N8:N9,P8:P9,R8:R9,T8:T9,V8:V9,J29:J30,L29:L30,N29:N30,P29:P30,R29:R30 上の セルをダブルクリックしたら 現在時刻を表示したい 記述コードは 以下です。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Range("J8:J9,L8:L9,N8:N9,P8:P9,R8:R9,T8:T9,V8:V9,J29:J30,L29:L30,N29:N30,P29:P30,R29:R30")) Is Nothing Then Exit Sub If ActiveCell = "" Then ActiveCell = Time Cancel = True End If End Sub 2つのコードをうまくまとめたいのですが 知識不足でとまどっております。 詳しいかた、アドバイスお願いいたします。 よろしくお願いします。

専門家に質問してみよう