マクロ作成方法19(新規と変更)
マクロ作成方法は2つあると思います。
新規と変更です。
新規で作る場合は仕組みから考える必要があると思います。
新規でも前に作ったマクロを少し変更すればいい場合もあるので、これは変更と言って良いかも知れません。改造も変更です。
私も一回作ったマクロを元に同じようなマクロを作ることは結構多いです。
まったく新しい考えで仕組みから作るのはすごく苦労します。
・新規の場合
仕組みを考えるのに時間がかかる。
自由に作っても良い。
さらにスキルが必要な時もある。
・変更の場合
変更する時に注意する点があるか、自由にならないこともある。
(家のリホームの様に部分的に壊して新しく作るイメージです)
新規の仕組みを考えなくて良いので時間がかからない。
(すこしは、考える仕組みはあるかも知れませんが?)
変更でもすごく難しかったら新規に考えるべきかも知れません。
いずれも、マクロは部分的に部品を作って、最後に組み立てるイメージだと思います。
例えば、車の場合も色んな部品で出来ていますが最後に組み立てられて完成です。
エンジンやボデイなど大きな部品に付属する小さい部品など複雑ですが、仕組みを知れば理解出来るような気がします。
1.ナンバーズ4の集計で全部を一括集計した後、さらに細かく集計したいと思うことがあります。
2. 1.を最初から考えるのが面倒なら、とりあえず全体集計を考えてから任意の回数での集計方法等を考えて行きます。
新規も変更も分からない時は、いつもネットでググってマクロの情報を探しています。
自分で考えても分からないです。
とにかく、分かる人のスキルを真似するのが早いですね。
---------------------------------------------------------------------------------------
InputBoxでキャンセルボタン押下でいつもエラーになってました。
修正するのに下記のサイト参考にしました。
•InputBox関数の簡単な使用例
Sub sample_ef011_03()
Dim strData As String
strData = InputBox("値を入力してください。")
'キャンセルされたかどうかの判断はStrPtr関数で行います。
If StrPtr(strData) = 0 Then
'キャンセルボタンか×ボタンが押下された場合
MsgBox "入力がキャンセルされました。", vbExclamation
ElseIf strData = "" Then
'値を入力しないでOKボタンを押下した場合
MsgBox "値が未入力です。", vbExclamation
Else
'値を入力してOKボタンを押下した場合
MsgBox "入力された値は" & strData & "です。", vbInformation
End If
End Sub
---------------------------------------------------------------------------------------
Sub n4bx_pea_nkai() 'ボックスペア集計 (重複あり)任意回集計
Dim xa, ya, i, j, k, l, m, n, deme(4), lastkai, skai As Integer
Dim strData As String
Sheets("出現数").Select
Range("gh5:gq14").Select
Selection.ClearContents
lastkai = Sheets("ストレートパターン").Cells(2, 15) + 3
strData = InputBox("直近何回分")
'キャンセルされたかどうかの判断はStrPtr関数で行います。
If StrPtr(strData) = 0 Then
'キャンセルボタンか×ボタンが押下された場合
MsgBox "入力がキャンセルされました。", vbExclamation
ElseIf strData = "" Then
'値を入力しないでOKボタンを押下した場合
MsgBox "値が未入力です。", vbExclamation
Else
'値を入力してOKボタンを押下した場合
'MsgBox "入力された値は" & strData & "です。", vbInformation
skai = strData - 1
End If
i = lastkai - skai
Call saikeisanoff
Do Until Sheets("ストレートパターン").Cells(i, 3) = ""
Cells(1, 190) = Val(Left(Sheets("ストレートパターン").Cells(i, 3), 1))
Cells(1, 191) = Val(Mid(Sheets("ストレートパターン").Cells(i, 3), 2, 1))
Cells(1, 192) = Val(Mid(Sheets("ストレートパターン").Cells(i, 3), 3, 1))
Cells(1, 193) = Val(Right(Sheets("ストレートパターン").Cells(i, 3), 1))
Cells(1, 195) = "=small(gh1:gk1, 1)"
Cells(1, 196) = "=small(gh1:gk1, 2)"
Cells(1, 197) = "=small(gh1:gk1, 3)"
Cells(1, 198) = "=small(gh1:gk1, 4)"
For j = 1 To 4
deme(j) = Cells(1, 194 + j)
Next j
For k = 1 To 3
xa = deme(1)
ya = deme(k + 1)
Cells(xa + 5, 190 + ya) = Cells(xa + 5, 190 + ya) + 1
Next k
For l = 2 To 3
xa = deme(2)
ya = deme(l + 1)
Cells(xa + 5, 190 + ya) = Cells(xa + 5, 190 + ya) + 1
Next l
xa = deme(3)
ya = deme(4)
Cells(xa + 5, 190 + ya) = Cells(xa + 5, 190 + ya) + 1
i = i + 1
Loop
Call saikeisanon
Cells(3, 187) = ""
Cells(3, 189) = " 直近" & skai + 1 & "回分"
Cells(1, 190).Select
End Sub
saikeisanoff saikeisanonは
マクロのスピードアップ