|
まず、
>新しいシートはちゃんとできるのですが、
と
>のシートをSheet2に12月15日分だけ抽出させたいのですが
で、出力先が矛盾しています。
次にコードですが、
>Sub 日付抽出()
>
>'---------------------------宣言セクション(各項目 最大1000件まで格納する)---
>Dim 日付(1000) As Date
>Dim 社員番号(1000) As String
>Dim 担当(1000) As String
>Dim ファイル(1000) As String
>
>
>Dim n As Integer
>Dim i As Integer
>
>Dim mstr As String
>
>Dim WS1 As Worksheet
>Dim WS2 As Worksheet
>Dim TDate As Date
>Dim SName As String
>
>'-----------------------メッセージボックスの表示------------------------------
> mstr = InputBox("何日を抽出しますか?(数字のみ)", "抽出日指定")
ここで「mstr」の値は InputBox に入力された文字で、
”1”とか”43”などの数字(文字列型ですが)になりますよね?
日付にしてやる必要があるのでは?
>
>'----------------------該当データを一旦メモリ上に格納する---------------------
> Set WS1 = ThisWorkbook.Worksheets("Sheet2")
WS1は抽出元のデータになるはずなので"Sheet2"ではなく"Sheet1"ですよね?
>
中略
>'----------------------抽出シート作成----------------------------------------
>
> Sheets.Add After:=Worksheets(Worksheets.Count) '----------シート挿入
> SName = Day(mstr) & "日分" '----------シート名(シート名に『/』は使えない)
> ActiveSheet.Name = SName
>
> Set WS2 = ThisWorkbook.Worksheets(SName)
WS2 が追加シートならこれでいいでしょう。
しかし、WS2 が"Sheet2"なら・・・、わかりますね?
ここから先はあまり見てませんが、
ざっと見た限りではそんなに問題はないように思います・・・
ここまでコードが書けるのであれば
> Set WS1 = ThisWorkbook.Worksheets("Sheet2")
の後に
MsgBox WS1.Name
や
Debug.Print WS1.Name
とか
> TDate = WS1.Cells(i + 1, "A")
の後に
MsgBox Month(TDate) & " " & Month(mstr) & " " & Day(TDate) & " " & Day(mstr)
や
Debug.Print Month(TDate), Month(mstr), Day(TDate), Day(mstr)
のように変数の中身を確認するデバッグ方法を身に付けるといいと思いますよ。
(ブレークポイントを設定するなども良く使われますね)
|
|