- ベストアンサー
データ型変換
String型のデータをInteger型の変数に入れたいのでが・・・。 '変数の宣言 Dim DataTable(2, 5) As String Dim made As Integer 'データ型変換 made = CInt(DataTable(1, 0)) このようにしたのですが、実行すると 『実行時エラー '13' 型が一致しません』 と表示され、デバックしてみるとココ↓ made = CInt(DataTable(1, 0)) が黄色くなります。 どうしたら上手く型変換ができるのでしょうか? ちなみに、VB6.0です。
- hiromu0103
- お礼率62% (79/126)
- Visual Basic
- 回答数2
- ありがとう数2
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
CInt()は「浮動小数点値」をInteger型にする関数です。 made = CInt(CStr(DataTable(1, 0))) こう書いて下さい。 CStr()を使ってString型のDataTable(1, 0)を数値に変換して 変換した数値が小数点を含む実数の可能性があるのでCInt()を使ってInteger型にして 結果をmadeに代入 と言う事をしている訳です。
その他の回答 (1)
- TAK_999
- ベストアンサー率43% (42/96)
DataTable(1,0)には何が格納されていますか? 数値として評価できる文字列が格納されていなければエラーになります。 私ならば、 If IsNumeric(DataTable(1,0) Then made = CInt(DataTable(1, 0)) Else made=0 End If とでもコーディングします
お礼
DataTable(1,0)には何も格納されていませんでした。 とても初歩的なミスでした。ご指摘ありがとうございました。
関連するQ&A
- VB.NETで、配列をテーブルに変換する。
VB.NETで、一次元配列string()にあるデータを、DataTableに変換 したいのですが、「型'String'の値を'System,Data,DataTable'に変換できません。」 と、エラーが発生してしまいます。 s1に、配列データが入っています。 Dim dt As DataTable Dim cnt As Integer Dim i As Integer dt = New DataTable count = s1.Length For i = 0 To cnt - 1 dt = CType(s1(i), DataTable) Next 解決方法が見つからず、行き詰っております。 宜しくお願い致します。
- ベストアンサー
- Visual Basic
- 文字列をINTEGER型に変換
基礎の質問ですいません。 Dim moji as String moji = "123" とあった場合moji変数をInteger型に変えるには CINT(moji)で合っているのでしょうか? Cells(CINT(moji))としたらデータ型があっていないと いうエラーがでました よろしくお願いいたします
- ベストアンサー
- Visual Basic
- VBAの変数変換のことです
VBAの変数変換のことです 整数変数=実数変数や実数変数=整数変数でCIntやCSng関数を使わないでOKでしょうか? Dim VAR(20) As Single '単精度浮動小数点数型 (Single) Dim IVARO(20) As Integer '整数型 (Integer) Dim IVAROC(20) As Integer '整数型 (Integer) IVARO(NCD) = VAR(NCD) 'Single to Integer IVAROC(NCD) = CInt(VAR(NCD)) 'Single to Integer これで、IVARO(NCD)とIVAROC(NCD)には同じ値が入っているのですが、 整数=実数でCInt関数を使わないで整数にする構文はOKでしょうか?
- ベストアンサー
- Visual Basic
- VB.NETで、配列をテーブルに変換して表示する。
VB.NET初心者です 一次元配列string()に、下記データが格納されており、 そのデータを、ListBox1に表示したいのですが、 そのまま表示する方法が不明な為、DataTableに変換して から表示する方法で、実行しましたが、 syaintable = CType(syaindata_Obj(i), DataTable)の部分で、 「型 'System.String' のオブジェクトを型 'System.Data.DataTable' にキャストできません。」 というエラーが発生してしまいます。 列1 列2 列3 1 社員A 営業 2 社員B 総務 3 社員C 開発 4 社員D 開発 5 社員E 営業 6 社員F 営業 7 社員G 総務 8 社員H 営業 9 社員I 営業 10 社員J 開発 Dim syaindata As String() Dim syaindata_Obj As Object Dim syaintable As New DataTable Dim cnt As Integer Dim i As Integer i = 0 cnt = syaindata.Length syaindata_Obj = CObj(syaindata) For i = 0 To cnt - 1 syaintable = CType(syaindata_Obj(i), DataTable) Next ListBox1.DataSource = syaintable 以上、この方法以外でも良いので、リストボックスに表示 するようにしたいと思います。 宜しくお願い致します。
- ベストアンサー
- Visual Basic
- 日付書式のString型からData型への変換
引数での日付データを加工して、変換させたいのですがエラー("String型からData型への変換は無効です。")がでます。 対処方法をアドバイスいただけないでしょうか? コードを下記に示します。 VS 2010を使用しています。 Dim From As Long Dim Year As Integer Dim Month As Integer Dim Day As Integer From = CLng(Format(DateAdd("d", 1, DateAdd("m", -1, CDate(CStr(Year) & "/" & CStr(Month) & "/" & CStr(Day)))), "yyyyMMdd"))
- ベストアンサー
- Visual Basic
- Dim は何の略ですか?
エクセルで変数の型宣言をするとき、例えば Dim 変数 As Integer と書きますが、このDimは何の略でしょうか? 宣言はdeclarationだし、Dimから考えられるのは Dimensionですが、これは次元とかの意味で少し 違うような気がするのですが。
- 締切済み
- オフィス系ソフト
- VB.netで、動的な型変換を行いたいのですが、、、(CTypeではできない?!)
VB.netで、 動的な型変換を行いたいと思っています。 イメージ的には、 CType(hogehoge,String)やCType(hogehoge,Integer) CType(hogehoge,MyClassHogehoge) ではなく、 CType(hogehoge,"String"),CType(hogehoge,"Integer") CType(hogehoge,"MyClassHogehoge") というように、 その場の変数で決まる型変換です。 Dim a as MyClassA Dim b as Object とあって CType(b,a)というような変換をしたいのです。 (が、CTypeやDirectCastの第二引数は、 定義された型名しか受け付け無いようです。) ----- 実際には、 mytype.InvokeMember("変数名", BindingFlags.SetProperty Or BindingFlags.Public Or BindingFlags.NonPublic Or BindingFlags.Instance, Nothing, "インスタンス", New [Object]() {"設定値"}) という処理をやる上で、 "設定値"が文字列(String)である場合、 "変数名"で、動的にアサインされた変数の型(たとえばMyClass)に型変換しないと、 値が設定できないためです。 (CType("設定値","インスタンス"."変数名")というようなこと必要となってくるはずです、、、) ----- 上記手順が、可能なのかどうか、 まったくのナンセンスなのかどうかも わかっていないので、 一言でもいただけるとたすかります。。。 どうぞよろしくおねがいいたします。
- ベストアンサー
- Visual Basic
- vb6 バイトオーダエンディアン変換の高速化
お世話になります。 VB6にて下記ソースの様にバイトオーダのエンディアン変換を行っているのですが、 一旦Stringに入れ込んでいるせいなのか、 非常に処理が遅く困っております。 2Btyteのデータの入れ替えだけなのですが、 高速化もしくは単純化する方法がございましたら教えていただけないでしょうか Public Function Swap(ByVal L As Long) As Integer Dim S As String S = Right(String(4, "0") & Hex(L), 4) Swap = CInt("&H" & Right(S, 2) & Left(S, 2)) End Function
- ベストアンサー
- Visual Basic
- 変数を動的に作るには?
変数を作成する際には必要な分だけ一つずつ宣言する必要があるのでしょうか? 例えば、連番を格納する文字列型変数を一時的に100個必要だとすると Dim textdat1 As String = "Number1" Dim textdat2 as String = "Number2" Dim textdat3 as String = "Number3" ・ ・ ・ と100個宣言しないといけないと思うのですがこれを For i As Integer = 1 To 100 Dim textdat(i) As String = "Number" & i Next i という様な形で変数を作成することは出来ないのでしょうか。 初歩的な質問かもしれませんが、よろしくお願いします。
- ベストアンサー
- Visual Basic
お礼
ありがとうございました。 CInt()は「浮動小数点値」をInteger型に変換するものだったんですね。勉強不足でした。