• ベストアンサー

VB6のバグか?

VB6のバグか? 下記のように、 文字列「278754742940.733」を数値に変更し、1000倍にすると、278754742940732になったんですよ。 Private Sub Command1_Click() Dim s As String s = "278754742940.733" Dim d As Double d = Val(s) * 1000 MsgBox Fix(d) 'intも同じ End Sub 結果: 278754742940732 どうすれば、解決できますか?

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

  • ベストアンサー
回答No.1
get_star
質問者

お礼

ありがとうございました!

関連するQ&A

  • このような使い方は間違っているのでしょうか?(VB.NET2002)

    このような使い方は間違っているのでしょうか?(VB.NET2002) Dim count As Int16 Private Sub JOB(ByVal x) x = x + 1 TextBox1.Text = x End Sub Private Sub Button1_Click(・・・・ JOB(count) End Sub

  • VB.NETとして書き換え

    コマンドボタンを押すたびに ココ という文字をテキストボックスに書く。 Private Sub Command1_Click() Dim i As Integer i = Int(Rnd * 4) For c = 0 To 4 Text1(c).Text = "" Next c Text1(i).Text = "ココ" End Sub VB6ではこんなふうになると思います。 .NETではどう書けばいいのでしょうか?

  • 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

  • Cで作成したDLL関数をVBから呼ぶ(.NET)

    以前の質問に「Cで作成したDLL関数をVBから呼ぶ」(QNo.1703839)がありますが、下記のコードを見るとVB6での内容だと思います。 Dim keydata As String * 128 keydata = String$(128, Chr(0) & Chr(0)) VB.NETでVC++のDLLで変更した文字列を受けたいのですが、 どのようにすればよいのでしょうか? VB.NET2003 <DllImport("DllTest.dll")> Private Shared Function _ Test(ByVal s1 As String) As String End Function Private Sub btnTest_Click(...) ... Dim s1 As String = "abc" Dim s2 As String Dim s3 As String s2 = Test(s1) MessageBox.Show(s2) ' "1"が表示される s3 = StrConv(s2, VbStrConv.None) MessageBox.Show(s3) ' 同じく"1"が表示 end sub VC++のDLL extern "C" __declspec (dllexport) BSTR __stdcall Test(char* s1) { AfxMessageBox(s1); // "abc"が表示される OK strcpy(s1, "123"); CString s2; s2 = "123"; return s2.AllocSysString(); } また、文字列に全角を含めても大丈夫でしょうか? Unicodeの変換処理を行う必要があるのでしょうか? よろしくお願いします。

  • VBからExcelのテキストを指定して開きたい

     VBのアプリケーションから文書名を指定してエクセルを起動したいのですが 出来なくて困っています。ちなみにコードは下記のとおりです。どこに問題があ るのか教えていただけないでしょうか。 Private Sub Command1_Click() Dim lngReturnCode As Long Dim strFileName As String strFileName = "AllTitles.csv"   lngReturnCode = ShellExecute(Me.hwnd, _ "open c:\***\***.xls", _ strFileName, _ vbNullString, _ App.Path, _ SW_SHOWNORMAL) End Sub

  • 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 思い通りに動かすにはどんなコードにしたらいいですか?

  • <VB6.0+SQLServer2000>Image型のバイナリデータを表示したい

    こんにちは。 VB6.0+SQLServer2000で開発を行っています。 Image型の項目を用意して、PictureBoxなりなんなりに表示したいのですが、バイナリデータの変換方法がわかりません。 どなたか教えてください。 とりあえず、今はこんなかんじでPG書いてます。 =============================================== Private Sub Command1_Click() Dim rs As adodb.Recordset Dim mstream As adodb.Stream Dim strSql As String On Error GoTo Err_Command1_Click strSql = "select * from 車体画像 where 整理番号='00000001'" Set rs = New adodb.Recordset rs.Open strSql, cn, adOpenKeyset, adLockOptimistic Set mstream = New adodb.Stream mstream.Type = adTypeBinary mstream.Open mstream.Write rs.Fields("画像データ").Value 'ここからどうすればいいのか分かりません… Exit Sub Err_Command1_Click: MsgBox Error End Sub

  • VB6.0のHideのバグ?

    いつもお世話になっております。 以下の疑問点が出ています。 どなたか答えをご存知の方がおりましたらご回答願います。 [現象] Form1からForm2を呼び出し、Form1をhideしても Form1が隠れない。 [条件] Form1のボタンをクリック後、すぐに何でもいい(フォルダを開いたウィンドウとか)のでウィンドウを最前面に表示してください。 [プログラム] --form1-- Private Sub Command1_Click() On Error GoTo ERROR_END Screen.MousePointer = vbHourglass '請求書作成画面に移行 Form2.Show Screen.MousePointer = vbDefault Exit Sub ERROR_END: Screen.MousePointer = vbDefault MsgBox Error(Err) End Sub Private Sub Form_Load() Me.Show Screen.MousePointer = vbDefault End Sub --form2-- Private Sub Form_Load() Dim i, strsql For i = 0 To 50000000 strsql = "時間稼ぎ" Next Me.Show Form1.Hide Screen.MousePointer = vbDefault End Sub [Form] Form1にコマンドボタンを一つ配置するだけでOKです。 [環境] WinXP SP1 VB6.0 SP6 [その他] WIN98ではこの事象は起こらないと報告受けてます。 バグならばバグと、PGミスならミスと明確に答えていただけると大変助かります。 どうぞよろしくお願いします。

  • VB6で作成した自作DLLをVB.NETで呼び出し例外発生時に参照渡しの引数に値を設定する方法

    VB6で作成した自作のDLLをVB.NET2005で作成したEXEから呼び出した際に、DLLメソッドの正常・異常終了に関わらず第2引数の戻り値に第1引数の値を設定したいと考えていますが旨くいきません。 何かよい方法はないでしょうか? 以下、簡単なサンプルです。 =========================== VB6 DLL =========================== Public Sub getDataForTest(ByVal strIn As String, ByRef strOut As String) Dim intData As Integer 'strInの値をstrOutに代入 strOut = strIn 'strInの値を1で割り算 intData = CInt(strIn) / 1 End Sub =============================================================== =================== DLL呼び出し正常パターン =================== Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim objCom As New Project1.Class1 Dim strRet As String = "" Try Call objCom.getDataForTest("1", strRet) Catch ex As Exception MsgBox(ex.Message) Finally MsgBox(strRet) ←←← 1が表示される  End Try End Sub =============================================================== =================== DLL呼び出し異常パターン =================== Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim objCom As New Project1.Class1 Dim strRet As String = "" Try Call objCom.getDataForTest("A", strRet) Catch ex As Exception MsgBox(ex.Message) Finally MsgBox(strRet) ←←← この時にAを表示したいがstrRetが空  End Try End Sub ===============================================================

  • VB6 テキストへの書き込み

    VB6 SP6でプログラムを作成中です。 あるテキストボックスに書いた文字列をコマンドを  押すと、#5のテキストへ書き込みたいと思います。コマンドを押すたびに改行させたいのですが、1行目のデータが書き換えられてしまいます。何か良い方法はありませんか? Private Sub Command3_Click() Dim めぐ As String めぐ = Text1.Text Open "C:\Documents and Settings\Owner\デスクトップ\通信データ.txt" For Output As #5 Print #5, めぐ Close #5 End Sub

専門家に質問してみよう