メシのタネ

めしのたねになるIT情報配信サイト


【Excel VBA】知ってると便利なこと

, ,

  1. Windows
  2. Excel
  3. 【Excel VBA】知ってると便利なこと

pakutasosukotish

こないだのExcelVBAの続編として、また記事を書いて行きたいと思います。
とあるシステムにとある機能が実装可能かどうかを調べていて、
また機能追加のご要望が着たので、VBAを触りました。
でまた、作ってたら結構はまったりしたので、その際に
困った事や便利だった事をメモ的な感じで書いて行きたいなぁと思います!

バリアント型

バリアント型ってなんぞやと思って
翻訳しても出てこなかったので、変数の型を動的に判断してくれる
箱みたいな変数の型だと僕は勝手に認識しました。
PHPの変数みたいに使えて便利なので、こればっか使うようになりました。
定義の仕方はDim e1 As Variantみたいにして書けば良いと思います。

ちょっと使った例を書いてみます。


Dim e1 As Variant
e1 = Range("B4:B31").Value

For Each searchFrom In e1

     Debug.Print(searchFrom)

Next

みたいな感じで使う事が出来て便利ーです。

データの入ってる最終行を探す

こんな感じでやるみたいです。


Dim endRowAs Long

endRow = ActiveSheet.Range("O5").End(xlDown).row

が、たまに上手く行かないので、ちゃんと分かる時が着たら詳細書きます。
A1に文字入れて、さっきの使ったら65536になったりしました・・・。

1行のifならendifが省略可能

if文が一行で済む場合End Ifが省略できます。
構文が長めな気がするので、結構ありがたいと思いました。

ブック間のコピペ

例えばブックAからブックBに
文字をコピーしたい場合にはこうやります。

ファイルをオープンさせた状態でコピーしてペーストします。
ファイルオープンさせずにこれやったので軽くはまりました。


                Workbooks("A.xls").Worksheets("Sheet1").Range("A1").Copy
                Workbooks("B.xls").Worksheets("Sheet1").Range("A2").PasteSpecial


後引数を文字列で受け取るので、変数使う場合は注意してください。


                Workbooks(e2fileName).Worksheets("データ出力シート").Range("E" & rowAddress & "," & "O" & rowAddress & "," & "G" & rowAddress).Copy
                Workbooks(e3fileName).Worksheets("Sheet1").Range("A" & e3endRow & ":C" & e3endRow).PasteSpecial

なんかカンマがあるのにカンマが文字列って不思議な感じ。

関数の付いたセルを作成する

Formulaってのを使うみたいです。
デバックしにくいので、作成するセルの値は一度変数に入れてやると
デバックしやすいと思います。

こんな感じで書きました。


formuraCells = "=A" & e3endRow & "*" & "B" & e3endRow
Workbooks(e3fileName).Worksheets("Sheet1").Range("D" & e3endRow).Formula = formuraCells

関数セルコピーすると関数がついてきてUZEEEEEEEEEEE

PasteSpecialにちょっと付け足すと大丈夫になります。


Range("A1:C1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

マクロで出力したので意味は分かりませんが機会があれば調べてみようと思います。

マクロで出力

Excelの場合、操作を記録する機能があります。
開発タブのマクロの記録ってとこを押すと操作が記録できます。

僕みたいにVBAの習熟度が低い場合、操作をコードに置き換えるのが
調べながらやらないとダメなので、いちいち面倒臭いです。
そういうときに、これを利用して、操作を記録すれば、記録した操作を
マクロとしてsubプロシージャに書き出してくれます。

このマクロを見て、余裕があれば意味を調べながらやれば、
気持ちよく作業を進めることができます。


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

This site uses Akismet to reduce spam. Learn how your comment data is processed.

若い頃、「仕事中にハマったこと」や「誰かに共有したい技術的な気づき」をアウトプットしたくてブログを始めましたが、勢い任せでよく分からない記事を大量生産し、あえなく飽きて終了。

改めて今、キャリア15年分の経験や知識が、これからITエンジニアを目指す方や、同じような課題で悩んでいる現役エンジニアの「メシのタネ」になるような記事を残したいと思っています。
※過去の記事は見ると精神が崩壊するため、そっとしておいてください。

🛠 経歴という名の珍道中:
文系Fラン → 広告営業 → Web営業 → 通信営業 → Web進行 → 出版 → Web媒体運用 → ソフトウェアハウス → SES → フリーランス

専門教育も受けず、転職歴も多数。履歴書はまるで時系列の事故記録のようですが、試行錯誤を重ね、なんとかエンジニアとして食べています。

このブログでは、そんな「履歴書クラッシャー型エンジニア」が送る、
名古屋一敷居の低い、実務に役立つ技術ブログを目指します。

Laravel
Eloquentは知ってる。でも“理解してる”って言えるのか?New!!
Laravel
FormRequestのポテンシャル、半分も出せてない説New!!
Laravel
Laravel Controllerの“万能感”、そこに幸せはあるのかい?New!!
API
RESTってつまり何?Webエンジニアが悩まないためのAPI設計入門New!!
Laravel
【Laravel入門】ルーティングの基本と実践活用まとめ:仕組み・書き方・落とし穴まで
google
【保存版】GA4 Consent Mode v2完全対応マニュアル:UA脱却からタグ発火までに、今やるべき3つのこと