Members

Bigfoot By the Foot Heat Press Deluxe Starter Kit new edition of windows 7, 10 x86 bit

======================================================================

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

Text Express 2 Deluxe

DJ Java Decompiler

IScreensaver Designer

ExcelVBAで電卓を作ろう-その3 「コードを書こう」

Showcalc


excelvbaで電卓を作ろう-その3 「コードを書こう」,無料,ブログ
今日は、「ExcelVBAで電卓を作ろう」の3回目です。 バックナンバーは、以下の通りです。 第1回「複数のコントロールのイベントを一つのプロシージャにまとめる(ExcelVBA)」 第2回「ExcelVBAで電卓を作ろう-その2「アル...

'イベントを持つコマンドボタン型の変数を宣言
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

このブログの人気記事ランキング

旬なグルメニュース

いまトピランキング


http://blog.goo.ne.jp/pc_college/e/7a8247554435af7d4d139cb65f54c752
Showcalc

Views: 1

Comment

You need to be a member of On Feet Nation to add comments!

Join On Feet Nation

© 2024   Created by PH the vintage.   Powered by

Badges  |  Report an Issue  |  Terms of Service