質問編集履歴
1
注釈をいれました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -14,13 +14,14 @@
|
|
14
14
|
"※『=』は必要ありません。"&vbCr&_
|
15
15
|
"掛け算は『*』、割り算は『/』を使用してください。","数式の入力")
|
16
16
|
|
17
|
-
|
17
|
+
'Bに入力情報を入れ、For文とMidで一文字ずつ配列に入れる。
|
18
18
|
Y = Len(B)
|
19
19
|
i = 0
|
20
20
|
|
21
21
|
For i = 0 To Y - 1
|
22
22
|
A(i) = Mid(B,i+1,1)
|
23
23
|
|
24
|
+
'iが演算子の時に、-1することにより0~i-1の部分までを変数に入れる。
|
24
25
|
If InStr(A(i),"+") Or InStr(A(i),"-") Or InStr(A(i),"*") Or InStr(A(i),"/") Then
|
25
26
|
|
26
27
|
|
@@ -37,7 +38,7 @@
|
|
37
38
|
Next
|
38
39
|
|
39
40
|
|
40
|
-
|
41
|
+
'iが演算子時に、+1することにより0~i+1を変数に入れる
|
41
42
|
If InStr(A(i),"+") Or InStr(A(i),"-") Or InStr(A(i),"*") Or InStr(A(i),"/") Then
|
42
43
|
|
43
44
|
|
@@ -53,7 +54,7 @@
|
|
53
54
|
|
54
55
|
|
55
56
|
|
56
|
-
|
57
|
+
’入力情報から出した変数で手に入れた部分を空白にし、空白を削除。
|
57
58
|
UKE = Replace(B,x2,"")
|
58
59
|
OK = Trim(UKE)
|
59
60
|
|
@@ -87,7 +88,7 @@
|
|
87
88
|
Next
|
88
89
|
|
89
90
|
|
90
|
-
|
91
|
+
'★まで繰り返し。
|
91
92
|
For i3 = 0 To Y2 - 1
|
92
93
|
A3(i3) = Mid(OK,i3+1,1)
|
93
94
|
|
@@ -114,10 +115,10 @@
|
|
114
115
|
|
115
116
|
|
116
117
|
|
117
|
-
MsgBox "x3="&x3
|
118
|
+
'MsgBox "x3="&x3
|
118
|
-
MsgBox "x4="&x4
|
119
|
+
'MsgBox "x4="&x4
|
119
|
-
MsgBox "UKE2="&UKE2
|
120
|
+
'MsgBox "UKE2="&UKE2
|
120
|
-
MsgBox "OK2="&OK2
|
121
|
+
'MsgBox "OK2="&OK2
|
121
122
|
|
122
123
|
|
123
124
|
|
@@ -172,10 +173,10 @@
|
|
172
173
|
|
173
174
|
|
174
175
|
|
175
|
-
MsgBox "x5="&x5
|
176
|
+
'MsgBox "x5="&x5
|
176
|
-
MsgBox "x6="&x6
|
177
|
+
'MsgBox "x6="&x6
|
177
|
-
MsgBox "UKE3="&UKE3
|
178
|
+
'MsgBox "UKE3="&UKE3
|
178
|
-
MsgBox "OK3="&OK3
|
179
|
+
'MsgBox "OK3="&OK3
|
179
180
|
|
180
181
|
Y4 =Len(OK3)
|
181
182
|
i6 = 0
|
@@ -226,17 +227,22 @@
|
|
226
227
|
|
227
228
|
|
228
229
|
|
229
|
-
MsgBox "x7="&x7
|
230
|
+
'MsgBox "x7="&x7
|
230
|
-
MsgBox "x8="&x8
|
231
|
+
'MsgBox "x8="&x8
|
231
|
-
MsgBox "UKE4="&UKE4
|
232
|
+
'MsgBox "UKE4="&UKE4
|
232
|
-
MsgBox "OK4="&OK4
|
233
|
+
'MsgBox "OK4="&OK4
|
234
|
+
'★これで、数値だけの変数と数値と演算子が入った変数ができる。
|
233
235
|
|
234
|
-
|
235
236
|
'A8 = CDbl(x)+CDbl(x3)+CDbl(x5)+CDbl(x7)+CDbl(OK4)
|
236
237
|
|
237
238
|
'Y5 = Len(CDbl(x)+CDbl(x3)+CDbl(x5)+CDbl(x7)+CDbl(OK4))
|
238
239
|
|
239
|
-
|
240
|
+
'ここから主題。
|
241
|
+
'例えばA="+"、B=1,C=1として、
|
242
|
+
'D=BACでD=2にはならない。
|
243
|
+
'なので、Replaceで一つ一つ置換していこうと思う。
|
244
|
+
'しかし、置換した内容は保存されず、元に戻ってしまう。
|
245
|
+
'尚、Eval関数は使用不可とする。
|
240
246
|
If InStr(x2,"+") Then
|
241
247
|
|
242
248
|
A8 = Replace("CDbl(x)#CDbl(x3)$CDbl(x5)&CDbl(x7)%CDbl(OK4)","#","+")
|