電卓みたいなつくりで、コマンドボタン(数字の0~9と'-’や小数点など、よってコマンドボタンの数は12個ぐらいです。コマンドボタンを一つ一つの数字に対応させている。)を押したらラベルやテキストに数字を表示するもの作っています。わかりやすく言うと(?)、電卓の計算機能を取り除いたやつです。そこで、数字入力の際にラベルやテキストに-100~100までしか表示できないようにするには、どのように記述すればいいのですか?教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

>数字入力の際にラベルやテキストに-100~100までしか表示できないようにするには、どのように記述すればいいのですか?



こんな感じ?

Private Sub Text1_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case Asc("0") To Asc("9")
KeyAscii = KeyAscii
Case Asc("-")
KeyAscii = KeyAscii
Case Else
KeyAscii = 0
End Select
End Sub

Private Sub Text1_Validate(Cancel As Boolean)
If ((CLng(Text1.Text) < -100) Or (100 < CLng(Text1.Text))) Then
Beep
Cancel = True
End If
End Sub

#1、#2のひとと同じことですけど・・・(ヒマなんで・・)
    • good
    • 0

すいません。

少し質問の意図が良く分かってないのですが
ただたんにボタンを押下された時にテキストボックスかラベルをチェックして
やればいいんじゃないですか?
    • good
    • 0

あんまり賢くないやりかたですが、タイマーでラベル/テキストを


監視しておいて、-100~100以外の値が入ったときにメッセージ
ボックスをだしてクリアする、というのはどうですか?
    • good
    • 0
この回答へのお礼

ありがとうございました。参考になりました。

お礼日時:2002/03/13 17:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Qテキストボックスに書いた複数行のテキストデ-タをコマンドボタンクリック

テキストボックスに作成したデ-タをコピ-ボタンでコピ-して、OutlookExpress
などのメ-ラ-に貼り付けるようなコ-ドを書いていますが、コピ-が上手くいかない
ことが多いので、下のような方法に変えようと思います。

 (1)テキストデ-タを作成(記入)する

 (2)コマンドボタンをクリックする

 (3)自動でメモ帳が起動する

 (4)メモ帳の内容に先ほどのテキストデ-タが貼り付く
    (テキストボックスの内容をメモ帳で開く)

このようにする方法はあるのでしょうか?
shellでメモ帳を開くというのは分かるのですが、対象のファイルを
どのように指定すれば良いのかが分かりません。

よろしくお願いいたします!!!

Aベストアンサー

こんにちは。maruru01です。
違う方法を。

いったん一時ファイルとして保存し、Shellでメモ帳で呼び出します。

memoPath = (メモ帳の起動ファイルのフルパス)
FilePath = (一時ファイルのフルパス)
fileNum = FreeFile
Open FilePath For Output As #fileNum
  Print #fileNum, Text1.Text
Close #fileNum

Shell memoPath & " " & FilePath

では。

QVB 電卓 数字キーを押して ラベルに出力

VB.NET 2005では、
VB.NETにはコントロール配列は存在しないらしいので、それに類似した処理をどう行うかを教えていただきたいのです。
電卓の数字0~9までのボタンをクリックした時
どうすればよいのでしょうか?
作成中のコードです。
Option Explicit On
Public Class frmMain
Dim dData1 As Double, dData2 As Double '数値記憶用
Dim SuuFlag As Boolean '数字キー用
Dim EFlag As Boolean '演算キー用
Dim Enzan As Integer '演算種類記憶用(+:0,-:1,*:2,/:3,4:=)
Const NONE = -1
Const TASU = 0
Const HIKU = 1
Const KAKERU = 2
Const WARU = 3
Const EQU = 4



Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
dData1 = 0 '数値記憶用変数の初期化
dData2 = 0
Enzan = NONE '演算種類初期値
SuuFlag = False
EFlag = False

End Sub

Private Sub cmd_Click(ByVal Index As Integer)
'0が1文字だけ、または、演算キーを押した後の時
If txtDisplay.Text = "0" Or SuuFlag = False Then
txtDisplay.Text = "" '0を消す
dData2 = 0
End If
If Index <= 9 Then '0 - 9 数字
txtDisplay.Text = txtDisplay.Text & Trim(Str(Index))
ElseIf Index = 10 Then '.小数点
If txtDisplay.Text = "" Then '最初が小数点
txtDisplay.Text = "0."
ElseIf InStr(txtDisplay.Text, ".") = 0 Then '小数点無し
txtDisplay.Text = txtDisplay.Text & "."
End If
End If
SuuFlag = True
End Sub

End Class


数字のオブジェクト名は
1=cmd1
2=cmd2
3=cmd3
0=cmd0 ~といった感じです。
この先、数字を表示させるには
いったいどうすればよいのでしょうか。
大変申し訳ないのですが、回答お願いいたします。

VB.NET 2005では、
VB.NETにはコントロール配列は存在しないらしいので、それに類似した処理をどう行うかを教えていただきたいのです。
電卓の数字0~9までのボタンをクリックした時
どうすればよいのでしょうか?
作成中のコードです。
Option Explicit On
Public Class frmMain
Dim dData1 As Double, dData2 As Double '数値記憶用
Dim SuuFlag As Boolean '数字キー用
Dim EFlag As Boolean '演算キー用
Dim Enzan As Integer '演算種類記憶用(+:0,-:1,*:2,/:3,4:...続きを読む

Aベストアンサー

こんにちは
テキストボックスに入力した数値を表示させることに絞って回答します。unamana19さんが提案したTagプロパティを使用した場合です。

各数値ボタンのTagプロパティは以下のようにします。
もちろん表示用テキストボックスのTextAlignは右寄せに設定します。
 cmd1のTagに1を設定する
 cmd5のTagに5を設定する ...

コマンドボタンがクリックされた時のイベントプロシージャに
 txtDisplay.Text &= sender.Tag
 txtDisplay.Text = Microsoft.VisualBasic.Val(txtDisplay.Text)

これでどうでしょうか

Q電卓の数字0~9までのボタンをクリックした時

VB.NETでの質問です。
電卓の数字0~9までのボタンをクリックした時
ラベルに表示されません。
作成したコードは
Private Sub cmd_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) _
Handles cmd1.Click, cmd2.Click, cmd3.Click, _
cmd4.Click,cmd5.Click, cmd6.Click, _
cmd.Click, cmd8.Click,cmd9.Click, _
cmd0.Click
Dim cmd As Button
Dim No As String
cmd = CType(sender, Button) 'イベント発生元のボタン情報を取得

Select Case cmd.Name 'ボタン名を参照
Case "cmd1" : No = "1"
Case "cmd2" : No = "2"
Case "cmd3" : No = "3"
Case "cmd4" : No = "4"
Case "cmd5" : No = "5"
Case "cmd6" : No = "6"
Case "cmd7" : No = "7"
Case "cmd8" : No = "8"
Case "cmd9" : No = "9"
Case "cmd0" : No = "0"

End Select

End Sub

エラーは
cmd.clickで指定されているメゾットで表示できません。
cmdは宣言されていません。
ということでした。

どうすれば、電卓の数字をクリックしたときに、
ラベルに表示できますか?
よろしければ添削お願いいたします。
助言でも結構ですので、申し訳ありませんが
よろしくお願いします。

VB.NETでの質問です。
電卓の数字0~9までのボタンをクリックした時
ラベルに表示されません。
作成したコードは
Private Sub cmd_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) _
Handles cmd1.Click, cmd2.Click, cmd3.Click, _
cmd4.Click,cmd5.Click, cmd6.Click, _
cmd.Click, cmd8.Click,cmd9.Click, _
cmd0.Click
Dim cmd As Button ...続きを読む

Aベストアンサー

VB6では簡単にできていたコントロール配列ですね。

まず、エラーの原因は、cmd_Clickイベントに割りついている
Private Sub cmd_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) _
Handles cmd1.Click, cmd2.Click, cmd3.Click, _
cmd4.Click,cmd5.Click, cmd6.Click, _
cmd.Click, cmd8.Click,cmd9.Click, _
cmd0.Click

の、"cmd.Click"が"cmd7.Click"なのでしょう。
あと、ボタンより数字を特定するのに、Tagなどを利用すると簡単
になります。各ボタンのTagプロパティに対応する数字をセット
しておけば、

Dim btn As Button = CType(sender, Button)
Dim No As String = CType(btn.Tag, String)
lblTest.Text = No

こんな感じになります。

VB6では簡単にできていたコントロール配列ですね。

まず、エラーの原因は、cmd_Clickイベントに割りついている
Private Sub cmd_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) _
Handles cmd1.Click, cmd2.Click, cmd3.Click, _
cmd4.Click,cmd5.Click, cmd6.Click, _
cmd.Click, cmd8.Click,cmd9.Click, _
cmd0.Click

の、"cmd.Click"が"cmd7.Click"なのでしょう。
あと、ボタンより数字を特定するのに、Tagなどを利用すると簡単
になります。各ボタンのTagプロパティ...続きを読む

Qコマンドボタンテキストの改行

VB.NETで
コマンドボタンのテキストを改行したいのですが、
どのようにすればできるのか分かりません。

どなたかご教授宜しくお願いします。

Aベストアンサー

"あいう" & chr(13) & "えお"

というように、&を用いてchr(13)と連結してみてください。

定数で言うとvbNewLineがそうです。

Qコマンドボタンやテキストボックスの変数化(?)

今、VB2005ExpressEditionでソフトを作っているのですが、
コマンドボタン(Button)を並べ、その隣にテキストボックス(Textbox)を並べ、
約80組のボタン・テキストの組を作りました。
そのボタンを隣に記載してある数字分だけクリックさせたいのですが、クリックさせる関数を

public function clk(a1 as integer,a2 as integer)
If a2 < 1 Then Exit Function
Dim a3 As Integer = a2
Do
If a1 = 1 Then Call Button1.PerformClick()
If a1 = 2 Then Call Button2.PerformClick()
.......
a3=a3-1
loop until a3<1
End function

として、a1をクリックするボタンの添え字、a2=textbox(a1).text(a1の部分は毎回手打ち)としていますが、buttonやtextboxの名前を変数化して、読み込むことができれば、コードを省略できると思います。何かいいアイデアはないものでしょうか?

今、VB2005ExpressEditionでソフトを作っているのですが、
コマンドボタン(Button)を並べ、その隣にテキストボックス(Textbox)を並べ、
約80組のボタン・テキストの組を作りました。
そのボタンを隣に記載してある数字分だけクリックさせたいのですが、クリックさせる関数を

public function clk(a1 as integer,a2 as integer)
If a2 < 1 Then Exit Function
Dim a3 As Integer = a2
Do
If a1 = 1 Then Call Button1.PerformClick()
If a1 = 2 Then C...続きを読む

Aベストアンサー

やっぱりですか?(^^;)了解です。以下ルールとします。
1.ButtonXXと対になるのはTextBoxXXというルールとする。
  (1~任意の数)
2.欠番は無いものとする。

フォームロードを下のように書き換えて下さい。
Dim btn As Button
Dim txt As TextBox
Dim no As Integer = 1
On Error Resume Next
Do Until Err.Number <> 0
txt = Me.Controls.Item("TextBox" & no)
btn = Me.Controls.Item("Button" & no)
If txt IsNot Nothing AndAlso btn IsNot Nothing Then
ctlList.Add(New CtrlSet(btn, txt))
txt = Nothing : btn = Nothing
End If
no = no + 1
Loop
On Error GoTo 0

やっぱりですか?(^^;)了解です。以下ルールとします。
1.ButtonXXと対になるのはTextBoxXXというルールとする。
  (1~任意の数)
2.欠番は無いものとする。

フォームロードを下のように書き換えて下さい。
Dim btn As Button
Dim txt As TextBox
Dim no As Integer = 1
On Error Resume Next
Do Until Err.Number <> 0
txt = Me.Controls.Item("TextBox" & no)
btn = Me.Controls.Item("Button" & no)
If txt IsNot Nothing AndAlso btn IsNot Nothing Then
ctlList.Ad...続きを読む


このカテゴリの人気Q&Aランキング

おすすめ情報