
大変お世話になっております。
F列(5桁ほどの数字)を起点として、FE列程まであるデータを営業日に入力しています。
その作業後、入力を行ったF列の行だけ、FJ列に、『本日の日付』(Today関数?のようにファイルを開くと、日付が変わるといけないため、ファイルを開いても変更しない固定した日付)を入力するVBAを作成したいです。
2023/3/1といった日付です。(時間は必要ありません)
コードをお教えいただけると大変有難いです。(Win11 Office365です)
ご回答を心よりお待ちしております。
どうぞ宜しくお願い申し上げます。
No.7ベストアンサー
- 回答日時:
>F列(5桁ほどの数字)を起点として、FE列程まである
>データを営業日に入力しています。
ということなので、営業日ごとに行が複数行追加されていき、当日追加された行のFJ列に「処理日当日」の日付を入れたいというご希望だと理解しました。
ご質問者の表の全体構成および実施内容の全体像が不明で、このご質問は全体の実行内容の一部ということですので、多少荒っぽい処理になります。つまり、「とりあえずできる」レベルの回答になってしまいます。
仮に一行目が見出しで2行目から入力が開始されているものとし、F列にデータ入力開始行から最終入力行までの中間に空白セルはないものとした場合、ご質問者のお考えのとおり、FJ2セルに以下のように、「今日」を返す関数を入れて、下方向へコピーし、セルの表示形式は日付にしておきます。
FJ2:=IF(F2="","",TODAY())
これで、F列に5桁ほどの数字が入力された段階で、入力日当日の日付が表示されます。ただ、ご質問者の懸念のとおり、
>Today関数のようにファイルを開くと、日付が変わるといけない
という課題があります。TODAY関数のままでは、ファイルを保存して、開くたびに、開いた日付に変わっていってしまいます。
そこで、VBAを使って、TODAY関数を値に変換してしまうという方法をとります。仮に、ご質問者の説明がsheet1の説明だとすると、
Sub input_date()
Dim i As Long
With Sheets(1) '対象シートを指定
i = 2 'データ開始行
Do While .Cells(i, "FJ").Value <> "" '空白行(未入力行)になるまで
.Cells(i, "FJ").Value = .Cells(i, "FJ").Value '値にする
i = i + 1
Loop
End With
End Sub
というコードを実行すれば、その日入力した分までの日付が値に変換されます。このコードはもともと値になっているものも値に変換しますので、無意味なことをやっているわけですが、最初に述べたとおり、ご質問者の表の全体構成および実施内容の全体像が不明で、このご質問は全体の実行内容の一部ということですので「とりあえずできる」というレベルの回答です。
また、そのようなケースがあるかどうか不明ですが、夜中の0:00を跨ぐようなF列への入力があれば、TODAY関数を記述したセルは一斉に新しい日付に変更されますので、上記コード実行前であれば、一連の入力作業中のセルは既に表示されていたセルの日付も最新の日付に更新されます。その後上記コードを実行すれば、一連の入力作業の最終終了日付が表示されるということになります。
goomania様…!
大変お世話になっております…!
ご記載をくださいましたコードを使わせていただきました!
『F列(5桁ほどの数字)を起点として、FE列程まである
データを営業日に入力しています。
ということなので、営業日ごとに行が複数行追加されていき、当日追加された行のFJ列に「処理日当日」の日付を入れたいというご希望だと理解しました。』
仰ってくださいました通りです…! 本当に有難うございます!
先ほどでしたので、2023/3/3と該当セル(セルFJ2~)に入力が出来ました!
VBAでの作業がどうしても必要ですので、有難い限りです!
日付をまたいで明日再度goomania様のコードを使わせていただきます!
何かありましたら是非宜しくお願い申し上げます…!
goomania様! いつも心より感謝しております…!
お手数をお掛けしてしまいまして大変恐縮ですが、引き続きどうぞ宜しくお願い申し上げます…!
No.6
- 回答日時:
どうしてもマクロで処理したいのであれば、間違って記入済みの個所に入力してしまった時の処理も考えましょう。
質問文ではそこまでの言及がありません。
ですので自分はマクロでの作業をお勧めすることができないんです。
(誤入力対策で、自分なら入力後に日付入力のセルにジャンプしてそこで手動で日付を入力するようにする。誤入力ならその段階で入力し直すかアンドゥで誤入力そのものをキャンセルすれば良い)
・・・
「代わりに作ってください」という事であれば、お金を払って専門家に依頼しましょう。
ここは自力で問題を解決できるようなアドバイスをもらう場所です。
No.5
- 回答日時:
その程度のことなら、わざわざVBAで書く必要はなくて、
当該セルの編集で、セルの中を =TODAY() まで書いてEnterではなくF9で更新すれば、値として定まります。
どうしてもVBAで書きたいのなら、Range("FJ1:FJ255")=Date とでもしておけば、そのマクロを再実行しない限り値は変わりません。
No.4
- 回答日時:
こんばんは
VBAで処理する必要があるかは分かりませんが
変えないのであれば手入力(ショートカットキーなどを使い)が簡単で速いです
以下はVBAの記載に反応しました
残念ながら補足いただいても私が回答できるかは分かりません
なさりたい事の要件が良く解らないので本来は回答するべきでないかも知れませんが、いくつか補足が必要と存じます
関数も同様ですがVBA(プログラム)の場合、実行トリガーを示す必要があります
Excel関数(Today関数?)の場合に日付が変わるのは、シートの自動計算が実行される為です
つまりは、VBAでも 《どのタイミングで》 「固定した日付」を対象範囲に入力するかで変わります
VBAのトリガー(処理の実行起点)はボタンのクリックイベントやシートの複数イベント・・・シートがアクティブなるタイミング、ブックを開いたり閉じたり、保存するタイミングなどなど・・多くあります
コードを書いてほしいと言う事は分かりますが、どのタイミングで実行するのか また現在どの程度のコードを書いている(書ける)のかなどが解らないと どこからどこまで回答すれば良いのか、・・・
限定的(提示の条件のみで正しく処理される)コードでその場限りで良いのか、それとも ご質問条件はダミーで実際に使う為には自身である程度(すぐに)の改修が必要なのか・・・
使いたいだけなのか?学習したいのか?などを回答者は想像する必要があり
結果、有益な回答を理解出来なかったり、間違えのある回答を選んで苦しむ結果になる事もあると思います
本来、プログラムコードなどやアドバイスが必要な場合、
ご質問者様のスキルやコードの趣向などが回答者に伝わるようにするのが良いと思います。スキルが大きく違う回答をしても無駄になる場合が多いのではと思いますから・・
以上のことなどから、現在自身で書いて問題を生じているVBAコードや具体的な躓きポイントを示されるのが良いと思いますよ
余計な事ですが
もし、学習目的などで無く、やりたい事を書いて処理コードを書いてもらいたいだけであれば、最低でもVBAの要件定義について 少しだけ学習する事をお勧めします
もっとも要件定義が完璧ならば、要件をChat GPTに投げ【最近のはやり?】、出来上がった処理コードを自身で検証して(簡単なデバッグ)問題が発生した事象についてQAサイトにご質問すれば・・・コードの難しい事が分からくともコピペ程度の検証で目的が達成できそうですね・・・・
長文で申し訳ありませんが、今一度 ご質問を整理され要件をゼロからコンプリートまで順を追って確認(定義)してみてください
既に回答されている内容を考察するべきと思います
(補足が付く前に書きました)
であれば、#3様の回答で実現できると思います
No.3
- 回答日時:
こんばんは
データが始まるのがどの行からか不明なので、1行目からと仮定。
Range("FJ1").Resize(Cells(Rows.Count, 6).End(xlUp).Row).Value = Format(Now, "yyyy/m/d")
fujillin様…!
大変お世話になっております!
夜分に本当に申し訳ございません…。
週ごとにシートを作成しており、営業日ベースで集計をしています。
ほとんど毎日作業をしてるため、同じシート内で、日々行が増えていきます…。
例えば2023/3/1の作業後に続けて、その下の行に2023/3/2といった形式にさせていただくことは可能でしょうか…!
日により行数の増減があるため、セルFJ〇〇と固定出来ず大変申し訳ございません…。
ご回答をくださいましたVBAは1行目からですと、非常に上手くいきました!
いつも深く感謝しております…!
fujillin様のお時間のある折に、是非ご回答をお待ちしております!
お手数をお掛けしてしまいまして大変恐縮ですが、引き続きどうぞ宜しくお願い申し上げます…!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) Excelで該当しない項目(#N/Aの商品名)を簡単に表示・抽出させる方法についてです 1 2022/08/25 22:12
- Excel(エクセル) Excelシフト表 固定シフトの自動変換化 1 2022/04/14 16:10
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- Visual Basic(VBA) Excel VBA マクロ ある列の最終行迄を参照し、別の列の空白セルに値を入力したいです 2 2023/03/05 02:44
- Excel(エクセル) Excel_マクロ_アクティブシートのVLOOKUPで表示された#N/A以外の行に色付けをしたいです 3 2023/02/17 00:40
- Excel(エクセル) ある言葉が含まれている一つの文(フレーズ)のみに色付けをしたいです 2 2022/07/29 23:12
- Excel(エクセル) Excel 値を返す数式についてです 3 2022/11/21 20:08
- その他(Microsoft Office) Excel2019と365、2021 2 2023/07/08 06:22
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) セルに特定の色が出た時だけ、式を発動させたい 4 2022/06/17 10:32
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マクロボタンを押すと、ファイ...
-
日付の大小の表現
-
「24日の0時」って・・・
-
差し込み印刷に当日の日付が入...
-
「時間」、「期日」、「日付」...
-
回覧板の日付について質問です...
-
Excelについて
-
差込印刷 縦書きで和暦(漢数...
-
エクセルで日付別にシートを分...
-
メールの返信が間違ってるので...
-
エクセル マクロ 名前を付けて...
-
エクセルで日付け表示で、明治...
-
ACCESSで日付ごとに自動連番(...
-
EXCELで日付を****年上期、****...
-
2つの日付の中間の日付 エク...
-
AccessのDMax関数の複数条件式...
-
Access 使用期限を設定するこ...
-
Excel2007の入力規則に関する質問
-
アマゾンアソシエイトのレポー...
-
ACCESSVBAのseekで複数INDEX検...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マクロボタンを押すと、ファイ...
-
「24日の0時」って・・・
-
回覧板の日付について質問です...
-
日付の大小の表現
-
差し込み印刷に当日の日付が入...
-
「時間」、「期日」、「日付」...
-
エクセル マクロ 名前を付けて...
-
エクセルで日付別にシートを分...
-
EXCELで日付を****年上期、****...
-
履歴書の日付間違いで落ちますか。
-
Excelについて
-
フォームの値をクエリーに反映...
-
エクセルで6ヵ月後を自動入力で...
-
会社や役所などに提出する書類...
-
日付以外のデータを抽出したい...
-
ACCESSで日付ごとに自動連番(...
-
エクセルで日付け表示で、明治...
-
Excelで1週間毎の集計(今週と...
-
Excelでヘッダに前日の日付を表...
-
2つの日付の中間の日付 エク...
おすすめ情報
皆様、ご回答をくださいまして本当に有難うございます。
作業の工程で複数のマクロを組んでおり、その中のひとつとしてコードを組み入れるため、質問をさせていただきました。(質問内容を含み、最終的にひとつのマクロに仕上げたいと考えております…)大変申し訳ございません…。
引き続き、ご回答をお待ちしております。
どうぞ宜しくお願い申し上げます。