ExcelVBA マクロの数値を2ケタに変更したい
http://www.exvba.com/blog/?p=3974
こちらの百ます計算のシートをダウンロードし活用させて頂こうと思っていますが、2ケタのものが作れるかを試してみたいと思っています。例えば26+57とか、81-32とかです。掛け算だけは、2ケタ×1ケタにしたいです。
当方プログラムが初心者でスキル不足のため、VBAがよく分かりません。以下がスクリプトのようですが、色々数値を変えてみましたがダメでした。
<--ここから-->
Option Explicit
'100マス計算ジェネレータ by 達人養成塾 http://www.exvba.com/
Sub main()
Dim calc As Long
With Application
calc = .Calculation
.Calculation = xlCalculationManual
InputBase Range("B5"), "+", False
InputBase Range("B18"), "-", True
InputBase Range("B31"), "×", False
.Calculation = calc
' .Calculation = xlAutomatic
End With
End Sub
Sub InputBase(bs As Range, op As String, bType As Boolean)
With bs
If Not IsEmpty(bs) Then
.CurrentRegion.ClearContents
End If
If Not IsEmpty(.Offset(, 12)) Then
.Offset(, 12).CurrentRegion.ClearContents
End If
SetLine bs, op, True, False
SetLine bs, op, False, bType
.CurrentRegion.Copy Destination:=.Offset(, 12)
ExeCalc bs, op
End With
End Sub
Private Sub SetLine(base As Range, ope As String, bRow As Boolean, add10 As Boolean) '起点セル、演算子、行か列か、値に10を足すか
Dim c As Long, ar(9) As Long
With base
.Value = ope
Application.Calculate
With Worksheets("rnd")
.Range("A2:B12").Sort key1:=.Range("B2"), order1:=xlAscending, Header:=xlYes
For c = 3 To 12
ar(c - 3) = .Range("A" & c).Value
Next
End With
If bRow Then
For c = 1 To 10
.Offset(c).Value = ar(c - 1)
Next
ElseIf Not add10 Then
For c = 1 To 10
.Offset(, c).Value = ar(c - 1)
Next
Else
For c = 1 To 10
.Offset(, c).Value = ar(c - 1) + 10
Next
End If
End With
End Sub
Private Sub ExeCalc(base As Range, ope As String)
Dim r As Long, c As Long
With base.Offset(, 12)
Select Case ope
Case "+"
For r = 1 To 10
For c = 1 To 10
.Offset(r, c).Value = .Offset(r).Value + .Offset(, c).Value
Next
Next
Case "-"
For r = 1 To 10
For c = 1 To 10
.Offset(r, c).Value = .Offset(, c).Value - .Offset(r).Value
Next
Next
Case Else
For r = 1 To 10
For c = 1 To 10
.Offset(r, c).Value = .Offset(r).Value * .Offset(, c).Value
Next
Next
End Select
End With
End Sub
<--ここまで-->
こちら他者様の著作物になりますので、もしこうした質問が不適切でしたら削除させて頂きます。
もしよろしければアドバイスを頂けましたら幸いに思います。
お礼
どうもありがとうございました。 言語は忘れてました。すいません。 上記の様にFunctionにすることで 解決しました。 ありがとうございました。