私は初心者のVBAユーザーですが、複数のタブを持つユーザーフォームを持つブックを作成しました。ユーザーが適切なタブを選択してデータを入力すると、該当するワークシートに転送されます。ワークシートにコマンドボタンがあり、これをクリックすると日付範囲を指定するように求められ、次に、適用可能な各ワークシートから転送されたデータを抽出し、各ユーザーの別々の新しいワークシートに配置します(全員のデータが異なるため)。私がコンパイルした以下のVBAコードは正しく処理されていません。代わりに、1つのワークシートからデータを取り出し、それを新しい個々のワークシートに配置します。複数のシートから新しい複数のシートに抽出されるVBAコード
Sub Copy_Click()
Dim startdate As Date, enddate As Date
Dim rng As Range, destRow As Long
Dim shtSrc1 As Worksheet
Dim shtSrc2 As Worksheet
Dim shtSrc3 As Worksheet
Dim shtDest1 As Worksheet
Dim shtDest2 As Worksheet
Dim shtDest3 As Worksheet
Dim c As Range
Set shtSrc1 = Sheets("Recruiter")
Set shtSrc2 = Sheets("SrRecruiter")
Set shtSrc3 = Sheets("RecruiterSpc")
Set shtDest1 = Sheets("Extract_Recrt")
Set shtDest2 = Sheets("Extract_SrRecrt")
Set shtDest3 = Sheets("Extract_RecrtSpc")
destRow = 2 'start copying to this row
startdate = CDate(InputBox("Input desired start date for report data"))
enddate = CDate(InputBox("Input desired end date for report data"))
'don't scan the entire column...
Set rng = Application.Intersect(shtSrc1.Range("A:A"), shtSrc1.UsedRange)
Set rng = Application.Intersect(shtSrc2.Range("A:A"), shtSrc2.UsedRange)
Set rng = Application.Intersect(shtSrc3.Range("A:A"), shtSrc3.UsedRange)
For Each c In rng.Cells
If c.Value >= startdate And c.Value <= enddate Then
c.Offset(0, 0).Resize(1, 25).Copy _
shtDest1.Cells(destRow, 1)
c.Offset(0, 0).Resize(1, 25).Copy _
shtDest2.Cells(destRow, 1)
c.Offset(0, 0).Resize(1, 25).Copy _
shtDest3.Cells(destRow, 1)
destRow = destRow + 1
End If
Next
End Sub
私が間違ってやっていることを誰にも教えてください。
YES !!!! sooooありがとうございました。これは私が必要としていたものであり、完璧に機能しています。このフォーラムのすべてのユーザーに、他の人を助けるために忙しいスケジュールから時間を割いてくれたことに感謝します。:) –
喜んで助けました。私があなたの質問を満たしていれば、答えとして私の答えを記入してください。ありがとうございます – user3598756
答えとしてあなたの答えを記入する方法がわかりません....私は投稿に特別な何かをする必要がありますか? –