- ベストアンサー
エクセル表引きで特定番号を除外するマクロ
- エクセルの表引きで二つのシートを両面印刷するマクロに特定の番号を除外するアレンジを追加したいです。
- 個人番号の連番を指定し、特定の番号だけ印刷から外すようなコマンドを作成したいです。
- 指定した番号を除外して、エクセルの表引きを両面印刷するためのマクロの作成方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
1.空きセルを使う場合 仮にセル番号を"A1"とします、 念のため書式設定で「文字列」にしておきます セルA1 に'-5-12-25- と入れます ------------------------ Sub 票印刷() Sheets("個人票").Range("個人番号") = Sheets("個人票").Range("自") Sheets("個人票裏").Range("個人番号イ") = Sheets("個人票裏").Range("自イ") hazu = range("A1").value '<-「A1」は実際の空きセルに変えてください Do While Sheets("個人票").Range("個人番号") <= Sheets("個人票").Range("至") if InStr(1, hazu, "-" & Sheets("個人票").Range("個人番号") & "-") = 0 then Sheets(Array("個人票", "個人票裏")).PrintOut endif Sheets("個人票").Range("個人番号") = Sheets("個人票").Range("個人番号") + 1 Sheets("個人票裏").Range("個人番号イ") = Sheets("個人票裏").Range("個人番号イ") + 1 Loop End Sub ----------------------- 2.空きセルを使わない場合 ----------------------- Sub 票印刷() Sheets("個人票").Range("個人番号") = Sheets("個人票").Range("自") Sheets("個人票裏").Range("個人番号イ") = Sheets("個人票裏").Range("自イ") hazu = "-5-12-25-" '<- この場合は変更のつど書き直さなければなりません Do While Sheets("個人票").Range("個人番号") <= Sheets("個人票").Range("至") if InStr(1, hazu, "-" & Sheets("個人票").Range("個人番号") & "-") = 0 then Sheets(Array("個人票", "個人票裏")).PrintOut endif Sheets("個人票").Range("個人番号") = Sheets("個人票").Range("個人番号") + 1 Sheets("個人票裏").Range("個人番号イ") = Sheets("個人票裏").Range("個人番号イ") + 1 Loop End Sub ----------------------- という事です InStr関数について InStr(開始位置,文字A,文字B) で、文字Aの中に文字Bが有るかどうかを検索します 有った場合は、何文字目に有ったかを数値で返します 例えば、 開始位置=1、文字A="-5-12-25-"、文字B="-12-"だと 「3」が返ってきます 無かった場合は、「0」(ゼロ)が返ってきます このマクロでは、番号の前後に「-」を付ける事によって「1」と「11」を区別できるようにしています
その他の回答 (1)
- ASIMOV
- ベストアンサー率41% (982/2351)
いろいろなやり方が考えられますが 一例として.. hazu = "-5-12-25-" ' 外す人の番号をこの様に設定します ' この場合は5番と12番と25番 ' 空きセルに書き込んでおいて、hazu に読み込んでもいいです Do While Sheets("個人票").Range("個人番号") <= Sheets("個人票").Range("至") if InStr(1, hazu, "-" & Sheets("個人票").Range("個人番号") & "-") = 0 then Sheets(Array("個人票", "個人票裏")).PrintOut endif Sheets("個人票").Range("個人番号") = Sheets("個人票").Range("個人番号") + 1 Sheets("個人票裏").Range("個人番号イ") = Sheets("個人票裏").Range("個人番号イ") + 1 Loop
補足
ASIMOV 様 ありがとうございました。 お手数ですが、初心者用に具体的な手順を教えていただけないでしょうか。 個人票シートの空きセルにhazu = "-5-12-25-"と入力し、教えていただいたマクロを標準モジュールに貼り付けただけですが、コンパイルエラーとなります。 InStr関数を調べましたが具体的な操作がわかりません。 恐縮ですがよろしくお願いします。
お礼
ASIMOV 様 早速ご回答いただきましてありがとうございました。 とてもわかりやすい説明のお陰で成功しました。 お手数をおかけしまして申し訳ありませんでした。 簡単で恐縮ですが、お礼申し上げます。