システム企画 元プログラマーのつぶやき

プログラマー時代の困った経験とどのように解決したか投稿します。場合により英語記載するバイリンガル版です。

エクセルVBA 表計算ソフトのエクセルでマクロ作成し自働化したいがお困りの方へ

みなさん、こんにちは♡
Good evening,everybody!

「そのみちほうげん」です。
I'm Sonomichihougen.

皆さん、私の本職は、「システム企画」です。

さて、こんな困りごとに直面したことはございませんか?

1.エクセルマクロの困りごと

あるひとつの数表があると仮定します。

①数表の最終行の取得はどのようにする?
②数表の最終列の取得はどのようにする?


2.解決方法・・・ひとつの例です。
  
①変数(行の変数、列の変数)を定義します。

Dim 最終行 as long
Dim 最終列 as long
  
②エクセルを自動計算にします。
また、スタイルを変更し、cell関数が使えるようにします。

Application.Calculation = xlAutomatic
Application.RefrenceStyle = xlR1C1

※xlR1C1形式は、セルを座標として扱います。
 例えば、Cell(1,1)=A1,Cell(2,2)=B2の意味になります。
    
③最終行が何行目か取得します。

最終行 = cells(Rows.count,1).End(xlUp).Row 

この例では、1列目のデータが何行目まで入っているかを取得します。
最終行を取得したいので、取得したい最終行の1列目にデータが入っていなければなりません。
もし入っていなければ、入っているところまでが最終行とみなされます。
この関数は、エクセルが制限する最大の行から上に向かって、最終行の取得を試みます。

④最終列が何列目か取得します。

最終列 = cells(5,columns.count).End(xlToLeft).Colmn
 
この例では、5行目のデータが何列目まで入っているかを取得します。
最終列を取得したいので、取得したい最終列の行目にデータが入っていなければなりません。
もし入っていなければ、入っているところまでが最終列とみなされます。
この関数は、エクセルが制限する最大の列から左に向かって、最終列の取得を試みます。

3.用法例

画像にて確認願います。f:id:hidesyumin777:20180716215206j:plain

4.如何ですか、皆さん。

うまく説明できない点があったかもしれません。ご容赦下さいませ。

エクセルマクロによる自働化に興味のある方は、参考になさって下さい。

 

(^^♪(^^♪(^^♪
smile,simle,smile

入門者のExcel VBA―初めての人にベストな学び方 (ブルーバックス)

入門者のExcel VBA―初めての人にベストな学び方 (ブルーバックス)