人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

エクセルのVBAでお願いします。添付画像のように現在日とその曜日が表示されているとき、上矢印マークをクリックするとその前日(11月25日(土))が、下矢印をクリックすると11月27日(月)が表示されるようにしたのですが、いかがでしょうか?

1164509374
●拡大する

●質問者: anglar
●カテゴリ:コンピュータ
✍キーワード:エクセル クリック マーク 曜日 現在
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● kn1967
●40ポイント

(1)1日加算マクロ

Sub Macro1()

Range("A1").Value = Range("A1").Value + 1

End Sub

(2)1日減算マクロ

Sub Macro2()

Range("A1").Value = Range("A1").Value - 1

End Sub


以上2つのマクロを登録しておいて、上向き矢印と下向き矢印に割り当ててください。

上記ではセルA1に日付が入っている事が前提となっていますので、適宜修正してください。

◎質問者からの返答

素早い対応、ありがとうございました。シンプルVBAで分かりやすかったです。


2 ●
●50ポイント ベストアンサー

標準モジュールに以下のコード部分を追記してください。

その後、上矢印ボタン上で右クリックし、[マクロの登録]を選び、setPreviousDayを選択してください。

同様に下矢印ボタン上で右クリックし、[マクロの登録]を選び、setNextDayを選択してください。

(対象とするセルはtargetCellという変数で指定するようにしており、下記のサンプルでは"A1"にしております。)

Option Explicit
Sub setNextDay()
 Dim targetCell As String
 targetCell = "A1"
 Range(targetCell).Value = Range(targetCell).Value + 1
End Sub
Sub setPreviousDay()
 Dim targetCell As String
 targetCell = "A1"
 Range(targetCell).Value = Range(targetCell).Value - 1
End Sub
Option Explicit
Sub setNextDay()
 Dim dateStr As String, targetCell As String
 Dim dateSerialNextDay As Long
 targetCell = "A1"
 dateStr = Range(targetCell).Value
 dateSerialNextDay = DateValue(Left(dateStr, InStr(1, dateStr, "(") - 1)) + 1
 Range(targetCell).Value = Format(dateSerialNextDay, "M月D日(aaa)")
End Sub
Sub setPreviousDay()
 Dim dateStr As String, targetCell As String
 Dim dateSerialPreviousDay As Long
 targetCell = "A1"
 dateStr = Range(targetCell).Value
 dateSerialPreviousDay = DateValue(Left(dateStr, InStr(1, dateStr, "(") - 1)) - 1
 Range(targetCell).Value = Format(dateSerialPreviousDay, "M月D日(aaa)")
End Sub

日付を文字列として扱うメリットはありませんので、2番目のやり方はオススメできませんが、参考情報として載せました。

また、2番目のやり方の場合、年の部分は実行した年となるので、年末年始に実行した場合に問題が出てくる可能性がありますので、ご注意ください。

参考になれば幸いです。

◎質問者からの返答

2つもありがとうございました。結局、都合があって、何と、2番目を採用させていただきました。感謝です。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ