1

エクセルのデータベース機能を使用しています。サンプル画像を見る

ここに画像の説明を入力

私はvbaを使用して、「はい」を含むレコードを選択します

Selection.AutoFilter Field:=2, Criteria1:="yes"
Range("B3").Select
Range(Selection, Selection.End(xlDown)).Select

次に、それをコピーして別の場所に貼り付けます。例えば:

Selection.Copy
Range("B12").Select
ActiveSheet.Paste

問題は、はいのレコードがない場合、エラー 1004 が発生することです。おそらく、貼り付けるものが何もないためです。貼り付けるものが何もない場合にサブを終了するようにスクリプトを作成するにはどうすればよいですか?

counta などを試しましたが、成功しませんでした。

あなたの助けは大歓迎です! :)

4

3 に答える 3

0

SUBTOTAL ワークシート関数を使用して、表示されている行をカウントし、表示されている行がある場合にのみコピー アンド ペーストを実行できます。これが例です。

Sub CopyFiltered()

    Dim rToFilter As Range
    Dim rToCopy As Range
    Dim rToPaste As Range

    Set rToFilter = Selection
    Set rToPaste = rToFilter.Cells(1).Offset(10, 0) 'paste it 10 rows down

    rToFilter.AutoFilter 2, "yes"

    'Use subototal to count the visible rows in column 1
    If Application.WorksheetFunction.Subtotal(2, rToFilter.Columns(1)) > 0 Then
        'Copy excluding the header row
        Set rToCopy = rToFilter.Columns(1).Offset(1, 0).Resize(rToFilter.Rows.Count - 1)
        rToCopy.Copy Destination:=rToPaste
    End If

End Sub
于 2013-08-16T14:57:15.217 に答える