• ベストアンサー

文字列をINTEGER型に変換

基礎の質問ですいません。 Dim moji as String moji = "123" とあった場合moji変数をInteger型に変えるには CINT(moji)で合っているのでしょうか? Cells(CINT(moji))としたらデータ型があっていないと いうエラーがでました よろしくお願いいたします

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.6

補足を書きかえるなら、 rows = FR.rows     '検索した名前の行番号取得 int_rows = CInt(rows)  ↓ Dim fndRow AS Integer fndRow= FR.Row     '検索した名前の行番号取得 int_rows = CInt(fndRow)  'ほとんど意味がない?  ※.Rows→.Row  ※rows を別の変数にしました。 でしょうか。 どうも回りくどいようです。 私なら、次のように書きますが・・・ If Not FR Is Nothing Then   Sheets(1).Cells(1, 1) = FR.Offset(0, -1)   '検索した名前の左 End If

その他の回答 (5)

回答No.5

FR.Rows ではなく FR.Row でできませんか?

回答No.4

#2の補足に対する回答です。 sub test()   Dim searchWord As String   searchWord = TextBox1.Text   With Worksheets("Sheet2").Range("B1:B1000")     Set FR = .Find(What:=searchWord, LookIn:=xlValues, LookAt:=xlWhole)     If Not FR Is Nothing Then       aRows = FR.Row '検索した名前の行番号取得       Sheets(1).Cells(1, 1).Value = Sheets("Sheet2").Cells(aRows, 1)     End If   End With end sub でどうでしょうか?間違っていたらすみません。

jones0901
質問者

補足

CELLSの引数は整数型なのでFR.ROWSの戻り値はSTRING型なので型が一致していませんというエラーが発生してしまいます。 このaRowsを何とかInteger型に変換したいのですが。。。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

●下記でいずれも動きますよ。テスト済み。 cells(n)はA1より横に数えて、n番目のセルを指す。 256を越えると257はB1になります。 普通この使い方はしませんが。worksheets,workbooksでは 良く使います。 Sub test01() Dim a As Integer a = 5 Cells(1) = "aaa" Cells(3) = 123 Cells(123) = 1234 'DS1 Cells(a) = 111 Cells(257) = "aa" End Sub ●下記はエラーが出ず動きましたよ。 Sub test02() Dim moji As String moji = "3" a = CInt(moji) Cells(a) = "ccc" End Sub 「123」にすると確かめ難いので、「3」にしました。 Dim a As Integerをいれても動きました。

  • uratan
  • ベストアンサー率30% (38/124)
回答No.2

Cellsには範囲をしていしなければいけません。 例えば、Cells(1, 1)のようにです。 質問者さんの形だと、Cells(123)になっていますね。 だからではないでしょうか? 具体的にどのようなことがしたいか教えていただければ、もう少し詳しい回答ができるかもしれません。

jones0901
質問者

補足

説明不足で失礼致しました。実は今、 textboxで入力した名前を SHEET2で定義されているデータ一覧から名前を検索しコード値を取得してきてSHEET1のセル(1,1)に表示させるプログラムを作成しています。 sheet2にはコードと名前の列があります。 A B コード 名前 1 小池 2 田中 3   峰 といった感じで1000件あります。 (例)小池とテキストボックスにうつとセル(1,1)に1と表示させる そこで Dim searchWord as String searchWord = TextBox1.text With Worksheets("Sheet2").Range("B1:B1000") Set FR = .Find(What:=searchWord, LookIn:=xlValues, LookAt:=xlWhole) If Not FR Is Nothing Then rows = FR.rows     '検索した名前の行番号取得 int_rows = CInt(rows) Sheets(1).Cells(1,1).Value = Sheets("Sheet2").Cells(int_rows, 1)      'ここでエラーが発生(”データ型が一致していません”) End If End With 以上よろしくお願いいたします

  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.1

Dim moji As String Dim a As Integer moji = "123" a = moji これだけでいいです。

jones0901
質問者

補足

ありがとうございます。上記の方法でやってみたのですが データ型が一致しませんというエラーが発生いたしました

関連するQ&A

  • データ型変換

    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です。

  • 文字列を分割して、分割した文字の一番右側を表示するにはどうしたら良いのでしょうか?

    Sub test2() Dim moji() As String Dim a As Range Dim 行 As Long For 行 = 2 To Cells(Rows.Count, 1).End(xlUp).Row Set a = Cells(行, 1) moji() = Split(a, "-") On Error GoTo moji Cells(行, 2) = moji(3) Next 行 moji: Cells(行, 2) = moji(2) End Sub で A列 B列 1-2-3-4 4 10-11-11-12 12 1-2-3-10 10 1-2-10-3 3 1-2-3 3 1-2 1-13 11-14 11-3 の結果になりますが1-2,11-14,11-3の部分が表示できません。 どなたかよいほうほうをお願いします。

  • 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でしょうか?

  • 「'」もascで変換させたい

    A1に「'test」と入れると「test」になってしまいます。 そして、 Sub test() Dim MojiInt As Long Dim i As Long Dim myRow As Long Dim Moji As String MojiInt = Len(Cells(1, 1)) For i = 1 To MojiInt Moji = Mid((Cells(1, 1)), i, 1) If i = 1 Then Cells(1, 2) = Asc(Moji) Else Cells(1, 2) = Cells(1, 2) & "," & Asc(Moji) End If Next i End Sub をすると、 116,101,115,116 になります。 最初の「'」もascで変換させることは無理なのでしょうか?

  • 文字列をバイト数に変換して、設定数よりオーバーしたセルを赤文字にしたい

    文字列をバイト数に変換して、設定数よりオーバーしたセルを赤文字にしたいと思い、下記のマクロを組みました。 しかし、VBAのLen関数は半角も2バイトで計算するとテキスト本に書いているのを読んだのですが、全角は2バイト、半角は1バイトで計算する方法はありますでしょうか? どなたか教えていただけますと大変助かります。 OSはXP、Excelは2003 を使用しています。 Sub 文字数を調べて色を変える() Dim mojicnt As Integer Dim moji As String Dim maxgyo As Long Dim motogyo As Long maxgyo = Cells(Rows.Count, 1).End(xlUp).Row For motogyo = 2 To maxgyo moji = Cells(motogyo, 2).Value mojicnt = LenB(moji) If mojicnt > 32 Then Cells(motogyo, 2).Font.ColorIndex = 3 End If Next motogyo For motogyo = 2 To maxgyo moji = Cells(motogyo, 4).Value mojicnt = LenB(moji) If mojicnt > 50 Then Cells(motogyo, 4).Font.ColorIndex = 3 End If Next motogyo For motogyo = 2 To maxgyo moji = Cells(motogyo, 5).Value mojicnt = LenB(moji) If mojicnt > 50 Then Cells(motogyo, 5).Font.ColorIndex = 3 End If Next motogyo For motogyo = 2 To maxgyo moji = Cells(motogyo, 8).Value mojicnt = LenB(moji) If mojicnt > 56 Then Cells(motogyo, 8).Font.ColorIndex = 3 End If Next motogyo End Sub 説明不足のところがありましたら、申し訳ありません。 よろしくお願い致します。

  • byte型を固定長で宣言したい

    シリアル通信プログラムを作っているんですが、シリアルから受信するときデータをバイト型で扱いたいのです。どうやらそのためにバイト型の変数を固定長で宣言する必要があるらしいのです。もし、これがstring型なら Dim moji*100 as stringや Dim moji as string string=space(100) などとすれば100の長さを設定できるようですが、 こういうことをbyte型の変数でする方法がわかりません。 どなたか教えてください。

  • TextBoxをInteger型の変数に代入したい

    開発環境は、VB2005 ExpressEditionです。 TextBoxをInteger型の変数に代入したいのですが。 Dim num01 As Integer 1 num01 = Int(TextBox1.Text) 2 num01 = CInt(TextBox1.Text) 3 num01 = Integer.Parse(TextBox1.Text) 1,2,3どれで実行しても”入力文字列の形式が正しくありません。”とでてしまいます。どなたか良い方法をご存知の方がいたら、教えて下さい。

  • EXCEL VBA VLOOKUP 範囲を変数で

    Excel VBA で VLookup()の第2引数の範囲を行と列の数値の変数で指定したいのすが どのように記述すればよいでしょうか。 以下の式がエラーにならないように具体的に直していただけないでしょうか。 よろしくお願いします。 ----------------------------------- Dim d1 As String Dim d2 As String Dim r1 As Integer Dim r2 As Integer Dim c1 As Integer Dim c2 As Integer Dim c3 As Integer d1 = "愛知" r1 = 2 r2 = 782 c1 = 3 c2 = 5 c3 = 4 d2 = VLookup(d1, Worksheets("Sheet1").Range(Cells(r1, c1), Cells(r2, c2)), c3, False)

  • Double→Integerへの変換で「意図しない変換を防ぐ」

    'もう一質問。頻繁に考えていたこと Class himajin100000 Shared Sub Main Dim hoge As Integer Dim fuga As Double = 5.5 hoge = System.Convert.ToInt32(5.5) System.Diagnostics.Debug.Print(hoge.ToString) hoge = CType(5.5,Integer) System.Diagnostics.Debug.Print(hoge.ToString) 'という変換を防ぎたいです。 'Double値が5.0など、整数として切りの良い数字のときのみ変換したい 'それ以外はプログラマのミスとしてエラーが検出できるように。 'なお、 'hoge = DirectCast(5.5,Integer) 'とか 'hoge = DirectCast(System.Math.Floor(5.5),Integer) 'はエラーが出ます。 '今まで私は, hoge = Integer.Parse(System.Math.Floor(5.5).ToString) System.Diagnostics.Debug.Print(hoge.ToString) 'という風に書いてきました。 'Integer.Parse((5.5).ToString) System.FormatException '何かString型を介している地点で冗長な気がするので 'もっといい方法・わかりやすい方法等があれば教えてください End Sub End Class

  • エクセルVBA:テキストデータ(txt)の読込(改行が変なところでされる)

    勉強しながら、エクセルVBAを組んでみたのですが うまくいきません。 テキストデータを以下のようなプログラムで読んだのですが (100行のデータを縦に並ぶように100個のセルの書き出す) 読み込みデータに「↓」で改行されているところでは 「↓」の間は同一行と見なされてしまうのですが どのようにしたら一行で一つのデータと見てくれるのでしょうか? 分かる方がいましたら教えて下さい。 よろしくお願いします。 Sub pon() '*** 変数の宣言 *** Dim filenum As String Dim i As Integer Dim num As Integer, ms As String, cnt As Integer Dim BookName As String, PathName As String Dim ca As String cnt = 1 i = 1 ca = Cells(1, 56) PathName = "C:\" textpath = Dir(PathName & "pon" & ca & ".txt") BookName = Dir(PathName & "pon" & ca & ".txt") Open PathName & BookName For Input As #1 'ファイルを開きます Do While Not EOF(1) Line Input #1, ms cnt = cnt + 1 Cells(1, 57) = BookName 'データの書き出し Cells(cnt, 56) = ms 'データの書き出し Loop Close #1 End Sub

専門家に質問してみよう