Welcome to
On Feet Nation
brown smith Online
Jack Miller Online
Robert Online
Linda Online
Christopher Online
Jackey Paual Online
DevinMarco Online
smithmorgan Online
goditac499 Online
======================================================================
Download Bigfoot By the Foot Heat Press Deluxe Starter Kit new edition of windows 7, 10 x86 bit from the server or mirror
======================================================================
Sign Shop Starter Kits | USCutter Bundles the Most Popular ItemsFaster PDF to JPG conversion Multiple processors in action. Ads free No clutter,
just a clean interface. File management Manage your uploaded files online.
Online service to convert PDF to JPG and other image formats. Free and
convenient service to convert PDF to single image or to the set of images.Vinyl Cutting Equipment | USCutter
Showcalc
'イベントを持つコマンドボタン型の変数を宣言
Private WithEvents Btn As MSForms.CommandButton
'ボタンの数字を格納する変数を宣言
Private Index As Integer
Public Sub NewClass(ByVal c As MSForms.CommandButton, _
ByVal i As Integer)
'いわゆるコンストラクタ処理
'引数のコマンドボタンを変数に格納
Set Btn = c
'コマンドボタンの数字を変数に格納
Index = i
End Sub
Private Sub Btn_Click()
'数字のボタン(0~9)を押した時の処理
If IsNew Then
'数字の新規入力時
frmCalc.TextBox1.Text = Index
Else
'数字の入力途中
frmCalc.TextBox1.Text = _
CLng(frmCalc.TextBox1.Text & Index)
End If
'数字の入力途中にする
IsNew = False
End Sub
変更箇所は、Private Sub Btn_Click() のコードだけです。
IsNew という変数が登場しました。
この変数は、True と False の2種類の値をとることができるブーリアン(Boolean)型の変数です。
この変数にTrueが格納されている場合は、新規入力とします。
つまり、今までの数字は、無視して、最初に入力される数字ということです。
加減乗除のボタンと、=ボタン、ACボタンが押された直後に、Trueが格納されます。
数字の入力直後で、IsNew に Falseを格納します。
これで、2桁以上の数字の表示が可能となります。
なお、このIsNew という変数は、ユーザーフォームからもこのClassモジュールからも使用します。
従って、どのモジュールからも使用できるように、標準モジュールに宣言を記述します。
Public IsNew As Boolean
Public Sub ShowCalc()
frmCalc.Show
End Sub
Private NumBtn(0 To 9) As New Class1
Private stack(0 To 1) As Currency
Private Action As Integer
Private Enum Act
Equal
Plus
Minus
Multi
Devi
End Enum
Private Sub UserForm_Initialize()
'インスタンスの生成
Dim i As Integer
For i = 0 To 9
NumBtn(i).NewClass Controls("b" & i), i
Next
'表示設定
TextBox1.Text = 0
UserForm_Initialize プロシージャの中の InitCalc は、サブプロシージャです。
Private Sub InitCalc()
'初期化処理
'スタックと記号の初期化
stack(0) = 0
stack(1) = 0
Action = Act.Plus
'表示クリアフラグの初期化
IsNew = True
Private Sub Calc(ByVal CurrentAction As Integer)
'計算処理(記号ボタンが押されると呼び出される)
'電卓窓の数字を変数に格納
Dim n As Long
n = CLng(TextBox1.Text)
stack(1) = n
'計算結果を格納する変数
Dim Ans As Double
Select Case Action
Case Act.Equal
'=
Action = Act.Equal
Case Act.Plus
'+
Ans = stack(0) + stack(1)
stack(0) = Ans
stack(1) = 0
TextBox1.Text = Ans
Case Act.Minus
'-
Ans = stack(0) - stack(1)
stack(0) = Ans
stack(1) = 0
TextBox1.Text = Ans
Case Act.Multi
'*
Ans = stack(0) * stack(1)
stack(0) = Ans
stack(1) = 0
TextBox1.Text = Ans
Case Act.Devi
'/
If stack(1) = 0 Then
Ans = 0
Else
Ans = stack(0) / stack(1)
End If
stack(0) = Ans
stack(1) = 0
TextBox1.Text = Ans
End Select
'引数で受け取った記号を格納
Action = CurrentAction
'新規入力にする
IsNew = True
前回の記事をご覧いただければ、今回のコードの意味もお分かりいただけるでしょう。
このプロシージャは、引数を1つ持っています。
どの記号が押されたのかを引数に指定するのです。
この記号を、Action変数に格納するためです。
Private Sub Plus_Click()
'足し算
'サブプロシージャの呼び出し
Calc Act.Plus
Private Sub Minus_Click()
'引き算
'サブプロシージャの呼び出し
Calc Act.Minus
Private Sub Multi_Click()
'掛け算
'サブプロシージャの呼び出し
Calc Act.Multi
Private Sub Dev_Click()
'割り算
'サブプロシージャの呼び出し
Calc Act.Devi
Private Sub btnEnter_Click()
'=の処理
'サブプロシージャの呼び出し
Calc Act.Equal
© 2024 Created by PH the vintage. Powered by
You need to be a member of On Feet Nation to add comments!
Join On Feet Nation