teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

注釈をいれました。

2015/07/24 04:05

投稿

piyotaka
piyotaka

スコア39

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)","#","+")