- 締切済み
マクロボタンを押すたびに違う動作をしたい
エクセルのボタンにマクロを割り当てました。 ボタンの1回目のクリック、2回目のクリックと行うとします。 その時1回目のクリックの時にはこの動作、 2回目のクリックの時にはこの動作と、 押すたびに動作を変えていくとこは可能でしょうか? 着信と言うボタンを作っておいて、クリックのたびにセルを移動して、 now()関数で、着信時間を記録しておきたいのです。 ボタンを幾つも分けてしまうと、大変なことになってしまうので、 Caseで分岐をしたいと思いました。 対象のセルが、空白ではない判断はどの様に記述するのでしょうか? その後、次の処理に対して何をすればよいのでしょうか? Caseの基本的な使い方と、空白セルの判別方法を教えてください。 Private Sub CommandButton1_Click() ' ' Macro1 Macro ' マクロ記録日 : 2008/6/20 ユーザー名 : ' ' Range("B2").Select ' Select Case 1 ' Case Is = FormulaR1C1 = "false" ActiveCell.FormulaR1C1 = "=NOW()" ' Case Else ' FormulaR1C2 = "=NOW()" ' End Select End Sub これで、時間だけはクリックすると表示されます。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- hallo-2007
- ベストアンサー率41% (888/2115)
Range("B65536").End(xlUp).Offset(1, 0).Value = Now 一応、ご説明しておきます Range("B65536"). B列の最終の行から End(xlUp). 空白でないセルまで上に上がって Offset(1, 0).Value そのひとつ上のセルに Now 横方向であれば Range("IV2").End(xlToLeft).Offset(0, 1).Value = Now 2行目の際右列から、空白でないセルまで左に移動して、 右へひとつのセルに Now
- Masa2072
- ベストアンサー率51% (94/182)
Select Case文の使い方を根本的に間違っています。 Select Case 式(もしくは変数) Case 式の結果1(もしくは変数の値1) Case 式の結果2(もしくは変数の値2) Case Else 上記以外の場合 End Select というような書き方になります。 通常、今回のようにRange("B2")が空白か?といった二者択一の場合はSelectではなくIf文による分岐を行う方が多いと思うのですが、あえてSelectでやるとすると Range("B2").Select Select Case Selection.Value Case "" B2が未入力のときの処理 Case Else B2が入力済みのときの処理 End Select という風になります。 これをIf文にするなら Range("B2").Select if Selection.Value = "" Then B2が未入力のときの処理 Else B2が入力済みのときの処理 End If ちなみに空白といわれるとスペースと勘違いすることもあるので、セルが空とか未入力とかの言い方のほうがいい思います。 セルが空(未入力)かは If Range("B2") = "" Then とか If IsEmpty(Range("B2")) Then などで判断します。
- hallo-2007
- ベストアンサー率41% (888/2115)
ひょっとして、やりたいことは Sub sampl() Range("B65536").End(xlUp).Offset(1, 0).Value = Now End Sub
お礼
何を書いてあるかわからないのですが、今後の勉強の参考にしたいと思います。またそのまま使って動くか試してみます。有難う御座います。
補足
すごい!縦にですけど動きました!こんな簡単にまとめる何てすごい応用ですね。 Masa2072には、質問内容からCase、Ifの初級のご説明を、halloさんからは、 一発実現を教わりました。 お二人とも大変有難う御座いましたM(__)M
お礼
成るほど、nullとか入れるのかと思いました。 非常に具体的で助かります。 空白?では無く空ですねの判定とかってどんなところで調べるのかも判らなかったので助かりました。 本当は1からコツコツと積み上げて、やっていった方がいいのですが、不精なので行き成り応用を見て、その時々の使い方を覚えておき見たいなことをするので、邪道なので答えてもらえる人が少ないのではと思ったのですが、お答え頂き感謝しております。