前回からに引き続き、Excel VBA スタンダードの基本をまとめる。
(コードの例はプロシージャや変数の宣言などは省略しています。)
資格を取得することができれば、客観的にその分野についてある程度の知識と技術があることを証明する手段となる。
しかし、このExcel VBAに限らないが、ただ単に資格を取得しただけではまだ実務に十分活用できるとまでは言えない。
試験では穴埋め問題など、一部を知っていれば回答できる問題もあるが、
業務でマクロを組む場合は自分自身で調べながら1からコードを書かなければならず、
完成したとしてもバグが発生するため、自分でデバッグ作業もしなければならない。
当初はうまく動いていたのに、何かの拍子に動かなくなってしまうこともあるため、
運用がスタートしてからのことも考える必要がある。
また、すでに組まれているマクロを修正する場合も一筋縄ではいかない。
きちんとコメントアウトなどを利用してメモを残しながら作られたマクロは読み解きやすいが、
そうでない場合は自分で調べながら読み解く必要があり、その上でコードを修正することになる。
資格の取得によって知識は得られるが、経験は実務で少しずつ活用してみなければ身につけることができない。
資格だけでは本質的に労働者として市場価値の向上には繋がらず、また副業案件を受ける際にも他の優れた提案者に発注されてしまう可能性がある。
そのため、資格さえあれば十分という考えは持たない方が良い。
とはいえ、何事にもとっかかりがある方がやりやすいのは間違いなく、
また第三者から見て資格は目に見えるわかりやすい材料にもなるため、
実務に活用するためのスタートとして資格を取得することは良い選択肢になる。
本題の前に関係のない話になってしまったが、
勉強を続けていると途中でモチベーションが低下したり、なぜこんなことをしているのか?と考えてしまうことがあるが、
なぜ受験しようと考えたかなど、当初の目的を思い出すことも勉強の際には必要になる。
私の場合はすでに書いてある通り、本業に活用することと、副業としての案件で受注してより稼ぎを増やすことの2つを目的にしている。
セルを検索する
セルを検索するときにはFindメソッドを用いる。Findメソッドにはセルを検索する際の条件を指定するための引数が複数用意されている。
検索語句の指定
Whatを用いる。
1 |
Set A = Range("A1:C5").Find(what:="山下") |
指定したセルの次から検索を始める
Afterを用いる。
1 |
Set A = Range("A1:C5").Find(what:="山下",After:=Activecell) |
検索対象を指定
1 2 3 4 5 6 7 8 |
#検索対象を数式に指定 Set A = Range("A1:C5").Find(what:="山下",LooIn:=xlFormulas) #検索対象を値に指定 Set A = Range("A1:C5").Find(what:="山下",LooIn:=xlValues) #検索対象をコメントに指定 Set A = Range("A1:C5").Find(what:="山下",LooIn:=xlComents) |
完全一致検索を指定
検索語句の後にLookAtを用いる。
1 2 3 4 |
#XlWholeは全部一致 Set A = Range("A1:C5").Find(what:="山下", LookAt:=xlWhole) #XlPartは部分一致 Set A = Range("A1:C5").Find(what:="山下", LookAt:=xlPart) |
検索方向の指定
1 2 3 4 |
#列方向に検索 Set A = Range("A1:C5").Find(what:="山下",SearchOrder:=xlByRows) #行方向に検索 Set A = Range("A1:C5").Find(what:="山下",SearchOrder:=xlByColumns) |
大文字と小文字の区別を指定
1 2 3 4 |
#順方向に検索 Set A = Range("A1:C5").Find(what:="山下",SearchDirection:=xlNext) #逆方向に検索 Set A = Range("A1:C5").Find(what:="山下",SearchDirection:=xlPrevious) |
半角と全角の区別を指定
1 2 3 4 |
#大文字と小文字を区別する Set A = Range("A1:C5").Find(what:="yamashita",MatchCase:=True #大文字と小文字を区別しない Set A = Range("A1:C5").Find(what:="yamashita",MatchCase:=False) |
書式を検索条件に含めるかを指定
1 2 3 4 |
#半角と全角を区別する Set A = Range("A1:C5").Find(what:="yamashita",MatchByte:=True) #半角と全角を区別しない Set A = Range("A1:C5").Find(what:="yamashita",MatchByte:=False) |
見つからない場合
セルが見つからない場合の判定方法
1 2 |
If A is Nothing Then ・・・処理 |
検索結果の操作
検索したセルを元に別のセルを操作する
Offsetを用いる。
以下では、検索したセルをAに代入し、そのセルから1つ右、1つ下のセルに「テスト」と入力している。
1 2 3 |
Set A = Range("A1:C5").Find(What:="山下") A.Offset(1,1)="テスト" |
コピー
以下では、山下と入力されているセルからその1つ隣のセルまでをコピーしてセルX5に貼り付けしている。
1 2 3 |
Set A = Range("A1:C5").Find(What:="山下") A.Resize(1,2).Copy Range("X5") |
前の記事:ファイル操作・ワークシート関数
関連記事:ExcelVBA 記事一覧
コメント