Hirokiのブログ -22ページ目

有罪。。。

この人・・・有罪やと。。。



Hirokiのブログ

ココ で出来るよ

新たなターゲット。。。

今回のターゲットはこの人。。。

可哀そうに・・・。


まぁ、俺じゃないから良いんだけどね★



Hirokiのブログ

ちょっとプログラムちっく

今回は、もうちくっとプログラムちっくなVBAを紹介します。

かといって、一気にハードルを上げるつもりはごぜーません。


VBAを始めるために、まずは前回の「マクロの記録 」をしてください。

これが一番始める前の下準備で簡単ですからね~~



ところで、またまた脱線しますが、マクロの記録をする時に表示される画面に

「マクロの保存先」ってあるの気が付きました?

「作業中のブック」「新しいブック」「個人用マクロ ブック」ってあります。


「作業中のブック」・・・これは今作業しているExcelファイルにVBAを記録させます。

「新しいブック」・・・これは新しくExcelファイルを作成して、そこにVBAを記録させます。

「個人用マクロ ブック」・・・これはExcelそのものに記録させるっていうイメージです。


なので、色々なExcelファイルに対して、行いたいVBAは「個人用マクロ ブック」に保存してください。

今回のようなテストVBAは「作業中のブック」にしておいてください。




さて、話に戻りましょう。

今回は、プログラムちっくなのというテーマで

「A列に入力されている複数行(行数未確定)の数字の奇数のみの合計を算出するPG」

わかりにくいなぁ・・・。A1が1、A2が2、A3が3の場合は4が求められるって意味です。



Sub Macro1()
   Dim intRow As Integer 'No1
   Dim intSum As Integer 'No1

   intRow = 1 'No2
   intSum = 0 'No2

   While Cells(intRow, 1) <> "" 'No3

      If (Cells(intRow, 1) Mod 2) = 1 Then 'No4
         intSum = intSum + Cells(intRow, 1) 'No5
      End If

      intRow = intRow + 1 'No6
   Wend


   Cells(1, 2) = intSum 'No7

End Sub


No1

変数の定義

 変数っていうのは、モノを入れる箱の事です。


 Dim 変数名 As データ型


 これが定義方法です。

 今回は「intRow」行番号計算用と「intSum」合計値計算用の変数をInteger型で定義しました。

 

 データ型は色々あります。

 Integer -32,768~32,767の範囲の整数を格納できます。

 Currency 15桁の整数部と4桁の小数部を格納できます。

 Date 日付を格納できます。

 String 文字を格納できます。

 ・・・と他にも色々ありますが、今はこれくらいで。。。


No2

変数の初期化

 変数を定義したら、必ず初期化してください。

 マナーみたいなもんです。

 intRowは1行目から処理したいから、1をセット

 intSumは合計値を処理したいから、0をセット


No3

条件が当てはまるまで繰り返す

 今回のVBAのミソの1つです。


 While ○○○

 Wend

 これは条件の○○○が成立する場合は、この間をクルクル回るってことです。


 Cells(行番号,列番号)とすることで、セルの値を取得できます。

 行番号に変数を用いることで、参照するセルを移動させる事ができます。


 (Cells(intRow,1) <> "")の、<>はノットイコールを指します。


 よって、今回のケースの場合は、参照するセルが空白でない場合は繰り返すってなります。


No4

条件が当てはまる場合のみ処理をする

 こちらもミソの1つです。


 If ○○○ Then

  △△△

 Else

  □□□

 End If

 ○○○の条件が成立する場合は、△△△の処理をします。

 ※Elseを記述すると、不成立の場合の処理もできます。今回は未使用。


 (○ Mod △) は○の値を△で割った余りを求める処理です。

 今回の場合は奇数のみを加算するという事で、2で割って余りが1の場合のみ処理をするようにしています。


No5

値の加算


No6

次の行へ移る


No7

計算結果をB2にセットする



A列に入っている値が空欄になった時点で処理が終了されるので、

A列が虫食い状態で値が入っている場合は別の手を考える必要があります。


ではでは、今日はこんくらいで。

See You...