先日のマクロ問題の模範解答というかひとつの方法としてエクセル標準機能の「オートフィルター」を使った回答が今月号に載っていました。
Sub マクロQ1()
Selection.AutoFilter
Selection.AutoFilter field:=4, Criteria1:="<>"
ActiveWindow.SelectedSheets.PrintOut copies:=1, collate:=TrueEnd Sub
なるほどねえ、こっちのほうが早い、さすがプロですね、単に記録機能を使っただけという至極簡単なもので単純明快。
素人は人が作ったもののあらを探すのは比較的よくやります、ということで作ったのが下、上の状態ではカーソルが表の中の空白セル以外のどこかにないと動かないのです、それから印刷が終わったらフィルターを解除することにしました。
Sub マクロQ1()
With Range(Cells(2, 1), Cells(18, 6)) 'フィルターの範囲を指定
.AutoFilter field:=4, Criteria1:="<>" '単価欄を指定
.PrintOut copies:=1, collate:=True
.AutoFilter 'フィルター解除
End With
End Sub
とかく少しマクロが書けるようになると「らしい」ものを書こうとするのが人情、策を弄すると言うか策に溺れると言うか・・、なるべく標準機能を使わないで結果を出そうとあれこれやってしまいます、まあそれが大いなる楽しみなのですが。
Sub マクロQ1()
Selection.AutoFilter
Selection.AutoFilter field:=4, Criteria1:="<>"
ActiveWindow.SelectedSheets.PrintOut copies:=1, collate:=TrueEnd Sub
なるほどねえ、こっちのほうが早い、さすがプロですね、単に記録機能を使っただけという至極簡単なもので単純明快。
素人は人が作ったもののあらを探すのは比較的よくやります、ということで作ったのが下、上の状態ではカーソルが表の中の空白セル以外のどこかにないと動かないのです、それから印刷が終わったらフィルターを解除することにしました。
Sub マクロQ1()
With Range(Cells(2, 1), Cells(18, 6)) 'フィルターの範囲を指定
.AutoFilter field:=4, Criteria1:="<>" '単価欄を指定
.PrintOut copies:=1, collate:=True
.AutoFilter 'フィルター解除
End With
End Sub
とかく少しマクロが書けるようになると「らしい」ものを書こうとするのが人情、策を弄すると言うか策に溺れると言うか・・、なるべく標準機能を使わないで結果を出そうとあれこれやってしまいます、まあそれが大いなる楽しみなのですが。