質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

解決済

2回答

1864閲覧

指定した日付の間の日付

care_raisu

総合スコア7

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

0クリップ

投稿2020/03/19 04:43

前提・実現したいこと

お世話になります。

会社で行先表示板を作るためのデータベースを作っています。
マスターのほうにVlookupでデータベースから引っ張ってくる簡単なものです。

ただデータベースなのですがユーザーフォームのtxt日付1というTextBoxに始まる日にち、
txt帰社日というTextBoxに帰社日を入力するようにしていて
その2つの間の日をC列の一番後ろに追加で増やしたいのです。
(3/1~3/5の間の日付等)

間の日付を出すことができても追加していくことができません、、
どうすれば追加していくことができるのでしょうか?
説明がわかりにくく申し訳ないですが教えていただきたいです。。

CDE
1行先日社員番号予定
23/11234出張
33/21234出張
43/31234出張
53/41234出張
............

イメージ説明

該当のソースコード

Private Sub btm登録_Click() Dim Date1 As Date Dim Date2 As Date Dim i If Me.txt日付1.Text = "" Then MsgBox "行先日が入力されていません" ElseIf Me.txt社員番号.Text = "" Then MsgBox "社員番号が入力されていません" End If Date1 = Me.txt日付1.Text Date2 = Me.txt帰社日.Text For i = 0 To DateDiff("d", Date1, Date2) Worksheets("予定表").Cells(i + 1, 3) = DateAdd("d", i, Date1) Next i Unload Me End Sub

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nanami12

2020/03/19 05:05

指定した日付の間の日付。。。 GUI で 設定する場合 どこと どこを 設定したいのですか? はっきりいって何がやりたいのか全くわかりません。 文章を推敲し質問を整理して下さい。
yureighost

2020/03/19 05:17

ちょっとわかりにくいですが、説明とソースを読んだ限りの推測ですが。 行先日と帰社日を設定したら、 その間の日付を一日毎に全て埋めて (行先日:3/1で帰社日:3/5だったら、3/1、3/2、3/3、3/4、3/5) 表示させたいというような意味でいいんでしょうかね?
guest

回答2

0

その2つの間の日をC列の一番後ろに追加で増やしたいのです。

下記のようなことでしょうか。

vba

1 Dim LastRow As Long 2 3 LastRow = Worksheets("予定表").Cells(Rows.Count, 3).End(xlUp).Row 4 For i = 0 To DateDiff("d", Date1, Date2) 5 Worksheets("予定表").Cells(i + LastRow + 1, 3) = DateAdd("d", i, Date1) 6 Next i 7

投稿2020/03/19 05:17

hatena19

総合スコア33699

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

care_raisu

2020/03/19 06:21

ありがとうございます。 汲み取って頂きありがとうございます。 そちらのコードでできました。 こんな見やすくできるとは、、本当にありがとうございます。
guest

0

ベストアンサー

おそらく現在の最終行を求めてそのあとに追加していきたいという要件と推察したので、簡単に修正してみました。
動作確認はしていませんのであしからず。

VBA

1Private Sub btm登録_Click() 2 Dim Date1 As Date 3 Dim Date2 As Date 4 Dim i 5 Dim lastrow 6 If Me.txt日付1.Text = "" Then 7 MsgBox "行先日が入力されていません" 8 ElseIf Me.txt社員番号.Text = "" Then 9 MsgBox "社員番号が入力されていません" 10 End If 11 Date1 = Me.txt日付1.Text 12 Date2 = Me.txt帰社日.Text 13 lastrow = Worksheets("予定表").Cells(Rows.Count, 3).End(xlUp).Row 14 For i = 0 To DateDiff("d", Date1, Date2) 15 Worksheets("予定表").Cells(i + 1 + lastrow, 3) = DateAdd("d", i, Date1) 16 Next i 17 Unload Me 18End Sub

投稿2020/03/19 05:15

ttyp03

総合スコア16998

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

care_raisu

2020/03/19 06:19

ありがとうございます! そちらでできました。大変わかりにくい質問で申し訳なかったです。 汲み取って頂きありがとうございます。 LastRowの変数は使っていたのですがそこにいれればよかったんですね、、 ありがとうございます、、
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問