EXCEL 備忘録 | メシのタネ

pakutasosukotish
このエントリーをはてなブックマークに追加

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

 2014/10/22

こないだの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プロシージャに書き出してくれます。

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


このエントリーをはてなブックマークに追加

コメント

"【Excel VBA】知ってると便利なこと"
でメシのタネのおすすめを検索したよ!

プログラミング備忘録 | メシのタネ