セルに値のあるものだけを検索して印刷するには?

Question 40.2 Previous Next
初めまして、こんにちは。DB操作のマクロ質問です。
               <こんな質問ばかりだと思うので、申し訳ないのですが・・・
内容は請求書発行と似ているのですが、DBのキーとなるセルに空白がある場合、その行を無視して、セルに値のあるものだけを検索して印刷する場合、どうしたらよろしいですが?

それとこれからVBAを勉強しようと思っているのですが、何から手をつけてよいのか困っています。本とかも買ったのですが・・・これまたさっぱり??です(笑)
どのような事から勉強すれば良いでしょうか?
Answer   Copyright (C) 2001.3.21 Yoshioh Nagai
DBのワークシート いろいろな方法が考えられます。
まず最初に「空白のセル」とは、どんな値のセルかを押さえておきましょう。

左図の A2セルの値は Null文字列です。セルを選択して[Delete]キーを押した場合に、この状態になります。
A3セルは IME(日本語入力モード)が OFFの状態で[スペース]キーを、A4セルは IMEが ONの状態で[スペース]キーを押した場合です。
すでに入力済みの値を消す場合に[スペース]キーを使ってしまうユーザーを、しばしば見受けます。注意を要するのは A4セル、つまり全角スペースの取り扱いです。

もしも、全角スペースを空白扱いしなくてよいならば、オートフィルターで「空白以外のセル」を抽出してコピーし、別のワークシートに貼り付けて、それを印刷するための基データにすれば解決します。
オートフィルターして別のシートに貼り付けるマクロは、自動記録で下記のように簡単に作れます。
Sub Macro1()
    Sheets("Sheet1").Select
    Range("A1").Select
    Selection.AutoFilter
    Selection.AutoFilter Field:=1, Criteria1:="<>"
    Selection.CurrentRegion.Select
    Selection.Copy
    Sheets.Add
    Selection.PasteSpecial Paste:=xlValues
End Sub
自動記録の操作手順
1. オートフィルターしたいDBのワークシートをアクティブにする
2. [ツール]メニュー[マクロ]-[新しいマクロの記録]とクリック
3. 表示された「マクロの記録」ダイアログボックスの「マクロ名」をメモしてから、[OK]ボタンをクリック
4. DB内のどれかのセルを選択してから、[データ]メニュー[フィルタ]-[オートフィルター]とクリック
5. DBのキー列の1行目(見出し行)にある下向き三角印(▼)をクリックし、表示されたドロップダウンリストの「(空白以外のセル)」をクリックする
6. [編集]メニュー[ジャンプ]とクリックし、表示された「ジャンプ」ダイアログボックスの[セル選択]をクリック
7. 表示された「選択オプション」ダイアログボックスの[アクティブセル領域]を選択して、[OK]ボタンをクリック
8. [編集]メニュー[コピー]とクリック
9. 抽出結果を貼り付けるシートをアクティブにして、A1セルを選択する
10.[編集]メニュー[形式を選択して貼り付け]とクリックし、表示された「形式を選択して貼り付け」ダイアログボックスの[貼り付ける形式]に[テキスト]を選択して、[OK]ボタンをクリック
11. [ツール]メニュー[マクロ]-[記録終了]とクリック

全角スペースを空白として扱いたい場合は、If...Then...Else ステートメントを使うことになるかと思います。

構文
If condition Then [statements] [Else elsestatements]

くわしい解説は省略しますが、必要であれば 「セルの内容が空白でないなら処理する」を見てください。
「これからVBAを勉強しようと思っている」とのこと、マクロは自分を助けてくれると思って、楽しく進みましょう!

すでに、DB(データベース)操作、キーとなるセル、内容は請求書発行と似ているなど、かなり知ってみえるようですし、何よりExcelそのものを理解してみえるようですから、進み方が適当ならば、それ程むつかしいことではないと思います。以下に、私の考え方を簡単にまとめておきますので、参考にしてください。

実務の傍らでマクロを作成するなら

自分たちの仕事を効率化するためにVBAを活用する場合は、マクロ と、とらえましょう。
成し遂げなければならない本来の仕事のかたわらで作成する訳ですから、素早く、簡単に作らないと。

没頭して多大の時間を費やすと本末転倒です。作業時間トータルが、マクロを使わなかった場合のほうが短いのでは、意味がなくなります。
school こうした立場で勉強するのであれば、マクロとは大規模なコマンド にとどめておく方が賢明でしょう。
[ファイル][編集][表示]メニューなどをクリックすれば、[印刷]や[コピー]など沢山のコマンドを使えることを知っていますね。同じ作業を繰り返すことが分かっているなら、それらのコマンドをいちいち手で操作するのではなく、あらかじめ、まとめて記録しておけばワンタッチで済ますことが可能になります。上例の 自動記録の操作手順 では 11のコマンド操作を 1つのマクロにしました。

よって勉強方法としては、どんどん自動記録してみて、手で操作したコマンドと、記録されたマクロコードを対応させながら覚える方法が手っ取り早いと思います。最初は短く区切って記録する方がよいでしょう。

  マクロコードはコマンドを英語で表現しているだけと、肩の力を抜いて連想ゲームの気分で !

すると、自然に疑問が浮かんで、もっと知りたいと思うことが具体的になるでしょうから、そのことが解説されている本を探せばチンプンカンにならずに、きっと役立つでしょう。なお、自動記録できないマクロについて具体的に例示してある本ならば、次のステップにつながります。
開発者としてプログラミングするなら

Excelのマクロは大したものです。Excel 2000 VBAは、Visual Basic 6.0と同レベルの高等な開発言語と言われています。マイクロソフト社の定義では、「マクロとは Excelの複数のコマンドを入力または記録して保存したプログラム」とされています。当然、プログラミングとして基礎から本格的に勉強されることを、お勧めします。

Excel VBA Macro