|
こんにちは
もう一度確認します。
データについて
A列から順にデータがあり1行目は項目行で2行目からデータとなる
F列のデータをオートフィルタし抽出する。
コード説明
Private Sub CommandButton1_Click()
Dim Da As Date, Da1 As Date
With Worksheets("Sheet1") 'データシート
'TextBoxの値が日付か如何かを確認
If IsDate(Me.TextBox1.Value) And IsDate(Me.TextBox2.Value) Then
'Format関数でtextBoxの値の書式をセルの書式に変更
Da = Format(Me.TextBox1.Value, .Range("F2").NumberFormat)
Da1 = Format(Me.TextBox2.Value, .Range("F2").NumberFormat)
'コピー先のセルの値をクリア
Worksheets("Sheet2").Cells.Clear
'Sheet1にオートフィルタが設定しているか確認
If .AutoFilterMode = False Then
'ない場合設定
.Rows(1).AutoFilter
End If
'F列の値をオートフィルタで変数DAからDA1までを抽出
.Columns(6).AutoFilter Field:=6, Criteria1:=">=" & Da, Operator:=xlAnd, _
Criteria2:="<=" & Da1
'オートフィルタでデータが抽出されたかを確認
If .Range("F65536").End(xlUp).Row > 1 Then
'抽出されたデータをコピーしSheet2へ貼り付け
.AutoFilter.Range.Copy Worksheets("Sheet2").Range("A1")
Else
'抽出されたデータがない場合MSGBOXを表示
MsgBox "抽出データがありません。", vbInformation
End If
'オートフィルタを解除
.AutoFilterMode = False
Else
'TextBoxの値が日付と判断出来なかった場合MSGBOXを表示
MsgBox "抽出日を確認", vbCritical
End If
End With
End Sub
|
|