- 締切済み
EXCEL VBA 日別データを検索しコピー
度々すいません。行き詰まりましたので教えてください。 エクセルSheet2に月の日別のデータがあります。日によってデータの 行数はまちまちですが、A列には日付、B,C,D列には時間、E列には目的等々があります。そのデータをユーザーフォームのスピンボタンで日付を指定し、コマンドボタンをクリックしたら、Sheet1の1日分の表にコピーしたいのです。また指定日がなければメッセージで指定日がありませんと表示したいのです。よろしくお願いします。 excel2003 Private Sub SpinButton1_Change() TextBox1.Value = Date + SpinButton1.Value End Sub Private Sub CommandButton1_Click() '年月日表示 Range("C3") = Format(TextBox1.Value, "yy") Range("D3") = Format(TextBox1.Value, "mm") Range("E3") = Format(TextBox1.Value, "dd") Range("F3") = Format(TextBox1.Value, "aaa") ここがわかりません Else MsgBox "指定日がありません" End If End Sub
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- excel_abc
- ベストアンサー率20% (1/5)
'標準モジュールに Type myValue A As Date B As Date C As Date D As Date E As String End Type 'フォームに Private Sub CommandButton1_Click() Dim pDate As String Dim oSh(1) As Worksheet Dim i As Long, k As Long Dim LastRow As Long Dim pValue() As myValue ''' TextBox1 = "2008/1/2 19:31" TextBox1 = "2009/1/6 19:31" pDate = Format(TextBox1, "yyyy/mm/dd") Set oSh(0) = Sheets("Sheet1") Set oSh(1) = Sheets("Sheet2") LastRow = oSh(1).Range("A" & oSh(1).Rows.Count).End(xlUp).Row ReDim pValue(0) For i = 1 To LastRow With oSh(1) If Format(.Cells(i, 1), "yyyy/mm/dd") = pDate Then k = k + 1 ReDim Preserve pValue(k) pValue(k).A = .Range("A" & i) pValue(k).B = .Range("B" & i) pValue(k).C = .Range("C" & i) pValue(k).D = .Range("D" & i) pValue(k).E = .Range("E" & i) End If End With Next i If UBound(pValue) = 0 Then MsgBox "指定日がありません。" Else With oSh(0) .Cells.ClearContents For i = 1 To UBound(pValue) .Cells(i, 1) = pValue(i).A .Cells(i, 2) = pValue(i).B .Cells(i, 3) = pValue(i).C .Cells(i, 4) = pValue(i).D .Cells(i, 5) = pValue(i).E Next End With End If Erase oSh End Sub 'でどうでしょうか?