2020年03月15日

VBAに登場する意味不明な用語の意味 “モジュール”とか“ステートメント”とか / Excel / VBA

Excel VBAでは色々な横文字が登場するのだけど、なんかつかみどころない単語が多い!
と、単にボキャブラリーが無いだけなのを棚に上げるのだけど、
ということで、あまり深堀は出来ないけど簡単にまとめてみた!

プロジェクト
1つのワークブック(Excelファイル)のマクロ群になります。
VBAの編集画面では左上のプロジェクトエクスプローラにの一番上の太字で表示されている“VBAProject( )”になります。( )内はファイル名になっります。
プロジェクトに“モジュール”、“プロシージャ”、“ステートメント”が構成されます。
20200308-01.JPG

モジュール
VBAのコードを書いて保存する場所のことで、ここにマクロのプログラム、プロシージャが作られます。
1つのモージュールには複数のプロシージャを作ることができます。
一般的なVBAのコードは“標準モージュール”に書き込みます。またそれとは別にオブジェクトに付随するモジュールがあり、ワークシート付随する“シートモジュール”、ワークブックに付随する“ブックモジュール”、フォームに付随する“フォームモジュール”があります。
20200308-02.JPG

プロシージャ
sub 〜 End sub で書かれる1つのマクロを実行するプログラムのまとまりのことです。
“マクロ”と言うのはソフトの操作を自動化させたものの総称なので、1つのプロシージャで1つのマクロを作る場合もありますし、複数のプロシージャで1つのマクロを構成する場合もあります。ですが、“プロシージャ”と言うのはプログラミングサイドの用語で片や“マクロ”はユーザーサイド(エクセル寄り)の用語になります。
 標準モジュールに作られるプログラムを“標準プロシージャ”と言い、「F5」キーや「マクロの実行」で実行されるプロシージャです。またオブジェクトに付随するモジュールに作られるプログラムを“イベントプロシージャ”と言い、ユーザーの操作によって起きるイベントにより自動で実行するプロシージャです。
例えば、ブックモジュールにはExcelを起動した時、保存した時等のイベントプロシージャ
シートモジュールにはセルの値を変更した時、シートを追加した時等のイベントプロシージャ
フォームモジュールにはボタンをクリックした時等のイベントプロシージャを作ります。
20200308-03.JPG

SubプロシージャとFunctionプロシージャ
Sub マクロ名() 〜 End Subで記述されるSubプロシージャの他に、Function 関数名() 〜 End Functionで記述されるFunctionプロシージャがあります。Functionプロシージャは戻り値で結果を返すことができます。

ステートメント
VBAで記述される最小単位の1行単位のプログラム。if〜then、for〜next 等は複数行にまたがります。
例えば、“Sub”、“Functoin”、“Dim”、“Call”、“End”、“For〜 Next”、“GoTo”、“If〜Then〜Else” 等があります。
20200308-04.JPG

まだまだ、聴きなれない用語が出てきますが、今日はここいらで勘弁してやろう!?
ほなまた!



前のページ:
次のページ:

関連ページ


posted by haku1569 at 18:42| Excel VBA | このブログの読者になる | 更新情報をチェックする

2020年02月23日

セルの行番号、列番号、アドレス(絶対位置)を取得する / Excel / VBA

Excel VBAでセルの列番号、行番号、アドレスを取得してみます。
*下の方で使用例のExcelファイルがダウンロードできます。

1.セルの行番号を取得する

***.Row
***:行番号を取得したいセルを指定

例 セル“A1”の行番号(=1)を取得
Cells(1,1).Row

2.セルの列番号を取得する

***.Column
***:列番号を取得したいセルを指定

例 セル“B1”の列番号(=2)を取得
Cells(1,2).Column

3.セルのアドレス(絶対位置)を取得する

***.Address
***:アドレスを取得したいセルを指定

例 セル“C1”のアドレス(=$C$1)を取得
Cells(1,3).Adress

使用例

Sub Macro1()

'変数R、C、A
Dim R
Dim C
Dim A

'セル“A1”の行番号を変数Rに格納
R = Cells(1, 1).Row

'セル“B1”の列番号を変数Cに格納
C = Cells(1, 2).Column

'セル“C1”のアドレスを変数Aに格納
A = Cells(1, 3).Address

'変数R、C、Aをイミディエイトウィンドウに表示
Debug.Print (R)
Debug.Print (C)
Debug.Print (A)

End Sub

20200222.JPG

サンプルExcelファイル:セルの行、列、アドレス.zip


前のページ:
次のページ:


関連ページ




車のバッテリーが完全に上がってしまってもかけることが出来る25,000mAhの大容量!

車のエンジンスターターだけでなく、スマホの充電、LEDライトとしても使用できます。





ラベル:.Row .Column .Address
posted by haku1569 at 14:50| Excel VBA | このブログの読者になる | 更新情報をチェックする

2020年02月15日

IFステートメント~条件分岐 / VBA / Excel

ExcelのVBAで、ある条件をによって、処理を分岐させるのが"IF文(ステートメント)"です。
「もし※※だったら、処理A、そうじゃなかったら処理B」って言うやつです。
*下の方でサンプルExcelファイルがダウンロードできます。
20200215-01.jpg

If 条件式 Then条件を満たした時 / 真 true)処理A

 Else(条件を満たさない時 / 偽 false)処理B

End If

“Else 処理B” は省略することができます。
すると条件を満たさない時はEnd If でIfステートメントが終了します。

条件式で使用する演算子の種類

比較演算子
2つ値や式を比較して、結果を真(true)偽(false)で返します
演算子意味
=等しい
<>等しくない
>より大きい
>=以上
<より小さい
<=以下

論理演算子
2つの条件式を組み合わせた条件式を作り結果を真(true)偽(false)で返します
演算子意味結果
And
理論積
(且つ)
真(true)And 真(true)真(true)
真(true)And 偽(false)偽(false)
偽(false)And 真(true)偽(false)
偽(false)And 偽(false)偽(false)
Or
理論和
(または)
真(true)Or 真(true)真(true)
真(true)Or 偽(false)真(true)
偽(false)Or 真(true)真(true)
偽(false)Or 偽(false)偽(false)
Xor
排他理論和
(どちらか1つだけ真のとき真)
真(true)Xor 真(true)偽(false)
真(true)Xor 偽(false)真(true)
偽(false)Xor 真(true)真(true)
偽(false)Xor 偽(false)偽(false)
Not理論否定Not 真(true)偽(false)
Not 偽(false)真(true)

使用例
1)セルの値が30以上だったら隣のセルに"合格"、じゃなかったら"追試"と表示する

Sub macro1()
'もしセルA2が30以下なら
If Cells(2, 1) >= 30 Then
'セルB2に“合格”と表示
Cells(2, 2) = "合格"
'そうでなかったら、
Else
'セルB2に“追試”と表示
Cells(2, 2) = "追試"
End If
End Sub

20200216-01.JPG


2)Elseの省略、セルの値が30以上だったら隣のセルに"合格"と表示する

Sub macro2()
'もしセルA2が30以下なら
If Cells(2, 1) >= 30 Then
'セルB2に“合格”と表示
Cells(2, 2) = "合格"
End If
End Sub

20200216-02.JPG


3)論理演算子"And"の使用例
  算数のセルの値が30以上、且つ、国語のセルの値が30以上、だったら、隣のセルに"合格"と表示する

Sub macro3()
'もしセルA5が30以上 かつ セルB5が30以上 ならば
If Cells(5, 1) >= 30 And Cells(5, 2) >= 30 Then
'セルC5に合格と表示
Cells(5, 3) = "合格"
End If
End Sub

20200216-03.JPG

 サンプルExcelファイル:if文.zip




最近のマキタって電動工具だけにとどまらず、充電池をベースにした様々な機器のバリエーションを増やしてて面白いですよ。



ラベル:if
posted by haku1569 at 18:54| Excel VBA | このブログの読者になる | 更新情報をチェックする

2020年02月09日

フィルターを解除してソートし直して最終行の次を選択するマクロ / VBA / Excel

テーブル(表)でデータの検索をしていると、色々なフィールド(列)でフィルターを掛けたり、ソート(並び替え)したりするわけだけど、今度は新たにデータを入力する場合はフィルターを解除して所定の列で昇順に並び替えをして最終行の次の行にセルを移動させなければなりません。

@フィルターのクリア
A所定の列で昇順に並び替え
B最終行の次の行にセルを移動

どんなファイルであっても検索と入力を兼ねるテーブルの場合はそれをルーチンとして常に行わなければなりません。
この3つの作業も面倒なのでマクロで自動化してしまいましょう。
そして、同じショートカットキーにマクロを登録しておくとどんなファイルでも同じショートカットでマクロを実行させることができます。

例えば、こんな受注データがあります。
今、氏名が"高橋良男"でフィルターをかけ商品コードでソートして、何かデータの検索を行っています。
20200211-01.JPG

で、検索の作業が終了し、新たなデータを入力しなければならなくなりました。
と、上の@~Bの作業を手動でやらなければなりませんが、マクロで実行するとショートカットキーを押すだけで、
こんな感じに一発でフィルターがクリアされて受注コードで昇順でソートしてデータが入力する位置に選択セルが移動されます。
下の方にこのサンプルファイルのリンクが貼ってあります。
20200211-02.JPG

構成は、
Macro1_フィルターのクリア
Macro2_昇順に並び替え
Macro3_最終行の下に移動
Macro4_マクロの自動実行
の4つのマクロを作成します。

それでは、実際のVBAを見ていきましょう。
このままコピペしても使えます。

まず、フィルタをクリアするマクロでです。
ここでのポイントはフィルタを解除する時にフィルターがかかっているかどうかをif文で確認することです。
フィルターがかかっていない時はこのマクロを実行しない様にしています。
何故かと言うと、フィルターがかかっていないのにフィルター解除のマクロを実行するとエラーになってしまいます。
20200211-07.JPG

Sub Macro1_フィルターのクリア()

'ワークシート“受注マスタ”を選択
Worksheets("受注マスタ").Select

'セルA2(データの左上)を選択
Cells(2, 1).Select

'もしフィルターがかかっていたら
If ActiveSheet.FilterMode Then

'フィルターを解除する
ActiveSheet.ShowAllData

End If


End Sub

実際のVBAのコードウィンドウです。
20200211-03.JPG


次は、昇順に並び替えるマクロです。

Sub Macro2_昇順に並び替え()

'テーブル1の“受注コード”で昇順に並び変える
Call Range("テーブル1").Sort(Key1:=Range("テーブル1[受注コード]"), Order1:=xlAscending, Header:=xlYes)

End Sub


実際のVBAのコードウィンドウです。
20200211-04.JPG


次は、新たなデータ入力のために最終行の下に選択セルを移動させます。

Sub Macro3_最終行の下に移動()

'変数n
Dim n

'ワークシート“受注マスタ”を選択
Worksheets("受注マスタ").Select

'セル“A2”からデータのある最終行番号を変数nに保管
n = Range("A2").End(xlDown).Row

'列Aの最終行の継の行を選択
Cells(n + 1, 1).Select

End Sub


実際のVBAのコードウィンドウです。
20200211-05.JPG


最後はこれらの一連のマクロを実行するマクロです。

Sub Macro4_マクロの自動実行()


'Macro1を実行
Call Macro1_フィルターのクリア

'Macro2を実行
Call Macro2_昇順に並び替え

'Macro3を実行
Call Macro3_最終行の下に移動


End Sub


実際のVBAのコードウィンドウです。
20200211-06.JPG

サンプルExcelファイル:North Wind_20200209.zip


前のページ:
次のページ:

関連ページ
Excel VBA メニュー
VBAを使えるようにしてみました!



最近はもう何が起きるかわからなくなってきましたねー。
と、言うわけで一家に一台ソーラー発電!


posted by haku1569 at 21:52| Excel VBA | このブログの読者になる | 更新情報をチェックする

2019年10月30日

Debug.Printの便利な使い方 / Excel / VBA

マクロ作って入る時に変数にちゃんと値が格納されているかとか、いちいち確認したくなる時ってありますよね。そんな時は Debug.Print を使いましょう!
VBAをコーディングしているコードウィンドウの下のイミディエイトウィンドウに表示させることができてとても便利です。

例えば、ワークシートのあるセルに入力した値を、変数に格納しそれを Debug.Printを使ってイミディエイトウィンドウに表示させてみます。

サンプルコード

Sub macro1()

'変数a
Dim a

'aにセルA1の値を格納
a = Cells(1, 1).Value

'イミディエイトウィンドウに「a=」で変数aを表示
Debug.Print "a=" & a

End Sub


こんな感じです。
20191030_02.JPG

ここで、ワークシートのセルA1に"4"を入力します。
20191030_03.JPG

で、マクロを実行させると
イミディエイトウィンドウに“a=4”と表示されました
20191030_01.JPG

サンプルExcelファイル)debugprint.zip



前のページ:
次のページ:

関連ページ
Excel VBA メニュー
VBAを使えるようにしてみました!



 最近はradikoとか、インターネットでラジオ番組を聞けるようになったけど、ギガとか、バッテリーとか、気にせずに使いたいならやっぱリアルラジオでしょ!?




ラベル:Debug.Print
posted by haku1569 at 20:22| Excel VBA | このブログの読者になる | 更新情報をチェックする

2019年10月27日

一覧表から帳票を自動で印刷させる(完) / Excel / VBA

さて、色々な試作を行ってきましたが、これで一覧表(受注マスタ)から帳票(受注票)を印刷するマクロを完成させることが出来ます。

最終的に完成させるマクロを1回目と同じように言葉で表してみます。
関連する試作ページにリンクさせときますね。

  1. 受注マスタの受注票を印刷したいデータの「印刷」の列に“1”を入力する
  2. マクロを実行させます
  3. 受注票の印刷設定が完了しているか確認するメッセージボックスを表示する
  4. Excelのシートの最終行からデータ範囲の最後の行までジャンプしてその行番号を取得する
  5. 受注マスタのデータ範囲の一番最初の行に行きます
  6. 列「印刷」に“1”が入力されている場合は受注コードをシート受注票の受注コードに入力します。
  7. 受注票に受注コードが入力されるとVLOOKUP関数によって受注票が作成されます。
  8. 作った受注票を印刷します
  9. 次の行を見に行きます
  10. 6〜9をデータ範囲の最終行まで繰り返したら終了します。


受注マスタから受注票を印刷するマクロ

Sub 印刷準備確認()

'変数a
Dim a

'変数aにはい、いいえの質問メッセージボックスの押された結果を格納
a = MsgBox("プリンタの設定は完了していますか?", vbYesNo + vbQuestion + vbDefaultButton2, "確認")

'押されたボタンaの確認
Select Case a

'はいの場合
Case vbYes

'マクロ受注票印刷を実行する
Call 受注票印刷

'いいえの場合終了
Case vbNo

End Select


End Sub

―――――――――――――――――――――――――――――――――――――
Sub 受注票印刷()

'変数i、n、s
Dim i
Dim n
Dim s


'シート受注マスタを選択
Worksheets("受注マスタ").Select

'nにデータ範囲の最後の行番号を格納
n = Cells(Rows.Count, 1).End(xlUp).Row

'iが2からnまで繰り返し処理(データ範囲が2行目から)
For i = 2 To n

'列「印刷」が"1"の時
If Cells(i, 2) = 1 Then

'sに受注コードを格納
s = Cells(i, 1).Value

'シート"受注票"のセルB4にsを入力
Worksheets("受注票").Cells(4, 2) = s

'受注票を印刷
Worksheets("受注票").PrintOut


End If

Next i

End Sub


とこんな感じになります。
20191027-01.JPG

20191027-04.JPG

印刷準備確認のメッセージボックスを表示させるマクロと受注票を印刷するマクロを分けていますが、同じモジュール(Module)に記入しています。
1つのモジュールに複数のマクロを記入すると自動的に線が引かれて区別されます
一連の処理を複数のマクロに分ける場合は1つのモジュールに記入した方が分かりやすいと思います。

受注マスタの列「印刷」に“1”を入力します。
20191027-03.JPG

と、この様な受注票が印刷されます。
20191027-02.JPG

サンプルExcelファイル)North Wind.zipで実際に実行させてみてください。
サンプルファイルの使い方ですが、
まず、受注票を実際に印刷させて(PDFで可)印刷設定を済ませておいてください。
マクロの実行のボタンとかは用意していません。マクロを表示させて「F5」キーを押すとか、ショートカットを設定するとか、原始的な方法で実行させてください。


前のページ:マクロを実行するマクロ
次のページ:

関連ページ
Excel VBA メニュー
VBAを使えるようにしてみました!
実例1 一覧表から帳票を自動で印刷させる




昔「デンスケ」と言われたカセットテープレコーダがあったのをご存じでしょうか?
所謂、録り鉄とか、ヒコーキの音とか野外の生録をするテープレコーダーです。
マイクもそれなりのをステレオなので2本用意しなければなりません。でもそんなんで録音した蒸気機関車の近づく迫力のサウンドは鳥肌もんでした。。。



そえが今ではマイクも一体化してこんなカッコになっちゃいました。
そう言えば、パーソナルユースで音だけってあまり記録されないよね、動画としては音も一緒に当然撮られてるけど、音だけって無いよね。
なんでだ?音楽は音だけで聞くし最近はASMRとして音を聞いたりってのもあるけど、写真や動画の様に身の回りの音だけを録音するってのはあまり無いねー。。。スマホにもICレコーダーついてるんだから、もっと音遊びできるアプリができてもいいんじゃねぇ?とか思う。




posted by haku1569 at 22:36| Excel VBA | このブログの読者になる | 更新情報をチェックする

2019年10月20日

マクロを実行するマクロ / Excel / VBA

 メッセージを表示させて「はい」の時に次のマクロを実行させたりするときにCallで他のマクロを実行させます。
 また、色々な処理を組み合わせたマクロの場合、1つの長いマクロを作るよりも出来るだけ短いマクロを組み合わせた方が、その後の変更や更新がしやすかったりします。そんな時は複数のマクロをCallで続けて実行させます。
20191020_05.jpg

たとえば、こんなセルA1に100を入力するマクロがあります。
20191020-01.JPG

マクロを実行させるマクロ
Sub macro2()

'macro1を実行
Call macro1

End Sub

こんな感じ
20191020-02.JPG

これを実行させると、macro1が実行されます。で、
こうなります。
20191020-03.JPG


ちなみに、複数のマクロを連続して実行する場合は
20191020-04.JPG





前のページ:メッセージを表示する
次のページ:

関連ページ
Excel VBA メニュー
VBAを使えるようにしてみました!
実例1 一覧表から帳票を自動で印刷させる



 最近は時間のチェックもスマホになって腕時計をしている人って少なくなっているようだけど、そういう意味では腕時計は単なる機能性だけでなく、ファッション性が求められているように思う。ファッション性と言っても、単なる装飾性だけではなく機能美こそが美しいとボクは思うのだけど。。。
 この、EPSONのスポーツウォッチ「TRUME」シリーズ はオールチタン製のボディーに光充電、GPSセンサー内蔵で高度、気圧、方位も表示する万能ウォッチだ!
 そうそう、高度で思うのだけど、今いる場所が海抜何メートルの場所なのか水害から身を守るための重要な指標ですよ。





ラベル:call
posted by haku1569 at 16:02| Excel VBA | このブログの読者になる | 更新情報をチェックする

2019年10月14日

メッセージを表示する / Excel / VBA

受注マスタから受注票を印刷させるためのマクロの基本的な試作は終わったんで、他に必要なマクロの試作を作ってみます。

メッセージの表示です。
例えば繰り返し処理(For〜Next)を伴うマクロは一旦実行すると途中で止めることはできません。
まして印刷(紙出し)のマクロだと間違って実行させてしまうと紙が無駄になってしまうかもしれません。ので、マクロを実行させる前に注意喚起のメッセージとか、確認のメッセージを表示させてあげます。
20191014-21.jpg

メッセージボックス
MsgBox("メッセージ", vbYesNo + vbQuestion + vbDefaultButton2, "タイトル")

メッセージ:表示させるメッセージ
vbYesNo:「はい」、「いいえ」のボタンを表示します
vbQuestion:質問のメッセージボックス
vbDefaultButton2:既定値を「いいえ」
タイトル:メッセージボックスのタイトル

で、ボタンを押した結果は
「はい」:vbYes
「いいえ」:vbNo

複数の条件分岐
条件分岐と言うとIF〜THEN〜ELSEとなるけど、複数の条件での分岐の場合は
Select Case 変数 を使います。
Case vbYes:「はい」を押した場合
   処理

メッセージ表示マクロ

Sub Macro1()

'変数A
Dim A

'問合せメッセージボックス表示
'ボタン「はい」、「いいえ」
'既定値「いいえ」

A = MsgBox("印刷設定は完了していますか?", vbYesNo + vbQuestion + vbDefaultButton2, "印刷設定確認")

'押されたボタンの確認
Select Case A

'「はい」の場合
Case vbYes

'セルA1に1を表示する
Cells(1, 1) = 1


End Select

こんな感じです
20191013-13.JPG


マクロを実行すると
メッセージボックスが表示されます。
質問のメッセージボックスは“?”が表示されます
20191013-11.JPG

で、「はい」を押すとセルA1に1が表示されました
20191013-12.JPG

サンプルExcelファイル)20191013_メッセージボックス.zip

ちなみに、他のメッセージボックスは
vbCritical:警告
20191014-25.JPG

vbExclamation:注意
20191014-24.JPG

vbInformation:情報
20191014-23.JPG

と言うわけで、メッセージボックスは様々な場面でメッセージを表示させられる便利な機能ですが、あまり多用すると、「ウザッ!」ってなって、いちいち「はい」を押すのさえ「めんどくせー」ってことになるから、出来るだけ使わない方がいいと思います。
それに、最初は使用方法を補佐する目的で使いがちになってしまい、使い方を覚えてしまうと要らないメッセージになってしまいます。使い慣れてきてから、それでも必要なメッセージを表示させるようにした方が良いんじゃないかなー。。
20191014-22.jpg



前のページ:最終行を取得する
次のページ:マクロを実行するマクロ

関連ページ
Excel VBA メニュー
VBAを使えるようにしてみました!
実例1 一覧表から帳票を自動で印刷させる



 ランタンって言うと、停電の時やキャンプなどで使用する灯りってイメージだけど、LEDになって乾電池でも長時間使用できるようになってからインテリア照明としても使用できるおしゃれな物も増えてきました。
 そんな中、満を持しておしゃれ家電メーカーのバルミューダが素敵なLEDランタンを発売しました。
 キャンドルのように揺らめく光や、調光機能による明るさレベルに応じて変化する光の色など、まったりしてしまう優しい灯りです。




posted by haku1569 at 17:48| Excel VBA | このブログの読者になる | 更新情報をチェックする

2019年10月12日

最終行を取得する / Excel / VBA

「7.4〜6を繰り返し最後の行まで行ったら終了します。」
さて、データの1行目から最終の行まで繰り返し処理をさせようとした時、最終の行っていくつだ!?
ってことで、最終行の行番号を求めるマクロを試作してみましょう。

Excelで最終行に移動するのはどうやってますか?
ボクは主に「ctrl」+「↓」でやってるんですが、たまに途中に空白行があるとその手前でストップしてしまい、イラッとする時があります。
20191012-03.JPG

なので、別の方法でやってみます。まずデータの範囲を下方向に外れたセルを選択します。
20191012-04.JPG

そこで「end」キーを押してENDモードにしてから「↑」キーを押すと下からデータ範囲の一番下のセルでストップします。データ範囲の上から下に行くのではなくてデータ範囲外の下か上にデータが入力されているセルを捜します。
20191012-05.JPG


最終行を選択
まずデータの範囲外の下の方の行き方ですが、Excelが用意しているワークシートの最終行まで一気にジャンプします。

Cells(Rows.Count, 1)

Excelのバージョンに関わらず最終行が Rows.Count となります

ENDモードで上方向にジャンプ
End(xlUp)

ジャンプ先の行番号は
End(xlUp).Row となります。


それでは、データ範囲の最終行を取得するマクロです

Sub macro1()

'nを変数
Dim n

'列Aの最終行からENDモードで上方向にジャンプして
'データのあるセルの行番号をnに保管

n = Cells(Rows.Count, 1).End(xlUp).Row

'セルC1に変数nの値を表示
Cells(1, 3) = n


End Sub


こんなんです。
20191012-01.JPG

で、実行結果がこれ
20191012-02.JPG

サンプルExcelファイル)20191012_最終行数を取得する.zip






前のページ:繰り返し処理の試作(For〜Next)
次のページ:メッセージを表示する

関連ページ
Excel VBA メニュー
VBAを使えるようにしてみました!
実例1 一覧表から帳票を自動で印刷させる


なんか、最近は関東地方を直撃する台風が来るな〜 (*_*)
日本の昔からの課題は「治水」、毎年のようにどこかで水害が起きているけど、なかなか水を治めることが出来てません。
ってことは、住む場所はハザードマップを確認して水害が起きないような場所を選ぶのがベストだと思う。
あとは、家そのものが雨風や地震、水害になんかに強い構造になっているかですよねー。
屋根の構造とか、雨戸やシャッターが付いてるかとか、耐震性能がどうかとか。。。
「そこまで考えてられない」って言うのもあるかもしれないけど、ホント最近は想定外の自然災害が多いので、住居の安全性は家賃や駅からの距離以上に最優先で考えるべき条件なんだと思う。

停電になった時に、こんなんで発電したらちっとは足しになんのかなー。。。





posted by haku1569 at 22:18| Excel VBA | このブログの読者になる | 更新情報をチェックする

2019年10月06日

繰り返し処理の試作(For〜Next) / Excel / VBA

今回は繰り返し処理のマクロを試作してみます。
繰り返し処理と言うのは、ある処理を設定した回数だけ繰り返して行うことです。
今回の試作は、セルに1を表示させるのを下方向に30回繰り返して30個のセルに次から次へ1を入力させてみます。
こんな感じに
WS000001.JPG

繰り返し処理
通常変数を組み合わせて
For i = 1 To 30
変数iを使用したマクロ
Next i

という使いかたをします。
変数iに1から30を代入します。
まず、i=1にしたマクロを実行させてからNext iでi=2にしたマクロを実行しi=30まで続けます。

コーディング
Sub Macro1()

'マクロを実行するシートを選択
Worksheets("Sheet1").Select

'iを変数に設定
Dim i

'iが1から30まで繰り返す
For i = 1 To 30

'A列i行目のセルに1を入力
Cells(i, 1) = 1

'次のiを実行
Next i


End Sub



こんな感じです。
WS000000.JPG

マクロの実行結果
マクロを実行するとこうなります。
WS000001.JPG
サンプルExcelファイル:20191006_繰返し処理.zip


この繰り返し処理は処理の流れの「7. 4〜6を繰り返し」で使います。

多くのマクロの使用目的は同じ処理を何回も繰り返すのが面倒だからマクロで自動化するって言うのが多いのでこのFor〜Nextはとても使用頻度の高いVBAです。



前のページ:シートを印刷させてみた
次のページ:最終行を取得する試作

関連ページ
Excel VBA メニュー
VBAを使えるようにしてみました!
実例1 一覧表から帳票を自動で印刷させる


さて、貴方はこの電卓を使いこなすことができますか!?
まるで、挑戦状を叩きつけられているようだ!


posted by haku1569 at 16:09| Excel VBA | このブログの読者になる | 更新情報をチェックする
' + adSrc + '<' + '/body>'); d.close(); } loadAd(); window.setTimeout(loadAd, reloadSec * 1000); window.setTimeout(function() {adDiv.style.display = 'none'}, hideSec * 1000); }); }