• ベストアンサー

ExcelのVBAについて教えて下さい

今、日報の作成をしているのですが 1行目に「1」を入れると、C列の3行目~15行目までがねずみ色になって 休みを意味するように条件付書式を設定しています。 しかし、1を入力というのも不細工だと思い、そのセルの上に コマンドボタンをおいて、 それを押すと下のセルに1が入力されるマクロを作ろうと思ったのですが、 1を入力するまでは良いんですが、 今度同じボタンでもう一度押すと消える、 さらにもう一度押すと1が入力される、 なんていうマクロは組めますか? マクロの記録で、下記のような式は得たのですが つなぎ方等々、分からない事ばかりで出来ません。 どなたか教えて下さい。お願いします。 * * * * * * * * * * * * * * * * * * * * * * * * * * * * Private Sub CommandButton1_Click() Range("D1").Select ActiveCell.FormulaR1C1 = "1" Range("D1").Select Selection.ClearContents End Sub

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

  • ベストアンサー
noname#140971
noname#140971
回答No.1

Private Sub CommandButton1_Click()   Me.Cells(1, 4) = Abs(Me.Cells(1, 4) - 1) End Sub 1と0との繰り返しですが、0 は書式設定でブランク表示にできるので問題ないでしょう。

guchi_yama
質問者

お礼

早速のご回答ありがとうございます。 うまく出来ました。 (1,4) というのは、A1=(1,1) とした D1の事ですよね。 了解です。 本当にありがとうございました。 また何かありましたら宜しくお願い致します。

その他の回答 (1)

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

こんにちは。 >1を入力するまでは良いんですが、 >今度同じボタンでもう一度押すと消える、 >さらにもう一度押すと1が入力される、 これを、トグルといいますね。本来、[トグルボタン]でよいのですが、コマンドボタンで行う場合は、入力した値で取るしかありませんね。また、条件付き書式ではなく、その全てをマクロ側で行う方法もあるかと思います。 基本的に書き方をすれば、このように、IF文でつなぎます。 ワークシートの場合は、数式などが含まれる場合には、必要に応じて、ClearContents を使いますが、単独で使用する場合は、「""」にしても同義です。 Private Sub CommandButton1_Click() If Range("D1").Value <> "" Then   Range("D1").Value = "" Else    Range("D1").Value = 1 End If End Sub

guchi_yama
質問者

お礼

トグル??そっちの方が良さそうですね;; 理に適った感じで...^^ しかし、これも勉強ですので一度自分で調べてみて また分からなければお願いします。 ご回答&アドバイス ありがとうございました。

関連するQ&A

専門家に質問してみよう