- ベストアンサー
エクセル ダブルクリック マクロについてご教授下さい
よろしくお願い致します。 すみません、マクロの超初心者です。 見よう見まねで組んでみたのですが、セルが選択されるばかりでさっぱり動きません。 同じような処理で多数のパターンを覚えたいのですが、お教え頂けますでしょうか。 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 やりたい処理は、セルをダブルクリックするごとに該当文字が順に出たのち、また空白に戻る、というものです。 恥ずかしいのですが、すべてコピペしたので、どこがどう間違っているのかもご指摘頂けると幸いです。 不勉強で申し訳ございません。お助け下さい。 よろしくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
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
その他の回答 (2)
- o_chi_chi
- ベストアンサー率45% (131/287)
間違っているところ (1)Interior:指定されたオブジェクトの塗りつぶし属性 (Interior オブジェクト) を返します。値の取得のみ可能です。(ヘルプより) なので値の設定はできません。またやりたい処理とも合いません。 (2)Worksheet_BeforeDoubleClickの引数Targetが今処理対象となっているセルです。 なのでSelectionやActiveCellを使う必要はありません。というかTergetを使うべきです。 ※ヘルプをもっと活用しましょう。
お礼
ご指摘ありがとうございます。 全く仰るとおりで、恥ずかしい限りです。理解が低いくせに人まねで適当にやった当然の帰結ですね。もっと勉強します。 ありがとうございました。 一旦締め切らせて頂きたいと思います。 みなさん、本当にご親切で、ポイントを割り振るのがおこがましく恐縮なのですが、お礼かたがた割り振らせて頂きたいと思います。 力をお貸しくださり、ありがとうございました。
- merlionXX
- ベストアンサー率48% (1930/4007)
こういうことでしょうか? 有* とアスタリスクがあるのは先頭が有であればということですね? 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
お礼
早速のご教授ありがとうございます! アスタリスクは、、、他のサイトでそうなっていたのを見真似で入れただけでした(^^; 全く恥ずかしい限りです。 お教え頂いた内容、まさにこちらでできました。 勉強になります。
お礼
早速のご教授、本当にありがとうございます! 連続して変換させたかったので、End with の前に cancel = tlue を入れてみたらできました♪ まだまだ仕組みの理解が足りませんが、ひとまず解決です。 助かりました。