新人SEです。
teratailは初利用のため、このような質問の仕方が正しいのかがわからないのですが、下記のような点で困っています。
ボールドテキスト
学習のため、エクセルシートにボタン、フォームを張り付けて電卓を作成しているのですが
VBAで
()
でくくった部分から先に計算していくような作りにするにはどうすればいいでしょうか?
・スタックを利用する、という方法が1案としてあるのですが、
コードに書き起こす際にどのように書けば良いのかがわかりません
コード例などもご教授いただければ助かります。
プログラミング経験が浅いもので何卒、よろしくお願い申し上げます。
作ろうとしている電卓の仕様が判りません。四則演算のボタン[+ - * / ]と、括弧のボタン[( )]があるという事なのですか? 「()でくくった部分」というのは、どういう形式で、どこにあるのですか?
スタックをどのように利用しようとしているのですか?
自分が何をしたいかを、人に判るように説明してください。
四則演算のボタンと[+ - * / ]と、括弧()のボタンがあるということです。
数字、四則演算同様、括弧()のボタンを押せば計算結果を出力するセルの値末尾に括弧()が追加されます。
(すみません、本文ではフォームと書きましたが入力値、計算結果の表示はセルで行います)
スタックについては調べていますが、ロジックの理解がまだできていないのではネットで調べたけど使い方やロジックが組めていないです。
よろしくお願いいたします。
()がある場合に困っているという事ですか?
では、四則演算部分のロジック(またはコード)は質問に追記されて下さい。
ありがとうございます
急用のため、外出中でして・・・
帰宅し次第すぐに詳細を記述しますので、何卒よろしくお願い申し上げます
帰宅いたしましたので投稿させていただきます。
コードをそのまま載せるのは自分でもいかがなものか(読みにくいかも?)と思うのですが、現時点で書けたのは下記です。
何卒よろしくお願い申し上げます。
Dim w As Double
Dim sWaku
Private Sub ボタン0_Click()
If (Range("C1") = "0") Then
Set Target = Range("C1")
Target.Value = "0"
Else
Set Target = Range("C1")
Target.Value = Target.Value & "0"
End If
End Sub
Private Sub ボタン1_Click()
'0の場合表示文字が1
'MsgBox (Range("C1"))
If (Range("C1") = "0") Then
Set Target = Range("C1")
Target.Value = "1"
Else
Set Target = Range("C1")
Target.Value = Target.Value & "1"
End If
End Sub
Private Sub ボタン2_Click()
If (Range("C1") = "0") Then
Set Target = Range("C1")
Target.Value = "2"
Else
Set Target = Range("C1")
Target.Value = Target.Value & "2"
End If
End Sub
Private Sub ボタン3_Click()
If (Range("C1") = "0") Then
Set Target = Range("C1")
Target.Value = "3"
Else
Set Target = Range("C1")
Target.Value = Target.Value & "3"
End If
End Sub
Private Sub ボタン4_Click()
If (Range("C1") = "0") Then
Set Target = Range("C1")
Target.Value = "4"
Else
Set Target = Range("C1")
Target.Value = Target.Value & "4"
End If
End Sub
Private Sub ボタン5_Click()
If (Range("C1") = "0") Then
Set Target = Range("C1")
Target.Value = "5"
Else
Set Target = Range("C1")
Target.Value = Target.Value & "5"
End If
End Sub
Private Sub ボタン6_Click()
If (Range("C1") = "0") Then
Set Target = Range("C1")
Target.Value = "6"
Else
Set Target = Range("C1")
Target.Value = Target.Value & "6"
End If
End Sub
Private Sub ボタン7_Click()
If (Range("C1") = "0") Then
Set Target = Range("C1")
Target.Value = "7"
Else
Set Target = Range("C1")
Target.Value = Target.Value & "7"
End If
End Sub
Private Sub ボタン8_Click()
If (Range("C1") = "0") Then
Set Target = Range("C1")
Target.Value = "8"
Else
Set Target = Range("C1")
Target.Value = Target.Value & "8"
End If
End Sub
Private Sub ボタン9_Click()
If (Range("C1") = "0") Then
Set Target = Range("C1")
Target.Value = "9"
Else
Set Target = Range("C1")
Target.Value = Target.Value & "9"
End If
End Sub
Private Sub ボタンmns_Click()
' MsgBox ("-")
If ((Right((Range("C1")), 1) <> "+") And (Right((Range("C1")), 1) <> "-") And (Right((Range("C1")), 1) <> "*") And (Right((Range("C1")), 1) <> "/")) Then
Set Target = Range("C1")
Target.Value = Target.Value & "-"
Else
End If
End Sub
Private Sub ボタンpls_Click()
' MsgBox Right((Range("C1")), 1)
If ((Right((Range("C1")), 1) <> "+") And (Right((Range("C1")), 1) <> "-") And (Right((Range("C1")), 1) <> "*") And (Right((Range("C1")), 1) <> "/")) Then
' MsgBox ("+")
Set Target = Range("C1")
Target.Value = Target.Value & "+"
Else
End If
End Sub
Private Sub ボタンkake_Click()
If ((Right((Range("C1")), 1) <> "+") And (Right((Range("C1")), 1) <> "-") And (Right((Range("C1")), 1) <> "*") And (Right((Range("C1")), 1) <> "/")) Then
' MsgBox ("*")
Set Target = Range("C1")
Target.Value = Target.Value & "*"
Else
End If
End Sub
Private Sub ボタンwari_Click()
If ((Right((Range("C1")), 1) <> "+") And (Right((Range("C1")), 1) <> "-") And (Right((Range("C1")), 1) <> "*") And (Right((Range("C1")), 1) <> "/")) Then
' MsgBox ("/")
Set Target = Range("C1")
Target.Value = Target.Value & "/"
Else
End If
End Sub
Private Sub ボタンeql_Click()
If (Right((Range("C1")), 1) <> "+") And (Right((Range("C1")), 1) <> "-") And (Right((Range("C1")), 1) <> "*") And (Right((Range("C1")), 1) <> "/") Then
' MsgBox ("=")
Set Target = Range("C1")
Target.Value = "=" & Target.Value
' MsgBox (Target.Value)
Else
End If
' End If
End Sub
質問やコメントは編集できます。
コメントは削除して、マークダウンで、質問に追記してください。