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

エクセルにマクロで
▶︎を押すとJ5セルに入っているTORAY()日付に対して1日づつ未来になるようにしたいです。
使わなそうですが、◀︎を押すと、過去に遡るようにしたいのですが、マクロの記録でできますか?
それとも、マクロの式(?)を入れないといけないですか?

質問者からの補足コメント

  • ありがとうございます。

    どう言う場面で使うかというと、
    送付状でして、
    明後日送る予定の送付状を、今日作りたい。
    その時に、いつもはTORAY()で作るのを、
    あらかじめ作りたいときに、
    ボタンをポチポチすると、翌日、明後日、明々後日…に変わるようにしたかったのです。

    おしえていただいた式?を、
    '「▶︎」ボタンに対応
    からコピペして、「▶︎」と「◀︎」のボタンをつくり、そこにはマクロ登録をすれば良いですか??

    No.1の回答に寄せられた補足コメントです。 補足日時:2020/07/16 15:27
  • マクロ→名前をつける→作成

    Sub マクロの名前()
    Private Sub Worksheet_Activate()
     Range("J5") = Date
    End Sub

    Private Sub SpinButton1_SpinDown()
     With Range("J5")
      .Value = .Value - 1
     End With
    End Sub

    Private Sub SpinButton1_SpinUp()
     With Range("J5")
      .Value = .Value + 1
     End With
    End Sub
    End Sub

    でよいですか?

    このあと、
    ボタンを作って、
    マクロの登録でしょうか?

    No.2の回答に寄せられた補足コメントです。 補足日時:2020/07/17 11:08

A 回答 (5件)

No.2です。



最初にActiveXコントロールのスピンボタンをSheet上に挿入するのが一番簡単だと思います。

メニュー → 開発タブ → 挿入 から ActiveXコントロールのスピンボタンを選択し、
横長のスピンボタンにすれば左右の ◀ ▶ になります。

デザインモードになっているはずなので、そのスピンボタン上でダブルクリックすればVBA画面が表示されます。
そこへそのまま前回のコードをコピー&ペーストすれば大丈夫だと思います。

※ 実は前回投稿後思ったのですが、

Private Sub Worksheet_Activate()
 Range("J5") = Date
End Sub

の部分は別シートを開いて対象Sheetをアクティブにした時点でしかJ5セルの日付が変化しないので、
Workbook Open のイベントにした方が良いかもしれませんね。m(_ _)m
    • good
    • 0

>今日7/15は44028となります。



あ、今日は7/16でしたね(^_^;)
シリアル値は合ってます。
    • good
    • 0

私が以前にやっていた方法ですが、まずフォームコントロールのスピンボタンを使うので左右ではなく上下の三角になります。

それで良ければ。

開発→挿入→フォームコントロールから、スピンボタンを選択しシートのお好きな位置に配置します。
スピンボタンを右クリック→コントロールの書式設定→リンクするセル(Ex.A1)にお好きなセルを指定します。
さて、Excelは日付をシリアル値という数値で管理しています。今日7/15は44028となります。
逆に言えば44028をセルに入れて表示形式を日付にすれば今日の日付が表示されます。
フォームのスピンボタンは0から30000までしか表示できないのでまず40000を底上げします。
日付を入力しているセルに
=40000+$A$1(リンクしたセル)
といれておき、コントロールの書式設定の現在値に4028と入れておけば、44028となりますね?
後はお好きな書式に変えておいて下さい。
そうしておいてスピンボタンを操作すれば押した分だけ日付が変更になります。
ただし、いつも開いたらTODAYという訳にはいかなくなりますので、操作する頻度によっては使いにくくなるかも知れません。
    • good
    • 0

こんにちは!



>▶︎を押すと

>◀︎を押すと

ActiveX コントロールのスピンボタンとしてみました。
一例です。

>J5セルに入っているTORAY()・・・
とありますが、J5セルのデータをいじってしまうとTODAY関数そのものが消えてしまいますので、
ActiveX コントロールを配置しているシートのJ5セルだという前提で、
そのシートがアクティブになった時点でJ5セルを「今日」の日付にし、
スピンボタンの操作で1日ずつのプラスマイナスとしてみました。

操作したいSheetのシートモジュールにしてみてください。

Private Sub Worksheet_Activate()
 Range("J5") = Date
End Sub

Private Sub SpinButton1_SpinDown()
 With Range("J5")
  .Value = .Value - 1
 End With
End Sub

Private Sub SpinButton1_SpinUp()
 With Range("J5")
  .Value = .Value + 1
 End With
End Sub

※ J5セルの表示形式は好みの日付にしておいてください。

こんな感じではどうでしょうか?m(_ _)m
この回答への補足あり
    • good
    • 0

こんにちは



TODAY()を用いた説明になっているので、その値が、一日置いてからブックを開くと何もしなくても増加しているようにするのかなど不明点がありますが、ひとまず適当に解釈するとして。

>マクロの記録でできますか?
記録ではそのままのものはできないでしょう。
(記録は、手動操作を記録するものですがご質問の機能をそのまま手操作でできるとは思えませんので。似たものはできるかもしれませんけれど。)


曖昧な点はありますけれど、こんなのではいかがでしょう?

'「▶︎」ボタンに対応
Sub increase()
 setDef (1)
End Sub

'「◀」ボタンに対応
Sub decrease()
 setDef (-1)
End Sub

Sub setDef(deffer)
 d = Range("J5").Value - Date + deffer
 Range("J5").FormulaLocal = "=" & d & "+TODAY()"
End Sub
この回答への補足あり
    • good
    • 0

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