• ベストアンサー

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

よろしくお願い致します。 すみません、マクロの超初心者です。 見よう見まねで組んでみたのですが、セルが選択されるばかりでさっぱり動きません。 同じような処理で多数のパターンを覚えたいのですが、お教え頂けますでしょうか。 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 やりたい処理は、セルをダブルクリックするごとに該当文字が順に出たのち、また空白に戻る、というものです。 恥ずかしいのですが、すべてコピペしたので、どこがどう間違っているのかもご指摘頂けると幸いです。 不勉強で申し訳ございません。お助け下さい。 よろしくお願い致します。

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

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

D1~999のセルで、セルの値がダブルクリックの度に、空白→有→無→空白 の順に変わります。(それ以外の値が入っているときはなにもしません。) 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

perikan2
質問者

お礼

早速のご教授、本当にありがとうございます! 連続して変換させたかったので、End with の前に cancel = tlue を入れてみたらできました♪ まだまだ仕組みの理解が足りませんが、ひとまず解決です。 助かりました。

その他の回答 (2)

  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.3

間違っているところ (1)Interior:指定されたオブジェクトの塗りつぶし属性 (Interior オブジェクト) を返します。値の取得のみ可能です。(ヘルプより) なので値の設定はできません。またやりたい処理とも合いません。 (2)Worksheet_BeforeDoubleClickの引数Targetが今処理対象となっているセルです。 なのでSelectionやActiveCellを使う必要はありません。というかTergetを使うべきです。 ※ヘルプをもっと活用しましょう。

perikan2
質問者

お礼

ご指摘ありがとうございます。 全く仰るとおりで、恥ずかしい限りです。理解が低いくせに人まねで適当にやった当然の帰結ですね。もっと勉強します。 ありがとうございました。 一旦締め切らせて頂きたいと思います。 みなさん、本当にご親切で、ポイントを割り振るのがおこがましく恐縮なのですが、お礼かたがた割り振らせて頂きたいと思います。 力をお貸しくださり、ありがとうございました。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

こういうことでしょうか? 有* とアスタリスクがあるのは先頭が有であればということですね? Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Range("D1:D999")) Is Nothing Then Exit Sub Cancel = True With Target If .Value = "" Then .Value = "有" ElseIf .Value Like "有*" Then .Value = "無" ElseIf .Value Like "無*" Then Target.ClearContents End If End With End Sub

perikan2
質問者

お礼

早速のご教授ありがとうございます! アスタリスクは、、、他のサイトでそうなっていたのを見真似で入れただけでした(^^; 全く恥ずかしい限りです。 お教え頂いた内容、まさにこちらでできました。 勉強になります。

関連するQ&A