Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


10122 / 13644 ツリー ←次へ | 前へ→

【23547】フィルタでの抽出,貼り付け kao 05/3/27(日) 18:18 質問[未読]
【23549】Re:フィルタでの抽出,貼り付け ponpon 05/3/27(日) 21:52 発言[未読]
【23558】Re:フィルタでの抽出,貼り付け kao 05/3/28(月) 12:35 質問[未読]
【23570】Re:フィルタでの抽出,貼り付け ponpon 05/3/28(月) 20:33 発言[未読]
【23571】Re:フィルタでの抽出,貼り付け kao 05/3/28(月) 23:10 質問[未読]
【23572】Re:フィルタでの抽出,貼り付け ponpon 05/3/28(月) 23:20 回答[未読]
【23575】Re:フィルタでの抽出,貼り付け ponpon 05/3/28(月) 23:41 回答[未読]
【23578】Re:フィルタでの抽出,貼り付け kao 05/3/28(月) 23:56 お礼[未読]

【23547】フィルタでの抽出,貼り付け
質問  kao  - 05/3/27(日) 18:18 -

引用なし
パスワード
   初めての投稿のVBA初心者です。
ただいま,次のようなものを作ろうと考えています。

"sheet1"に入力したデータを"sheet2"の一番下行にコピーし"sheet2"で日付と顧客名でフィルタをかけたものを,"sheet3"に貼り付け印刷するというものです。
"sheet1"には日付,顧客名,商品の列があり行数はその都度変動します。また,フィルタでかける日付は、○月△日〜□月×日といういうものです。"sheet2"はデータベース的なシートとなっています。

どなたかご返答をお待ちしております。

【23549】Re:フィルタでの抽出,貼り付け
発言  ponpon  - 05/3/27(日) 21:52 -

引用なし
パスワード
   ▼kao さん:
ponponです。こんばんは。

>"sheet1"に入力したデータを"sheet2"の一番下行にコピーし"sheet2"で日付と顧客名でフィルタをかけたものを,

 これでは、sheet1とsheet2が同じ物になってしまうのではないでしょうか?
 sheet1は、入力専用にするか。ユーザーフォームを用いてsheet2に直接入力するようにした方がよいのでは?

>"sheet3"に貼り付け印刷するというものです。
 
 これは、後回しにして、

>また,フィルタでかける日付は、○月△日〜□月×日といういうものです。

 どのような方法でフィルターをかけるのでしょうか。
 sheet2の特定のセルで?
 ユーザーフォームで?

 もう少し詳しい説明をしないとレスは難しいと思います。

以下コードは、
 testは、sheet1のA2からC2に入力した日付,顧客名,商品を
 sheet2の2行目から最下行に追加していきます。
 test2は、上記のようにして追加したsheet2にオートフィルターをかけ、
 日付と名前で抽出し、sheet3に貼り付けます。
 検討してください。
 sheet2の一行目には、日付,顧客名,商品が見出しとして入っている物とします。

Sub test()
  Dim myVal As Variant
  
  myVal = Worksheets("sheet1").Range("A2:C2").Value
  Worksheets("sheet2").Range("A65536").End(xlUp).Offset(1, 0).Resize(1, 3).Value = myVal


End Sub

Sub test2()
    
     Worksheets("sheet3").Range("A1").CurrentRegion.ClearContents
 
  With Worksheets("sheet2")
    .Range("A1").CurrentRegion.AutoFilter Field:=1, Criteria1:=">=2005/3/4", Operator:=xlAnd, _
     Criteria2:="<=2005/3/6"
    .Range("A1").CurrentRegion.AutoFilter Field:=2, Criteria1:="三郎"
    .Range("A1").CurrentRegion.Copy
    
     
     Worksheets("sheet3").Range("A1:C1").PasteSpecial
    
     Range("A1").CurrentRegion.AutoFilter
     Application.CutCopyMode = False
  End With

End Sub

【23558】Re:フィルタでの抽出,貼り付け
質問  kao  - 05/3/28(月) 12:35 -

引用なし
パスワード
   ▼ponpon さん:
ありがとうございます。情報が足りなくてすみませんでした。

> sheet1は、入力専用にするか。ユーザーフォームを用いてsheet2に直接入力するようにした方がよいのでは?

その通りです。sheet1は情報入力用で数行一度に入力します。そしてそれらのセルをデータをためていくsheet2の最下行に足していくというものです。

>>また,フィルタでかける日付は、○月△日〜□月×日といういうものです。
>
> どのような方法でフィルターをかけるのでしょうか。
> sheet2の特定のセルで?
> ユーザーフォームで?

フィルターはユーザーフォームに日付と顧客名を入力していただいてかけようと考えています。その後、抽出したデータを印刷専用の定型となっているsheet3に貼付、印刷というものです。どうか宜しくお願いします。

【23570】Re:フィルタでの抽出,貼り付け
発言  ponpon  - 05/3/28(月) 20:33 -

引用なし
パスワード
   ▼kao さん:
ponpon です。こんばんは。

>その通りです。sheet1は情報入力用で数行一度に入力します。そしてそれらのセルをデータをためていくsheet2の最下行に足していくというものです。

testを試して頂きましたでしょうか?
何行ずつ入力するか知りませんが、今の仕様は一行(A2〜C2)をsheet2に
入力するようになってます。

Sub test()
  Dim myVal As Variant
  myVal = Worksheets("sheet1").Range("A2:C2").Value
  Worksheets("sheet2").Range("A65536").End(xlUp).Offset(1, 0) _
                   .Resize(1, 3).Value = myVal
End Sub

>フィルターはユーザーフォームに日付と顧客名を入力していただいてかけようと考えています。その後、抽出したデータを印刷専用の定型となっているsheet3に貼付、印刷というものです。どうか宜しくお願いします。

test2の日付の部分をtextbox1.text とtextbox2,text
名前の部分をtextbox3.textに変えて、コマンドボタンで実行してください。

【23571】Re:フィルタでの抽出,貼り付け
質問  kao  - 05/3/28(月) 23:10 -

引用なし
パスワード
   ▼ponpon さん:
ponponさんお忙しい中ありがとうございます。テストをしてみたのですがtest1はうまくいきますが,test2の方はsheet2の1行目だけがsheet3に移るだけというものになってしまいます。下記のコードです。フィルターにかかったアクティブな領域が移るはずですよね。

Private Sub CommandButton1_Click()
  
     Worksheets("sheet3").Range("A1").CurrentRegion.ClearContents
 
  With Worksheets("sheet2")
    .Range("A1").CurrentRegion.AutoFilter Field:=1, Criteria1:=">=textbox1.text", Operator:=xlAnd, _
     Criteria2:="<=textbox2.text"
    .Range("A1").CurrentRegion.AutoFilter Field:=2, Criteria1:="textbox3.text"
    .Range("A1").CurrentRegion.Copy
  
  
     Worksheets("sheet3").Range("A1").PasteSpecial
  
     Range("A1").CurrentRegion.AutoFilter
     Application.CutCopyMode = False
  End With

End Sub

【23572】Re:フィルタでの抽出,貼り付け
回答  ponpon  - 05/3/28(月) 23:20 -

引用なし
パスワード
   ponponです。
ユーザーフォームで指定した条件で、マクロでなく、手動で
オートフィルターをかけてみてください。

【23575】Re:フィルタでの抽出,貼り付け
回答  ponpon  - 05/3/28(月) 23:41 -

引用なし
パスワード
   ponponです。こちらに変えてください。
""で囲むとTextBox1.Textで検索します。

Private Sub CommandButton1_Click()
     Dim Adate As String
     Dim Bdate As String
     Dim myName As String
    
     Adate = Me.TextBox1.Text
     Bdate = Me.TextBox2.Text
     myName = TextBox3.Text
    
     Worksheets("sheet3").Range("A1").CurrentRegion.ClearContents
  With Worksheets("sheet2")
    .Range("A1").CurrentRegion.AutoFilter Field:=1, Criteria1:=">=" & Adate, Operator:=xlAnd, _
     Criteria2:="<=" & Bdate
    .Range("A1").CurrentRegion.AutoFilter Field:=2, Criteria1:=myName
    .Range("A1").CurrentRegion.Copy
 
 
     Worksheets("sheet3").Range("A1").PasteSpecial
 
     Range("A1").CurrentRegion.AutoFilter
     Application.CutCopyMode = False
  End With

End Sub

【23578】Re:フィルタでの抽出,貼り付け
お礼  kao  - 05/3/28(月) 23:56 -

引用なし
パスワード
   ▼ponpon さん:
ponponさんありがとうございました。うまくいきました。素早いレスに感謝いたします。この掲示板にも感謝します。

10122 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free