• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA 入力日付を取得し、今日までの日数を取得)

VBAで日付を取得し、ループを実行する方法

don9don9の回答

  • ベストアンサー
  • don9don9
  • ベストアンサー率47% (299/624)
回答No.1

何をしたいのかよくわかりませんが、コンボボックスへの値のセットを >For i = 0 To 30 >ComboBox1.AddItem Date - i >Next これでやっているのであれば、ComboBox1.ListIndexの値がそのまま日数になるんじゃないでしょうか。 もしComboBox1.ListIndexで事が済むなら、以下は読み飛ばしていただいてもいいのですが >For i = 0 To SelectDate = Today Step 1 >SelectDate = DateAdd("d", i, SelectDate) '(”d”は日数) >Next 「SelectDate = Today」をループ終了条件とするなら、「For~Next」ではなく「Do Until~Loop」を使います。 例えば以下のような感じです。 J = 0 '変数Jの初期値を0とする Do Until SelectDate = Today SelectDate = DateAdd("d", 1, SelectDate) '(”d”は日数) J = J + 1 'ループするごとにJが1ずつ増える Loop

satoron666
質問者

お礼

回答ありがとうございました! ComboBox1.ListIndexというやり方も知らず、 また、ループの種類の違いも良く分かっていませんでした。 私の言葉足らずな文章で理解して頂き本当にありがとうございます!

関連するQ&A

  • コンボボックスの中身を任意順で並べ替え VBA

    いつも大変お世話になっております。 Excel2003を使用しております。 ユーザーフォームに置いてある コンボボックスのデータの順番が毎回変わるのですが、 指定順に並び替えたいです。 例えば、 東京 大阪 北海道 青森 沖縄 仙台 福岡 という順番でコンボボックスに入っている場合、 北海道 青森 仙台 東京 大阪 福岡 沖縄 という順番に自動で並べ替えたいのです。 項目は必ず全てあるわけではなく、 東京 北海道 だけの場合もあります。(コンボボックスの最後には必ず空白が1行あります) Sub ComboboxNarabi() Dim i As Long Dim j As Long Dim Count As Long Dim Swap As String Dim SortListData As Variant SortListData = Array("北海道", "青森", "仙台", "東京", "大阪", "福岡", "沖縄", "") Count = 0 For j = 0 To UBound(SortListData) For i = 0 To ComboBox2.ListCount - 1 If ComboBox2.List(i) = SortListData(j) Then Swap = ComboBox2.List(Count) '現在の位置の内容をSwapにコピー ComboBox2.List(Count) = ComboBox2.List(i) '現在位置に、検索したワードをコピー ComboBox2.List(i) = Swap 'もとの内容をコピー Count = Count + 1 End If Next Next End Sub なんだか遠回りしているような気もします。 もう少し、良い方法はありますでしょうか? 以上、よろしくお願い致します!

  • コンボボックスで2週間前までの日付を選択したい

    VBA 初心者です。 ユーザーフォーム コンボボックスに 今日から2週間前までの日付を選択できるようにしたいです。 現在、 試行してもコンボボックスには何も表示されません。 ご教授願います。 Private Sub Form_Load() Dim i As Integer For i = 0 To 14 ComboBox5.AddItem Format(Date - i, "yyyy-mm-dd") Next ComboBox5.Text = ComboBox5.List(0) End Sub

  • コンボボックスに日付を表示する

    現在、VB.netを勉強中です。 コンボボックス内に今日から一週間分の日付を表示したいのですが、上手く行きません。 Dim dtToday As DateTime = DateTime.Today ComboBox1.Items.Add(dtToday.ToString()) と書いたところ現在の日付を取得しコンボボックス内に 2013/5/28 00:00 と表示されています。 これを時刻を表示させず(2013/5/28 のみ表示)、For文を用いて一週間分表示させたのですが、どのようにすればよいでしょうか? 分かる方がいれば、よろしくお願いします。

  • エクセルVBA ファイル取得方法?

    エクセル2000のVBAにて 外付ハードディスクにあるファイルを取得しようとして、 下記のように書き込みました。 Private Sub CommandButton1_Click() Dim myFSO As New FileSystemObject Dim myFolder As Folder Dim myFiles As Files Dim myFile As File Set myFolder = myFSO.GetFolder("L:\製品実現プロセス書類\作業標準書\ ComboBox1") Set myFiles = myFolder.Files For Each myFile In myFiles ComboBox2.AddItem myFile.Name Next End Sub Private Sub UserForm_Initialize() Dim myFSO As New FileSystemObject Dim myFolders As Folders Dim myFolder As Folder Set myFolders = myFSO.GetFolder("L:\製品実現プロセス書類\作業標準書\").SubFolders i = 1 For Each myFolder In myFolders ComboBox1.AddItem myFolder.Name Next ComboBox1.ListIndex = 0 '初期値 End Sub コンボボックス1には フォームを開いたときにハードディスクLの製品実現プロセス書類フォルダ内の作業標準書フォルダー内のフォルダをすべてを書き込むようして、 コンボボックス2にはコマンドボタン1をクリックしたときに コンボボックス1で選択したフォルダ内のファイルを取得したいのですがパスが見つかりませんのエラーが出ます。 たぶん、コンボボックス1の書き込み方を間違えていると思いますが わかりません?? 教えていただけないでしょうか?

  • Excel_VBAで、Windows名の羅列

    Excelのウィンドウの名前をコンボボックスのListに設定する方法を模索しています。下記の方法では、上手く行きません。どなたか詳しいかたがいらっしゃいましたら教えて頂けないでしょうか? 宜しくお願い致します。 Private Sub UserForm_Initialize() Dim MyList() As String Dim MyWin As Windows Dim i As Integer ReDim MyList(1 To Windows.Count) i = 1 For Each MySh In Windows MyList(i) = MyWin.Name i = i + 1 Next Me.ComboBox1.List = MyList End Sub

  • Excel VBAライフゲーム

    ExcelのVBAでライフゲームを作りたいのですが、次のプログラムの途中以降がわかりません。 もしよろしければ、このつづきの簡単な実行できるVBAライフゲームを教えてください。 続きのプログラムを教えていただけたら幸いです。 Option Explicit Const ALIVE As Integer = 1 Const DEAD As Integer = 0 Const SIZE As Integer = 19 Const Tmax As Integer = 100 Dim C(SIZE, SIZE) As Integer Sub LifeGame() Dim InitRate As Single Dim T As Integer Dim N As Integer Dim Cnext(SIZE, SIZE) As Integer Dim I As Integer, J As Integer InitRate = -1 Do While InitRate < 0 Or 1 < InitRate Loop For I = 0 To SIZE For J = 0 To SIZE If Rnd() < InitRate Then C(I, J) = ALIVE Else C(I, J) = DEAD End If Next J Next I For T = 1 To Tmax For I = 0 To SIZE For J = 0 To SIZE If C(I, J) = ALIVE Then Cells(I + 1, J + 1).Value = "■" Else Cells(I + 1, J + 1).Vallue = "" End If Next J Next I For I = 0 To SIZE For J = 0 To SIZE N = Count(I, J) Next J Next I For I = 0 To SIZE For J = 0 To SIZE C(I, J) = Cnext(I, J) Next J Next I Next T End Sub Function Count(I As Integer, J As Integer) As Integer End Function

  • キューとコンボボックスの使い方  VB2008

    VB2008を使っています。 キューとコンボボックスの使い方がわからないのですが、以下のソースで (1)キューとデータソースを使う。 Dim queue As Queue = New Queue(20) For i As Integer = 0 to 9 queue.Enqueue( i.ToString() ) Next i ComboBox1.DataSource = queue.ToArray ComboBox2.DataSource = queue.ToArray (2)べたな方法 ComboBox1.Items.Clear() For i As Integer = 0 to 9 ComboBox1.Items.Add( i.ToString() ) Next i ComboBox2.Items.Clear() For i As Integer = 0 to 9 ComboBox2.Items.Add( i.ToString() ) Next i ------------------------ (1) (1)と(2)は厳密にどのように違うのでしょうか? (2) (1)で心配なのは、キューの上限を20にしていて、実際使っているのは10個で後は空です。 この状態で、コンボボックスのDataSourceにセットした場合、(2)と同じように10件だけになっているのでしょうか? (3) (1)は同じキューを使いまわしています。コンボボックス1と2は独立して使えるのでしょうか?(データは同じです。)

  • ExcelVBAコンボボックスの値の入力

    ExcelVBAでマルチページでユーザーフォームを作っています。 マルチページを作製しているシートのシート2とシート3にそれぞれコンボボックスに当てはめる値を入れてあります。 コンボボックス1には「シート2のA2から最後」まで。 コンボボックス2には「シート3のA1から最後」まで。 というように設定してあります。 コードの記述としてはこんな感じでしました。 Private Sub ComboBox1_DropButtonClick() Dim i As Integer Dim lastRow As Integer lastRow = Cells(Row.Count, 1).End(xlUp).Row With ComboBox1 For i = 2 To lastRow If ComboBox1 = "" Then .AddItem Worksheets("Sheet2").Cells(i, 1).Value End If Next i End With End Sub これはコンボボックス1の場合なのですが、2は一部を変えています。 コンボボックスを選択時にシートに記載してある内容は表示されるのですが、行が多い方に引っ張られる感じになっています。 コンボボックス1の方は今のところ30行ちょっとなので、その分のデータが表示されます。コンボボックス2の方は今のところ10行程度なので、全てを表示した後に空白が表示されています。見た感じで、シート3のデータと空白分を合わせて、シート2つまりは、コンボボックス1と同じ分だけ表示しようとしているみたいなのです。 よく分からないエラーなのですが、これを回避する方法はありますでしょうか?

  • オプションボタン選択でコンボボックス有効

    ExcelVBAでユーザーフォームを作成しているのですが、昨日までうまく動作していたことが、突然動かなくなりました。 オプション1を選択 ↓ コンボボックス1有効  ※他のコンボボックスは無効 ↓ オプション2を選択 ↓ コンボボックス2有効  ※コンボボックス1も含め他のコンボボックスは無効 という感じで動作させたいです。 書いたコードはこんな感じです。 Private Sub OptionButton1_Click () Dim i As Long Dim lastRow As Integer lastRow = Cells(Row.Count, 1).End(xlUp).Row If OptionButton1.Value = True Then OptionButton1.Enabled = True With ComboBox1 If ComboBox1 = "" Then For i = 2 To lastRow .AddItem Worksheets("sheet1").Cells(i, 1).Value Next i End If End With ComboBox1.ListIndex = 0 ComboBox2.Enabled = False ComboBox3.Enabled = False End If End Sub コードの間違いや改善点などありましたら教えて下さい。 よろしくお願いします。

  • Excelのワークシートでのコンボボックスについて

    Excelのワークシートでコンボボックスを設定する方法を教えてください。 「フォームコントロール」と「ActiveXコントロール」の違いがわかりません。 添付の画像の通りコンボボックスに西暦を入力(別シートに入力済みの値を表示するように設定)してあるのですが、ファイルを保存しているにも関わらず、再度ファイルを開くとコンボボックスの中のリストは空欄になってしまいます。 今は「ActiveXコントロール」のコンボボックスで設定しています。 コードは以下のように設定してみたのですが、設定内容や設定箇所が違うのでしょうか? ////////////////////////////////////////////////////// Private Sub ComboBox1_DropButtonClick() Dim sh As Worksheet Set sh = Worksheets("マクロ") Dim i As Integer Dim lastRow As Integer lastRow = sh.Cells(Rows.Count, 1).End(xlUp).Row With ComboBox1 For i = 2 To lastRow If ComboBox1 = "" Then .AddItem sh.Cells(i, 1).Value End If Next i End With End Sub ////////////////////////////////////////////////////// コンボボックスのリストの内容が消えてしまうので、 コードの内容は同じで以下のところにもコードを書いてみました。 ////////////////////////////////////////////////////// Private Sub Worksheet_Activate() Dim sh As Worksheet Set sh = Worksheets("マクロ") Dim i As Integer Dim lastRow As Integer lastRow = sh.Cells(Rows.Count, 1).End(xlUp).Row With ComboBox1 For i = 2 To lastRow If ComboBox1 = "" Then .AddItem sh.Cells(i, 1).Value End If Next i End With End Sub ////////////////////////////////////////////////////// なんだかもう、訳がわからずぐちゃぐちゃです。 コンボボックスの中に値が入っていると、実行ボタンをクリックしたときは正常にやりたい結果を出すことが実現できます。 ファイルを閉じた後に再度開いてもコンボボックスの中に値があるようにするにはどうしたらよいのか、ド素人の私にご教授いただきたくお願いいたします。