|
▼ponpon さん:
ありがとうございます。
>>Sub TEST()
>> With Worksheets("データベース")
>> .Range("A1").AutoFilter Field:=6, Criteria1:="外来"
>> With .AutoFilter.Range
>> .Columns(2).Offset(1).Resize(.Rows.Count - 1) _
>> .SpecialCells(xlCellTypeVisible).Copy _
>> Worksheets("抽出外来").Range("A1")
>> End With
>> .AutoFilterMode = False
>> End With
>>End Sub
>
上記のコードでは、入院・外来全ての患者さんの名前が抽出されました。
>>
>>Sub TEST2()
>> Worksheets("抽出外来").Cells.ClearContents
>> With Worksheets("データベース")
>> .AutoFilterMode = False
>> .Range("A1").AutoFilter Field:=6, Criteria1:="外来"
>> With .AutoFilter.Range ' 此処にブレークポイントでフィルターの
>> ' 結果を見てください。
>> .SpecialCells(xlCellTypeVisible).Copy _
>> Worksheets("抽出外来").Range("A1")
>> End With
>> .AutoFilterMode = False
>> End With
>>End Sub
この上のコードでは、名前だけでなく、他のデータ(年齢とか)も全てコピーされていました。
データベースは、Fの列が入院・外来のセルになっているので「Field:=6」で合っていると思います。このデータベースはユーザーフォームによって入力・削除できるようにしているので、それに原因があるのでしょうか?入院・外来の部分はユーザーフォーム上のオプションボタンで選択して"入院""外来"が入力されるように設定しています。
|
|