Excel VBAを始めるには(016)

Excel VBAを始めるには...
空Macroのすすめ

VBAを記述する時、いきなりSourceを書き始めても良いのですが、これには
危険な罠があります。
Excelはは常に一個のSheetが開かれる構造となっています。
そのSheetだけを使ってのVBAならOKですが、複数のSheetを利用している場合、
VBAではどのSheetを使うのかを明示する必要があります。
これをしないと、開いているSheetに実行することになります。
例えば、指定した範囲を全部消去するVBAだった場合、Sheetを明示しないと、
いま、開いてるSheetにそれを実行します、これはかなり危険です。

これを防止する意味で、私はVBAの書き始めには「空Macro」を作るように勧めています。
空Macroとは、Macro の記録スタートし、操作を行うSheetをクリックし、記録終了。
これだけです。
Macroを開いてみると、対象のSheetがセレクトされています。
ここからVBAのスタートになります。

Macroの最上位行のExplicit は変数の明示を強制した場合に自動記入されます

わかお かずまさ
VegaSystems

📷📷📷📷📷📷
#LAN_PRO
#Bloguru
#kuma

People Who Wowed This Post

Excel VBAを始めるには(015)

Excel VBAを始めるには...
VBAの変数宣言の強制についての説明です。
私のサンプルでは、Dimを使って変数の宣言を必ず行っています。
この宣言は面倒なようですが、あとあとを考えると絶対にすべきです。

ところがディフォルトでは、この変数宣言は強制されていません。
VBAのツールのオプションに、この変数宣言を強制するチェックボックス
があるので、必ずチェックを入れておきましょう。


わかお かずまさ
VegaSystems

📷📷📷📷📷📷
#LAN_PRO
#kuma

People Who Wowed This Post

月曜日の朝はラッシュ(2022.11.21)

月曜日の朝はいつもラッシュになります。
特に名古屋方面は、運送・通勤が混在しての通行量です・・・


わかお かずまさ
VegaSystems

📷📷📷📷📷📷
#LAN_PRO
#Bloguru
#kuma_ichinomiya
#VegaSystems
#photography_Ichinomiya
#AVIUTL
#HCX2000
#sunrise_ichinomiya
#Sunset_ichinomiya
#日の出_一宮
#夜明け_一宮
#kuma

People Who Wowed This Post

Excel VBAを始めるには(014)

Excel VBAを始めるには...
今回はIF-Thenの条件判定式。
数あてGame、乱数で発生させた数値と入力した数値が一致させる。
10回が限度。
入力都度、大きいか、小さいかを答える仕組み。
更にExcelらしく、その値をセルに記入させた。

以下、Source

Sub kazuate01()
'
' kazuate01 Macro
'
'乱数で発生させ数を当てるGame

'
Dim Ran_n, Ipt_n As Integer

Dim i As Integer

Dim Str_c As String



Sheets("Sheet4").Select

'データ表示部分の初期化

Range("A1:C11").Select
Selection.ClearContents


'最初のアナウンス画面

MsgBox ("数あてのゲームです 10回まで")

Ran_n = Int((99 + 1) * Rnd + 1) 'ここで99までの乱数を発生させる



For i = 1 To 10

Str_c = InputBox("1-99までの値を入力してください") '数値入力画面

Ipt_n = Val(Str_c) '入力は文字型のため、数値に変換


If Ipt_n > Ran_n Then 'ここからが判定式入力数値と比較する

MsgBox ("Too Big!!") '結果をセルに書き込む
Cells(i, 1) = Ipt_n
Cells(i, 2) = "Too Big"

End If

If Ipt_n < Ran_n Then

MsgBox ("Too Small!!")
Cells(i, 1) = Ipt_n
Cells(i, 2) = "Too Small"


End If

If Ipt_n = Ran_n Then

MsgBox ("OK!!")

Cells(i, 1) = Ipt_n
Cells(i, 2) = "OK!!"

i = 10 '完了したらLoopから脱出

End If

Next i



End Sub



わかお かずまさ
VegaSystems

📷📷📷📷📷📷
#LAN_PRO
#Bloguru
#kuma

People Who Wowed This Post

柿の収穫(2022.11.19)

今年、最後の柿の収穫です。
今年は9月末から始まり、二ヶ月もかかりました。
柿の実にはヘソと呼ばれる花弁の残存があり、これが硬いため、他の実に傷を付ける
ので、収穫時に除去します。
慣れれば小指で跳ね飛ばすことが出来ます(動画参照)


わかお かずまさ
VegaSystems

📷📷📷📷📷📷
#LAN_PRO
#Bloguru
#kuma_ichinomiya
#VegaSystems
#photography_Ichinomiya

#AVIUTL



#kuma

People Who Wowed This Post

Excel VBAを始めるには(013)

Excel VBAを始めるには...
[12]で作成した、乱数発生の一覧表500セルの集計一覧表の作成です。
1-99/100-199/200-299・・・・10分類を、列に集計・一覧にします。
[12]の応用で、別のセルに集計する手法で、Sheetでの関数操作では大変です。
こんな場合はVBAが強みを発揮します。

以下、そのSource

’---------------------------------------------------------------------
Sub Syukei01()
'
' Syukei01 Macro
'
' セルの内容を一定区分で集計します

Dim i, j As Integer
'Dim Cnt_n As Integer

' 集計用のカウンター用変数
Dim C100_n, C200_n, C300_n, C400_n, C500_n, C600_n, C700_n, C800_n, C900_n, C1000_n As Integer


Sheets("Sheet3").Select

Call Syukei_Cls '集計一覧のデータの初期化 プロシージャを呼ぶ

C100_n = 2 'カウンター変数を座標用数値に
C200_n = 2
C300_n = 2
C400_n = 2
C500_n = 2
C600_n = 2
C700_n = 2
C800_n = 2
C900_n = 2
C1000_n = 2


For i = 1 To 25
For j = 1 To 20

Cel_n = Val(Cells(i, j)) 'セルの値を数値化する

Cells(i, j).Select


Select Case Cel_n 'ここでセルの値を識別

Case 1 To 99

Cells(C100_n, 22) = Cells(i, j) 'セルの内容を区分された列に追加

C100_n = C100_n + 1 ' 座標をプラス


Case 100 To 199

Cells(C200_n, 23) = Cells(i, j)

C200_n = C200_n + 1


Case 200 To 299

Cells(C300_n, 24) = Cells(i, j)

C300_n = C300_n + 1


Case 300 To 399

Cells(C400_n, 25) = Cells(i, j)

C400_n = C400_n + 1


Case 400 To 499

Cells(C500_n, 26) = Cells(i, j)

C500_n = C500_n + 1


Case 500 To 599

Cells(C600_n, 27) = Cells(i, j)

C600_n = C600_n + 1


Case 600 To 699

Cells(C700_n, 28) = Cells(i, j)

C700_n = C700_n + 1


Case 700 To 799

Cells(C800_n, 29) = Cells(i, j)

C800_n = C800_n + 1


Case 800 To 899

Cells(C900_n, 30) = Cells(i, j)

C900_n = C900_n + 1


Case Else

Cells(C1000_n, 31) = Cells(i, j)

C1000_n = C1000_n + 1


End Select



Next j
Next i


'
End Sub
'-----------------------------------------------------------------------
Sub Syukei_Cls()
'
' Syukei_Cls Macro
'

'
Range("V2:AE100").Select
Selection.ClearContents


End Sub



わかお かずまさ
VegaSystems

📷📷📷📷📷📷
#LAN_PRO
#Bloguru
#kuma

People Who Wowed This Post

今日の日の出(2022.11.18)😄

今日の日の出(2022.11....
地平線に霞があり遠景がききません。
昨日は社外にあった観葉植物の屋内取り込み、勝手口のクロージャーの交換など
本業以外で時間をとられました。

明日は最後の柿の収穫の予定・・・・


わかお かずまさ
VegaSystems

📷📷📷📷📷📷
#LAN_PRO
#Bloguru
#kuma_ichinomiya
#VegaSystems
#photography_Ichinomiya
#OM_D_E_M1X
#sunrise_ichinomiya
#Sunset_ichinomiya
#日の出_一宮
#夜明け_一宮
#kuma

People Who Wowed This Post

Excel VBAを始めるには(012)

Excel VBAを始めるには...
今回は、セルの値に応じた色での塗りつぶしです。

まず、セルを乱数を発生させた値で埋めます。

次が本番、このセルの値を読み込み、該当する色で
塗りつぶします。

意外に簡単なプログラむです。

以下、Source

Sub RANSU_01()
'
' RANSU_01 Macro
' 乱数を発生させる

Dim i, j As Integer

Dim Cnt_n As Integer

Sheets("Sheet3").Select


For i = 1 To 25
For j = 1 To 20

' 乱数を1-999の間で発生させる

Cnt_n = Int((999 - 1 + 1) * Rnd + 1)

Cells(i, j) = Cnt_n

Next j
Next i

'

'
End Sub
'--------------------------------------------------
Sub Color_01()
'
' Color_01 Macro
'
' セルの数値に応じて塗りつぶしの色を変える

Dim i, j As Integer

Dim Cel_n As Integer

Sheets("Sheet3").Select


For i = 1 To 25
For j = 1 To 20

Cel_n = Val(Cells(i, j)) 'セルの値を数値化する

Cells(i, j).Select

With Selection.Interior 'With から End Withまでは色を付ける命令
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic

Select Case Cel_n 'ここでセルの値を判定し、色を指定する

Case 1 To 99
.ColorIndex = 3

Case 100 To 199
.ColorIndex = 4

Case 200 To 299
.ColorIndex = 5

Case 300 To 399
.ColorIndex = 6

Case 400 To 499
.ColorIndex = 7

Case 500 To 599
.ColorIndex = 8

Case 600 To 699
.ColorIndex = 9

Case 700 To 799
.ColorIndex = 10

Case 800 To 899
.ColorIndex = 43

Case Else
.ColorIndex = 44

End Select

.TintAndShade = 0
.PatternTintAndShade = 0

End With

Next j
Next i


End Sub



わかお かずまさ
VegaSystems

📷📷📷📷📷📷
#LAN_PRO
#Bloguru
#kuma

People Who Wowed This Post

kuma山荘の電飾

kuma山荘の電飾を下から撮影してみました。


わかお かずまさ
VegaSystems

📷📷📷📷📷📷
#LAN_PRO
#Bloguru
#kuma_ichinomiya
#VegaSystems
#photography_Ichinomiya
#AVIUTL
#LX100M2
#kuma

People Who Wowed This Post

Excel VBAを始めるには(011)

Excel VBAを始めるには...
20X25のセルに連続番号を入れるだけのVBAです。
Renzoku1は、X-Yの連続番号、
Renzoku 2は、Y-Xで連番を振ります。

今回はCellsの理解のためのVBAです。
ExcelのSheetを使うだけではCellsはあまり使いませんが
VBAでは多用します。Range(”A1”)などでは変数での変化
が出来ませんからCellsばかりになってしまいます。

簡単なSourceですが、中身は重要です。



Sub Renzoku1()
'
' Renzoku Macro

'セルに連続の数値を記入するMacro

Dim i, j As Integer
Dim Cnt_n As Integer

Sheets("Sheet1").Select

Cnt_n = 1 'ここで初期値を1とします

For i = 1 To 20
For j = 1 To 25

Cells(i, j) = Cnt_n ' jとiの位置に注意

Cnt_n = Cnt_n + 1 ’Cnt_nに「1」を加算します、これをインクリメントと言います。

Next j
Next i



'
End Sub


Sub Renzoku2()
'
' Renzoku Macro

'セルに連続の数値を記入するMacro

Dim i, j As Integer
Dim Cnt_n As Integer

Sheets("Sheet2").Select

Cnt_n = 1

For i = 1 To 20
For j = 1 To 25

Cells(j, i) = Cnt_n ' jとiの位置に注意

Cnt_n = Cnt_n + 1

Next j
Next i



'
End Sub




わかお かずまさ
VegaSystems

📷📷📷📷📷📷
#LAN_PRO
#Bloguru
#kuma

People Who Wowed This Post

×
  • If you are a bloguru member, please login.
    Login
  • If you are not a bloguru member, you may request a free account here:
    Request Account