• ベストアンサー

文字列を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/17069)
回答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
質問者

補足

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