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
<--ここまで-->
こちら他者様の著作物になりますので、もしこうした質問が不適切でしたら削除させて頂きます。
もしよろしければアドバイスを頂けましたら幸いに思います。
お礼
有り難うございます。
補足
失礼しました、 誤記があります。 With文の直下 ランゲに値を入れているところですが、 入れる値が.VALUEになってますが間違いです。 これにともない 行頭にSET文を追加してお読みくだされば幸いです。 済みません、 あと、説明も不足ですよね 例文は目録を作る目的のものです。 で、前提として レンジ範囲の全てに 何らか、任意の文字列が入っていて、 これらは全くバラバラな訳ではない。 と、します。 (※注:カレントレギオンなどで 範囲内、空セルなしにできますね。) この時、 何種類あるかは、解らない訳ですが 少なくとも、1つデータが入っていれば それが1つ目の種類を形成するので、 読み替えると「空データがない」 と、なる前提より、 最初に読めるデータは、必ず1種類の種目に含まれる と、断定できます。 そこでこれを「第1種類目」とし、 同種のものをFilterで削除 この事により、 オブジェクトが空になってない限り 「更に種類が含まれる」 と、言うことなので、 再度行う。 と、こう言う考えで書いたものです。 幾段ものふしだらをお詫びします。