• ベストアンサー

Rnd関数の戻り値

ボタンのクリックでRnd関数の戻り値をLabelのCaptionに表示させるという シンプルな事をしていたのですが不定期に0~0.9999....以外の数値(?)が 帰ってきます。 例えば 5.244088E-02 等です。 発生に規則性は見当たりませんが、必ず1以上の数で最後にE-02が付きます。 書式は Private Sub Command1_Click()   Label1.caption = Rnd End Sub これだけです。 何かご存知の方がいらっしゃいましたらレスをお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • nakashi
  • ベストアンサー率51% (21/41)
回答No.2

Private Sub Command1_Click()   Label1.caption = Format(Rnd,"00.00000000") End Sub

参考URL:
http://www.microsoft.com/japan/developer/library/default.asp?URL=/japan/developer/library/vbenlr98/vafmtuserdefinednumer
emptyhead
質問者

お礼

Format関数の書式まで教えていただきありがとうございます。

その他の回答 (1)

  • KojiS
  • ベストアンサー率46% (145/312)
回答No.1

この場合の Eは、浮動小数点値で10の何乗かを表します。つまり、5.244088E-02の場合ですと、5.244088×10^-2ということで、5.244088×0.01=0.05244088となります。Format関数などで整形してみるとわかると思うのですが、何もしないと浮動小数点値はこういう表記になります。 詳しくはヘルプを参照してください。

emptyhead
質問者

お礼

大変参考になりました。 浮動小数点の解説までもご丁寧にして下さり、とても助かりました。

関連するQ&A

  • VB初心者です

    計算結果が"7"の時に限り、「当たり!」と表示される、ちょっと意味不明な計算機を作っています。 現在、下記のように書いてますが、何故かうまくいきません。(当たりが表示されない 何故でしょうか?お助けください。。m(_ _)m Private Sub Command1_Click() Label1.Caption = Str(Val(Text1.Text) + Val(Text2.Text)) Label3.Caption = "+" Label4.Visible = False '画像を隠す。 'いずれかの数字が「7」のとき、メッセージを表示する。 If Label1.Caption = "7" Then Label4.Visible = True End If End Sub Private Sub Command2_Click() End End Sub Private Sub Command3_Click() Label1.Caption = Str(Val(Text1.Text) * Val(Text2.Text)) Label3.Caption = "*" End Sub Private Sub Command4_Click() Label1.Caption = Str(Val(Text1.Text) - Val(Text2.Text)) Label3.Caption = "-" End Sub Private Sub Command5_Click() Label1.Caption = Str(Val(Text1.Text) / Val(Text2.Text)) Label3.Caption = "/" End Sub

  • Visual Basic 6.0でのLabelについて質問です。

    Visual Basic 6.0でのLabelについて質問です。 今、Labelが100個あるとして、 どのラベルが押されても同じ処理をさせたい場合、どのようにプログラムを組めばよいかわかりません・・・ そこで、 Private Sub Label2_Click() Label1.Caption = "停止" End Sub Private Sub Label3_Click() Label1.Caption = "停止" End Sub Private Sub Label4_Click() Label1.Caption = "停止" End Sub    ・    ・    ・ Private Sub Label101_Click() Label1.Caption = "停止" End Sub のように100個繰り返しても良いのですが、だらだら長くなってしまうので、スマートに 処理できる方法を探しています。 もしご存知の方がいらっしゃいましたら教えていただけないでしょうか? よろしくお願いします。

  • VB6でスロットを作成したい

    VB6歴2ヶ月の初心者です。 フォーム上に ラベルコントロールが三つ コマンドボタンが二つ タイマーコントロールが一つ あります。 タイマーのプロパティは Enabled False Interval 10 です。 スロットを作成したいのですが、 ボタン1を一回押すごとに左からスロットが回り、 最後にボタン2で動きを止めたいのです。 一応自分でも書いてみたのですが、ここで行き詰まりました。 ウワァァァァァァヽ(`Д´)ノァァァァァァン! Private Sub Command1_Click() Timer1.Enabled = True End Sub Private Sub Command2_Click() Timer1.Enabled = False End Sub Private Sub Timer1_Timer() Dim slot As Integer slot = Int(Rnd(1) * 9 + 1) Label1.Caption = slot End Sub 思い通りに動かすにはどんなコードにしたらいいですか?

  • VBA 年月日から日曜日に当たる日の文字を赤くする

    よろしくお願いします。 TextBox2に年号(西暦) ComboBox1に月 TextBox7に日 を、入力します。 入力方法は、Label1からLabel31を押下して日付けを入れます。 したときに各Labelの内、日曜日に該当するLabelならCaptionの文字を赤くする。 Private Sub Label1_Click() TextBox7.Value = 1 ’もし1日が日曜日ならLabel1のCaptionの文字を赤くする End Sub Private Sub Label2_Click() TextBox7.Value = 2 End Sub Private Sub Label3_Click() TextBox7.Value = 3 End Sub ~ Private Sub Label29_Click() TextBox7.Value = 29 End Sub Private Sub Label30_Click() TextBox7.Value = 30 End Sub Private Sub Label31_Click() TextBox7.Value = 31 End Sub 追 ComboBoxで日付けをダウンリスト表示したかったのですが、1列表示で 長くなってしまいます。 ※2列に表示する方法を知らないもので、Labelで2列表示にしました。 もし、ダウンリストを2列表示できるのであれば、ぜひともご教示をお願いします。 無識なものですみません。 何卒宜しくお願い致します。

  • 途中でエラーが出てしまい手が止まってしまいました(T_T)

    Visual Basicについてなんですが、いいですか? http://azsx00.tripod.co.jp/D001.jpg 初心者じみた質問ですみません。 上記の画像ののようなプログラムが途中までで引っかかってしまって先に進めません。 どなたかご指導下さい。 一応自分で考えた結果です。どこが悪いとか何が分かってないとかいろいろアドバイスもあればお願いします。まだ習い始めたばかりです。 Dim Number As Integer Dim Score As Integer Dim MessageText As String Private Sub Command1_Click() If Number > 7 Then Score = Score + 1 MessageText "あたり" End If If Number < 7 Then Score = Score - 1 MessageText "外れ" End If If Number = 7 Then Score = Score + 0 MessageText "引き分け" End If End Sub Private Sub Command2_Click() If Number > 7 Then Score = Score + 1 MessageText "あたり" End If If Number < 7 Then Score = Score - 1 MessageText "外れ" End If If Number = 7 Then Score = Score + 0 MessageText "引き分け" End If End Sub Private Sub Form_Load() Number = Rnd() * 13 + 1 Score = 0 Label1.Caption = "?" Text1.Text = "Score:" & Score End Sub Private Sub Label1_Click() If Number > 7 Then Label1.Caption = "Score" End If If Number < 7 Then Label1.Caption = "Score" End If End Sub

  • Elseifのコードが分かりません。(至急)

    急ぎのため再度の質問失礼します。 3つの数字すべてが7のとき、メッセージ1を出し、 どれか2つだけが7のときは、メッセージ2を出し、 どれか1つだけが7のときは、メッセージ3を出し、 どこにも7が含まれていないときは、メッセージ4を出すようにEndifを使って書きたいのですが、正しいコードを教えて下さい。 Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Randomize() End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Me.Close() End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click PictureBox1.Visible = False Label4.Visible = False Label1.Text = CStr(Int(Rnd() * 10)) Label2.Text = CStr(Int(Rnd() * 10)) Label3.Text = CStr(Int(Rnd() * 10)) If End If End Sub Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click End Sub Private Sub Label3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label3.Click End Sub Private Sub Label5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label5.Click End Sub End Class よろしくお願いします。

  • ビジュアルベーシックのお絵かき掲示板

    まったくの初心者です。初歩的な質問で申し訳ありません。 カラーのところでクリックが実行できません。 なぜなのかよくわかりません。お暇なときご教授下さい。  そしてもう一つ質問ですが以下のコードを追加したいの ですがどこに挿入すればいいのですか。 →private sub image_click() ccolor = 7 end sub ここまでのコードを追加したいです。 ーーーーーーーーーーーーーーーーーーーーーーーーーー Private Sub Command1_Click() Form1.Cls End Sub Private Sub Command2_Click() End End Sub Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Form1.DrawWidth = 3 If Button = 1 Then PSet (X, Y), QBColor(ccolor) End If End Sub Private Sub Label1_Click() cccolor = 14 End Sub Private Sub lavel2_click() cccolor = 0 End Sub Private Sub label3_click() ccolor = 9 End Sub Private Sub label4_click() ccolor = 12 End Sub Private Sub label5_click() ccolor = 10 End Sub

  • VBA DoEvents関数の働きと使い方を知りたい

    下記のような UserForm上の Module コードを書いてももらったのですが、DoEvents の働きが分からないのです。どなたか分かりやすく説明していただけませんでしょうか? Private i As Integer Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) If Me.TextBox1.Value = Me.Label1.Caption Then Me.Label2.Caption = "正解です" Else Me.Label2.Caption = "不正解です" End If DoEvents If i < 20 Then i = i + 1 Label_Up Me.TextBox1.Value = "" Cancel = True Else MsgBox "終了です" End If End Sub Private Sub UserForm_Initialize() i = 1 Label_Up End Sub Private Sub Label_Up() Me.Label1.Caption = Sheets("Sheet1").Range("A1:A20").Cells(i).Value DoEvents End Sub

  • 文字列連結演算子を使った繰り返し(ループ)について

    Text1・Command1・Label1 と並んだBoxでText1に数字を入力しCommand1を押すと漢数字(一,二…)となるプログラムなのですが、一桁ずつ求めて行き最後に文字列連結演算子を使って求める場合はどのようにしたらよいのでしょうか? エラーが出るのでどこかが変なんだと思うのですが、何度みてもわからなくて。。。今途中の段階ですが当方がやったところまでを乗せておきますので。違うところや付け足すところなど指摘したり教えていただけたらと思っています。よろしくお願いします。 Private Sub Command2_Click() Dim a As Integer Dim b As String a = Val(Text1.Text) For x = 1 To 5 If a = 1 Then Label1.Caption = "一" ElseIf a = 2 Then Label1.Caption = "二" ElseIf a = 3 Then Label1.Caption = "三" ElseIf a = 4 Then Label1.Caption = "四" ElseIf a = 5 Then Label1.Caption = "五" ElseIf a = 6 Then Label1.Caption = "六" ElseIf a = 7 Then Label1.Caption = "七" ElseIf a = 8 Then Label1.Caption = "八" ElseIf a = 9 Then Label1.Caption = "九" Else Label1.Caption = "〇" sText1 = "1" & "2" & "3" & "4" & "5" & "6" & "7" & "8" & "9" sLabel1 = "一" & "二" & "三" & "四" & "五" & "六" & "七" & "八" & "九" End If End Sub

  • マクロでフォーム処理の繰り返し

    よろしくお願いします。 マクロでフォームを作成したとき同じような処理がたくさんある時、繰り返し処理は可能でしょうか? 例えば以下のような処理をループ処理できないでしょうか? Private Sub Label1_Click() Label1.BackColor = RGB(255, 0, 0) End Sub Private Sub Label2_Click() Label2.BackColor = RGB(255, 0, 0) End Sub Private Sub Label3_Click() Label3.BackColor = RGB(255, 0, 0) End Sub   ・   ・   ・ Private Sub Label100_Click() Label100.BackColor = RGB(255, 0, 0) End Sub

専門家に質問してみよう