アプリ版:「スタンプのみでお礼する」機能のリリースについて

下記のコードをご覧ください。
実行【ボタンをクリック】すると
A1セルに本日の日付が入力されます。

やりたい事は下記のように【ボタンを押すごとに】
A1セル、A2セルとしたのセルに日付が入力されるようにする事です

⇒ボタンを1回押すA1セルに本日の日付を入力
⇒ボタンを2回押すA1セルとB1セルに本日の日付を入力

【VBAコード】
Sub A1セルに本日の日付を入力()

Range("A1").Value = Date

End Sub

ご存じの方、おしえてください

A 回答 (3件)

他の回答者さんも指摘されておられますが、タイトルと質問本文の内容が一致していますせん。


タイトルの内容が正しい場合、enunokokoroさんの回答にあるコードを実行すれば、ご質問者のご希望は実現できるのではないかと思います。

なお、enunokokoroさんのマクロではA1セルが空白がどうか判定し、空白でなかったら、A列最終入力行の次行に日付が入力されます。つまり、空白を判定するのはA1セルのみです。

一方、A1セルの空白だけでなく、A1セル以下のセルについて順次空白かどうか判定し、空白を見つけたら本日日付を入力するという考えもあります。その場合のコードの例をあげれば、

Sub A1セルに本日の日付を入力()
Cells(1, "A").Select
Do Until ActiveCell.Value = ""
ActiveCell.Offset(1, 0).Activate
Loop
ActiveCell.Value = Date
End Sub

というコードになりますが、空白を順次検索する訳ですから遅くなります。
A1セルとA列最終入力行の間に空白があれば、そこに本日日付が入力されるという機能が付加されますが、enunokokoroさんのマクロの方が圧倒的に速いです。
    • good
    • 0

「ボタンを2回押すA1セルとB1セルに本日の日付を入力」とは?


A2セルが空白だった場合、B2セルにも日付を入れるということ?
ダブルクリックのイベントについては、何をしたいのか明白ではないので回答しませんが、質問タイトルのような動作なら以下のようなもので対応します。

Sub A列空白セルに本日の日付を入力()

Dim n As Long
 If Cells(1, 1).Value = "" Then
  Cells(1, 1).Select
  ActiveCell.Value = Date
 Else
  n = Cells(Rows.Count, "A").End(xlUp).Row + 1
  Range("A" & n).Select
  ActiveCell.Value = Date
 End If

End Sub
    • good
    • 0

ん?


それは、入力後に入力した下のセルを選択するということでしょうか?
でもなぜかA1セルの次にB1セルなんだよね……意味不明です。

また、2回実行するとA1セルに入力されている日付を更新するという事になりますがよろしいでしょうか?
 23:59に1回目の実行。
 0:01に2回目の実行。
 A1セルには2回目に実行したときの日付が入る。
間違いありませんか?

・・・

選択範囲を変えるのは

 ActiveCell.Offset(1, 0).Activate

とでもすればいい。
この例は、実行すると一つ下のセルを選択し直す。

 ActiveCell.Offset(0, 1).Activate

とすれば、一つ右のセルを選択し直す。

あとは自分でアルゴリズムを考えてコードを作成してください。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A