Excel VBA質問箱 IV

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

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


7942 / 13645 ツリー ←次へ | 前へ→

【35912】オートフィルタの書き出しについて まだまだ初心者 06/3/15(水) 20:51 質問[未読]
【35924】Re:オートフィルタの書き出しについて kobasan 06/3/16(木) 7:55 発言[未読]
【35953】Re:オートフィルタの書き出しについて まだまだ初心者 06/3/16(木) 18:15 質問[未読]
【35958】Re:オートフィルタの書き出しについて kobasan 06/3/16(木) 19:32 回答[未読]
【35975】Re:オートフィルタの書き出しについて まだまだ初心者 06/3/16(木) 23:13 お礼[未読]

【35912】オートフィルタの書き出しについて
質問  まだまだ初心者 E-MAIL  - 06/3/15(水) 20:51 -

引用なし
パスワード
   どうもよろしくお願いします。
以下のコードで、「コンボボックス絞り込み」で得た値でシート1を、
オートフィルタで絞り込みシート2にコピーしようと思っていますが、
なぜか絞り込まれずにすべてコピーされてしまいます。
どこが間違っているのか分からず苦しんでいます。
どなたかご教授いただければ大変助かります。


Sub 検索データ取得()

Dim i As String
Dim j As Variant
Dim l As Long
Dim m As String


With frm1
i = .cbx絞込み.Text
End With

j = Sheets("1").Range("B116") '絞込みの対象列の指定番号

With Worksheets("1") 'コピー元のシート
.Range("A1").AutoFilter Field:=j, Criteria1:=i
.Range("A1").CurrentRegion.SpecialCells(xlVisible).Copy _
Worksheets("2").Range("A1") 'コピー先のシート

.Range("A1").AutoFilter
End With

【35924】Re:オートフィルタの書き出しについて
発言  kobasan  - 06/3/16(木) 7:55 -

引用なし
パスワード
   おはようございます。

i="a"
j = 1 'A列について '絞込みの対象列の指定番号

With Worksheets("1") 'コピー元のシート
.Range("A1").AutoFilter Field:=j, Criteria1:=i
.Range("A1").CurrentRegion.SpecialCells(xlVisible).Copy _
Worksheets("2").Range("A1") 'コピー先のシート

でやってみて、正常に動きますから、AutoFilterとCopyは正しくできています。
ひょつとしたら、前のデータの消し忘れ出はないですか。
Worksheets("2").cells.clear
を追加してみては。
それでも解決しない場合は、AutoFilterとCopy以外の
>With frm1
>i = .cbx絞込み.Text
>End With
>
>j = Sheets("1").Range("B116") '絞込みの対象列の指定番号
の値が正しいか、チェックしてみてください。


>どうもよろしくお願いします。
>以下のコードで、「コンボボックス絞り込み」で得た値でシート1を、
>オートフィルタで絞り込みシート2にコピーしようと思っていますが、
>なぜか絞り込まれずにすべてコピーされてしまいます。
>どこが間違っているのか分からず苦しんでいます。
>どなたかご教授いただければ大変助かります。
>
>Sub 検索データ取得()
>
>Dim i As String
>Dim j As Variant
>Dim l As Long
>Dim m As String
>
>
>With frm1
>i = .cbx絞込み.Text
>End With
>
>j = Sheets("1").Range("B116") '絞込みの対象列の指定番号
>

Worksheets("2").cells.clear '追加

>With Worksheets("1") 'コピー元のシート
>.Range("A1").AutoFilter Field:=j, Criteria1:=i
>.Range("A1").CurrentRegion.SpecialCells(xlVisible).Copy _
>Worksheets("2").Range("A1") 'コピー先のシート
>
>.Range("A1").AutoFilter
>End With

【35953】Re:オートフィルタの書き出しについて
質問  まだまだ初心者 E-MAIL  - 06/3/16(木) 18:15 -

引用なし
パスワード
    kobasanさん

早速のお返事ありがとうございます。
コードを以下の記述に変更してみましたが、状況は変わりませんでした。
またmsgboxでiとjの値を確認してみましたが、
msgbox上の値は少なくとも表示上はあっていました。
ちなみにこのモジュールは、frm1のcbx絞り込み(コンボボックス)をクリックしたときに動作させています。
やはりどこが違うのか分からず、困っています。

Sub 検索データ取得()

Dim i As String
Dim j As Variant
Dim l As Long
Dim m As String


With frm1
i = .cbx絞込み.Text
End With

j = Sheets("1").Range("B116")

Sheets("2").Cells.Clear

With Worksheets("1") 'コピー元のシート
MsgBox i
MsgBox j
.Range("A1").AutoFilter Field:=j, Criteria1:=i
.Range("A1").CurrentRegion.SpecialCells(xlVisible).Copy _
Worksheets("2").Range("A1") 'コピー先のシート

.Range("A1").AutoFilter
End With

End Sub


【35958】Re:オートフィルタの書き出しについて
回答  kobasan  - 06/3/16(木) 19:32 -

引用なし
パスワード
   ▼まだまだ初心者 さん今晩は。

>このモジュールは、frm1のcbx絞り込み(コンボボックス)をクリックしたときに動作させています。
>やはりどこが違うのか分からず、困っています。

シート1のA列に下記データがあるとして
data1
a
a
b
b
c
c

下記コードの動作を確認しました。

下記コードをUserForm1に貼り付けて確認してください。

Private Sub UserForm_Initialize()
  '''''''''''''''''''''''''''''''''''''''
  '確認が終わったら削除してください
  Me.cbx絞込み.List = Array("a", "b", "c", "d", "e")
  '''''''''''''''''''''''''''''''''''''''
End Sub

Private Sub cbx絞込み_Change()
  検索データ取得
  Worksheets("1").Range("A1").AutoFilter
  Unload Me
  Sheets("2").Select
End Sub

Sub 検索データ取得()
Dim i As String
Dim j As Variant
Dim l As Long
Dim m As String

  i = Me.cbx絞込み.Text

  '''''''''''''''''''''''''''''''''''''''
  '確認が終わったら削除してください
  Sheets("1").Range("B116").Value = 1
  '''''''''''''''''''''''''''''''''''''''
  j = Sheets("1").Range("B116").Value '絞込みの対象列の指定番号

  Sheets("2").Cells.Clear '追加

  With Sheets("1") 'コピー元のシート
    .Range("A1").AutoFilter Field:=j, Criteria1:=i
    .Range("A1").CurrentRegion.SpecialCells(xlVisible).Copy
  End With
  'コピー先のシート
  Sheets("2").Range("A1").PasteSpecial Paste:=xlValues
End Sub

【35975】Re:オートフィルタの書き出しについて
お礼  まだまだ初心者 E-MAIL  - 06/3/16(木) 23:13 -

引用なし
パスワード
   ▼kobasan さん:

丁寧にお返事を戴き大変ありがとうございました。
なぜできなかった理由が分かりました。
cbx絞込みの際に、オートフィルターモードをfalseにしてしまっていたためです。
大変申し訳ありませんでした。


>▼まだまだ初心者 さん今晩は。
>
>>このモジュールは、frm1のcbx絞り込み(コンボボックス)をクリックしたときに動作させています。
>>やはりどこが違うのか分からず、困っています。
>
>シート1のA列に下記データがあるとして
>data1
>a
>a
>b
>b
>c
>c
>
>下記コードの動作を確認しました。
>
>下記コードをUserForm1に貼り付けて確認してください。
>
>Private Sub UserForm_Initialize()
>  '''''''''''''''''''''''''''''''''''''''
>  '確認が終わったら削除してください
>  Me.cbx絞込み.List = Array("a", "b", "c", "d", "e")
>  '''''''''''''''''''''''''''''''''''''''
>End Sub
>
>Private Sub cbx絞込み_Change()
>  検索データ取得
>  Worksheets("1").Range("A1").AutoFilter
>  Unload Me
>  Sheets("2").Select
>End Sub
>
>Sub 検索データ取得()
>Dim i As String
>Dim j As Variant
>Dim l As Long
>Dim m As String
>
>  i = Me.cbx絞込み.Text
>
>  '''''''''''''''''''''''''''''''''''''''
>  '確認が終わったら削除してください
>  Sheets("1").Range("B116").Value = 1
>  '''''''''''''''''''''''''''''''''''''''
>  j = Sheets("1").Range("B116").Value '絞込みの対象列の指定番号
>
>  Sheets("2").Cells.Clear '追加
>
>  With Sheets("1") 'コピー元のシート
>    .Range("A1").AutoFilter Field:=j, Criteria1:=i
>    .Range("A1").CurrentRegion.SpecialCells(xlVisible).Copy
>  End With
>  'コピー先のシート
>  Sheets("2").Range("A1").PasteSpecial Paste:=xlValues
>End Sub

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