皆さん、お正月の連休は、ゆっくり過ごされましたか?ご親戚のお付き合いや、忘年会・新年会でなかなかゆっくりできないでいらっしゃった方も多いのでは?とも思っています。子供さんやご親戚、友人の方々が一緒に集まる機会がお正月ですので、なかなか良い機会では無かったでしょうか。KaBAは相変わらず、ブログネタをため込んでいましたが、やはり、親戚の新年会や友人との同窓会、新年会に、参加してなかなか有意義なお正月を過ごしていました。仕事始めですね!頑張っていきましょう!と、いうわけで、日本語VBAも仕事始めと書き初めです。今回は、選択範囲中の、値の入っているセルのみを選択する、という方法をご紹介します。上図は、今回の処理を実行した後の、実行結果の画面です。このように、エクセルシートの中から、セルに値の入ったセルのみを自動的に選択します。「値の入っているセルの集合」を入れる変数まず、最終結果の「値の入っているセルの集合」を入れる変数を作ります。いう変数を作成しています。「w_セル集合」に値が入っていないと、その後の処理がうまく動かないため、とりあえず、“A3′′セルを「w_セル集合」にセットしています。コードは以下のようになります。必要であれば、コピペされてください。「ブロック」というサブルーチンを呼び出すコード次に、エクセル関数日本語化の特徴である「ブロック」というサブルーチンを呼び出すコードを書きます。「ブロック」とは、第一引数に、例えば、選択範囲内のセル群のうち、一つだけセットした状態で「ブロック」サブルーチンが呼ばれます。このセル群のうち、すべてのセルを一つずつセットして、セル群内のすべてのセルの分、ブロックが呼ばれます。このため、「ブロック」サブルーチン自体は、一つのセルに対する処理のみ書けばよいため、コートを書く際の見通しが良くなります。ややこしいですが、サブルーチンの第1引数に自動的にセルをセットして、自動的にサブルーチンを呼ぶ方法が、「セルごとにサブルーチン呼び出し」メソッドであり、「ブロック」サブルーチンである、と覚えられてください。コードは以下のようになります。Subまた、今回は「セルごとサブルーチン呼び出し」に「w_セル集合」変数もセットしています。この「w_セル集合」は「ブロック」の第2引数にセットされます。「セルごとにサブルーチン呼び出し」が完了した後は、「値の入っているセルの集合」は、「w_セル集合」にセットされていますので、後は、「選択」メソッドを実行して、セルの集合を選択するだけです。最後に使い終わった「w_セル集合」を破棄しています。コードは以下のようになります。メイン処理は完成しましたので、以下のコードをコピペされてください。Sub実際に選択処理を行うブロックブロックのひな形ブロックのひな形それでは、サブ処理を行うブロックを作成します。ブロックのひな形は以下のようなコードになります。「ブロック」の特徴として、第1引数に処理の対象のセルがセットされます。今回メイン処理で「w_セル集合」もセットするように指定していましたので、ブロックの第2引数には、「w_セル集合」がセットされます。次にチェック対象のセルに値が存在するかどうかチェックしましょう。「w_セル」の「値」が、空白文字「””」と一致しないことを「<>」演算で、確認しています。「<>」とは「≠」のことです。半角英数字には「≠」は存在しないため、苦肉の策として、「<>」が「≠」の代わりに使用されています。コードは以下のようになります。最後に、結構難しい処理を作ります。「w_セル集合」のセルの集合と、「w_セル」の1つだけのセルの集合の和を取る、という、いわゆる「集合和」という演算を行います。「集合和」はVBでは、「Union」関数がそれに当たります。エクセル関数日本語化では、「Union」関数を日本語化していないため、当面「Union」関数を使用します。Union関数により集合和が行われた結果のセルの集合は、再び「w_セル集合」にセットされています。これにより、「w_セル集合」に、ブロックが呼ばれる度に、どんどん「w_セル」が足されていく、という処理結果になります。コードは以下のようになります。ブロックも完成形ですので、以下のコードをコピペされてください。Sub実際に実行してみる処理の対象を範囲選択する範囲選択するまずは、適当にセルに値を入れて、それらを囲むように範囲選択してください。今までに作ったVBAを実行すると、これら値の入ったセルのみ選択された状態になります。「開発」タブを開き、「マクロ」ボタンをクリックする「開発」タブを開き、「マクロ」ボタンをクリックする次にVBAを実行します。「開発」タブの「マクロ」ボタンをクリックします。「開発」タブが画面上に存在しない場合は、以下のURLのページを確認して、「開発」タブを表示してください。VBAを手軽に実行してみようhttps://cunning-pg.ringing-web.com/%E3%82%A8%E3%82%AF%E3%82%BB%E3%83%AB%E3%81%A7-%E3%80%8C%E9%96%8B%E7%99%BA%E3%80%8D%E3%82%BF%E3%83%96%E3%82%92%E9%96%8B%E3%81%8D-vba%E3%82%92%E6%89%8B%E8%BB%BD%E3%81%AB%E5%AE%9F%E8%A1%8C%E3%81%97/エクセルで「開発」タブを開きVBAを手軽に実行してみようはい。エクセルブックのリボンに「開発」タブを追加し、VBAを手軽に実行できるようエクセルを設定する方法を、解説します。エクセル関数日本語化のインストール方法は、以下の記事を参照してくださ...マクロを実行する「値のあるセルのみを選択」マクロ(サブルーチン)を実行VBAのサブルーチンは別名「マクロ」と呼ばれます。ここでは先ほど作成した「値のあるセルのみを選択」サブルーチンを実行します。サブルーチン名を選択した後、「実行」ボタンをクリックして下さい。実行結果は、上の通りです。値の入っているセルが選択されていますね。一部「A3」セルも選択されていますが、これは「w_セル集合」変数を「A3」セルで初期化したためです。本来的には、「w_セル集合」から「A3」セルを集合差で引き算しないといけないのですが、VBAの関数には、「集合差」が存在しません。「Union」(集合和)、集合差も含め、エクセル関数日本語化の次バージョンで用意する予定です。g_道具.セル("A3")というセルに対し、「集合差」メソッドなど、「集合演算」の機能を追加しています。「エクセルVBA日本語化」ver0.20.0は以下のURLからダウンロードされてください。ベクター様サイトにも登録申請中です。ダウンロードhttps://cunning-pg.ringing-web.com/download/エクセルVBA日本語化ダウンロード以下のリンクから、ダウンロードできます。セルの集合演算メソッドを追加しました。ハンガリアンセルver1を試験的に導入しました。さんのVBAコードを利用させて頂いています。差集合を作成するメソッドはありません。作ってみましたがいまいち用途がわかりません。無い...集合差を使ってこのページのプログラムを作ると、「A3」セルを選択結果から除外することができます。集合差の実行結果は、下図のようになります。「A3」セルが除外されていますね。プログラムは以下のようになります。'w_セル集合には何らかのセルが入っていないといけないため、ここでは"A3"セルを入れておきます。'最初に入れておいた"A3"セルを選択範囲から除外します。セルに「値が入っているか」の条件以外にも、以下のように細やかな条件を指定することができます。Subまとめ皆さん、大変お疲れ様でした。ここまで読んで下さって、誠にありがとうございました。本日の学びを以下にまとめます。セルの集合は「Union」という関数で結合できる。Unionは集合和という演算。VBAには集合差、集合積などが用意されていない。これらはエクセル関数日本語化の次バージョンで用意する予定。「セルごとにサブルーチン呼び出し」は、セルごとに「ブロック」を呼び出す。「ブロック」の第1引数はセル。「ブロック」の第2引数以降は、「セルごとにサブルーチン呼び出し」の引数で「ブロック名」以降に指定した変数がセットされる。「w_セル集合」などセル系の変数の「選択」メソッドを実行することで、エクセル上ではそのセルが選択状態になる。最新の記事KaBA@フリーランス修行中こんにちは!IT業界で勤めて17年くらい務めています。プログラミング大好きやろーです。自分も独学でC言語を覚えIT会社に就職しました。その後紆余曲折を経て、VB6.0、VBA、Perl、C#、HTML、CSS、JavaScript、PHPなどを覚えていきました。全部C言語の独学時の経験がベースとなって、学習曲線が良いカーブを描いていました。頑張って覚えられてください!よろしくお願いします。さんの三国志などが好きです。