• ベストアンサー

Excel VBAの数値変換

ExcelVBAの質問です。 ある文字列から抽出した数字(ただし文字型)を数字型に変換するのはどうしたらよいですか。 Dim moji As String, xxx As String Dim suji As Doulbe xxx = Mid(moji, 3, 4) この後、xxxを数字型にしたいのですが、どうしたらよいですか? よろしくお願いします。

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

  • ベストアンサー
  • trajaa
  • ベストアンサー率22% (2662/11921)
回答No.1

入れ物と思わしき変数がDouble型なので一応、Cdbl(XXX)で可能です。 http://www.kanaya440.com/contents/script/vbs/function/data/cdbl.html しかし、XXX内に数字として扱えない文字が混じっていると落ちます。 その辺は注意が必要。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 【vba】「CStr」と「Str」は同じ意味ですか?

    Sub 数値を文字型に変更() Dim i As Long Dim moji As String i = 1 moji = CStr(i) moji = Str(i) End Sub 上記のコードで得られる結果は同じです。 "1"になります。 「CStr」でも「Str」でも数値を文字列に変換しています。 ということは「CStr」でも「Str」は同じなのですか? しかしコードの表示色が 「CStr」→キーワード 「Str」→識別子 です。 これが違うと言うことは何かが違うのでしょうか?  よろしくお願いします。

  • vba カタカナのみ全角にするには?

    ひらがな・英字・数字・記号が組み合わさったランダムな文字を カタカナのみ全角にしたいです。 Sub test() Dim moji As String moji = "あああ123AAAアアア<>()" MsgBox StrConv(moji, vbWide) End Sub これだと全て全角になってしまいます。 moji に格納される文字列は規則はなくランダムです。 この状態でカタカナのみ全角にする方法はありますか?

  • 「'」も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で変換させることは無理なのでしょうか?

  • エクセルで、半角カタカナの住所録を全てローマ字に変換したいと思います。

    エクセルで、半角カタカナの住所録を全てローマ字に変換したいと思います。 かなり大量に量があるので、一度に簡単に便利に出来たらよいと思い、こちらでも 似たケースを検索したところ、下記のユーザー定義登録が出てきました。 Public Const Roma_Boin = "AIUEO" Public Const Kata_S1 = "AアイウエオKカキクケコSサシスセソTタチツテトNナニヌネノ" Public Const Kata_S2 = "HハヒフヘホMマミムメモYヤイユエヨRラリルレロWワイウエヲ" Public Const Kata_S3 = "GガギグゲゴZザジズゼゾDダヂヅデドBバビブベボPパピプペポ" Public Function changeKatakana2Romaji(srcMoji As String)   Dim kataMoji As String 'カタカナ文字   Dim RomaMoji As String 'ローマ字   Dim L As Long '文字カウンタ   Dim elm As String '1文字   Dim Pot As Integer '変換テーブルでの位置   Dim wkBoin, wkSiin As String '母音と子音   Dim chgTBL As String '変換テーブル     chgTBL = Kata_S1 & Kata_S2 & Kata_S3   kataMoji = StrConv(srcMoji, vbKatakana + vbWide) '全角カタカナにして『゛゜』を処理   Application.Volatile   For L = 1 To Len(kataMoji) 'カタカナ全角文字の母音と子音を作る     elm = Mid(kataMoji, L, 1): Pot = InStr(chgTBL, elm)     If 0 < Pot And Pot <= 6 Then       wkBoin = Mid(Roma_Boin, Pot - 1, 1): wkSiin = "": elm = wkBoin & wkSiin     ElseIf Pot > 6 Then       wkBoin = Mid(chgTBL, Int((Pot - 1) / 6) * 6 + 1, 1)       wkSiin = Mid(Roma_Boin, (Pot - 1) Mod 6, 1): elm = wkBoin & wkSiin     Else       If elm = "ン" Then elm = "N" '『ン』は特別処理     End If     RomaMoji = RomaMoji & elm   Next   RomaMoji = KomojiOkikae(RomaMoji, "ャ", "YA") '小文字『ャ』の処理   RomaMoji = KomojiOkikae(RomaMoji, "ュ", "YU") '小文字『ュ』の処理   RomaMoji = KomojiOkikae(RomaMoji, "ョ", "YO") '小文字『ョ』の処理   For L = 2 To Len(RomaMoji) '小文字『ッ』の処理     If Mid(RomaMoji, L - 1, 1) = "ッ" Then       Mid(RomaMoji, L - 1, 1) = Mid(RomaMoji, L, 1)     End If   Next   changeKatakana2Romaji = StrConv(RomaMoji, vbNarrow) End Function 'カタカナ小文字の処理(ャュョ) Public Function KomojiOkikae(Moji As String, komoji As String, Okikae As String)   Dim kPot As Integer   If InStr(Moji, komoji) > 0 Then     Mid(Moji, InStr(Moji, komoji) - 1, 2) = Okikae   End If   KomojiOkikae = Moji End Function ですが、どうしてもうまく実行されません。「プロシージャの外では無効です」という メッセージが出ました。他の方法でも、構いません。 当方、VBA初心者でして、お手数ですが、「ツールバー→マクロ」というレベルから、 教えていただけると助かります。 どうぞ宜しくお願い致します。

  • 文字列を含むセルを数値に変換する方法

    79062150007という数字の7906という部分だけ取り出すのに、midを使ってやってみたのですが、 =mid(文字列,1,4) とそのまま残るだけで、うまく変換しません。 文字列を数値に変換する方法を調べ、色々試してみたのですが、うまくいきません。 どうすれば良いのでしょうか?

  • Excel VBAの文字列と数値の分類

    txtファイルで取り込んだ2行にまたがっている数値・英文字・ひらがななどを、数値だけのtxtファイルとそれ以外のtxtファイルを別々に作成し、保存するプログラムを組みたいのですが、よく分かりません。 ちなみに、使っているOSとAPはWinXP、Excel2003です。 InputData.txtの内容 A34bFg7p0 あ 1ylut890 B45LK4L え Number.txtの完成形 34701890454 String.txtの完成形 AbFgp あ ylutBLKL え '変数の宣言 Dim myFile As String Dim CC As Integer Dim XX As Integer Dim WW As Variant Dim str As String Dim tempStr As String Dim B As String Dim C As String myFile = Dir("InputData.txt") 'ファイルの読み込み If myFile = "InputData.txt" Then Open myFile For Input As #1 Do While Not EOF(1) Input #1, myText Loop '書き込みファイルの作成 Open "Number.txt" For Output As #2 Open "String.txt" For Output As #3 '数字・文字列の分類 CC = Len(myFile) For XX = 1 To CC str = Mid(myFile, XX, 1) If str >= 0 And str <= 9 Then B = B & str Else C = C & str End If Next Print #2, B Print #3, C Close #1, #2, #3 'エラーメッセージの表示 Else MsgBox "ファイルは存在しません。" End If ここまでやっている状態です。よろしくお願いします。

  • エクセルVBAのコードを簡単に表現したい

    お世話になっています。 エクセルVBAでコードを書いたのですが、なにぶん初心者のためゴテゴテしたものになってしまいました。 A列にはA2からA11まで15文字以内の文字列が入っています。 同じ行のB列からP列に、濁点も1文字として1セルに1文字づつ抜き出すようにコードを書きました。 以下です。 Sub test() Dim i As Integer Dim m As Integer Dim s1 As Worksheet Set s1 = Sheets("sheet1") For i = 2 To 11 For m = 1 To 15 変換 = s1.Cells(i, 1) 変換 = StrConv(変換, vbKatakana) 変換 = Application.WorksheetFunction.Asc(変換) 変換 = Mid(変換, m, 1) 変換 = StrConv(変換, vbWide) s1.Cells(i, m + 1) = StrConv(変換, vbHiragana) Next Next End Sub そこで質問なのですが、上記のコードをもっとスマートに表現するとどのようなコードになるのでしょうか。(特に「変換」が連なっているところ) よろしくお願いします。

  • VBA Excelのセル検索

    VBAで以下の要領でセルの検索をしています。 ------------------------------------------- dim getCell As String dim inputStr As String Windows("ExcelBook.xls").Activate Sheets("sheet1").Select inputStr = "58" getCell = Columns("C").Find(inputStr) ------------------------------------------- C列にある文字列を検索して、該当するセルの行番号を取得したいのですが、その検索する「文字列」は数字なんです(0~9000までで重複しません)。 上の方法で実行すると、inputStrに代入した数字をgetCellが持ってしまうのですが・・・ 色々考えているのですが分かりません。 どなたか教えて頂けませんか?よろしくお願いします。

  • エクセルVBAでの変数

    いつもお世話になります。 今回の『壁』は”変数”です。 変数の中に更に変数を持たせることはできますか? 何をしたいかと言いますと… dim mon1 as string dim mon2 as string dim mon3 as string dim mon4 as string dim mon5 as string dim tue1 as string dim tue2 as string …というように月曜から日曜までの頭3文字プラス1~5の組み合わせの変数を作りたいのですが、 この調子で作っていくと35コになってしまいます。 そこで、曜日の頭3文字より後ろは決まって1~5のため、 dim i as integer for i = 1 to 5 next i …と組み合わせられないかと思ったのです。 どなたか知恵をお貸しください。 よろしくお願いします。

  • VB6で配列を文字列に変換する方法?

    VisualBasic6を使っております。 Dim ary() As Byte Dim s as String 配列を文字列に変換したり、文字列を配列にしたいのですが どのようにすれば良いのでしょうか?

このQ&Aのポイント
  • 中学三年生が脈が頻脈気味と言われた場合、正常範囲を超えて脈が速い状態です。
  • 頻脈の原因は様々であり、アレルギーの数値が高い場合も関係している可能性があります。
  • 薬局で買える頻脈を改善する薬はありますが、まずは医師の診断を受けることをおすすめします。
回答を見る

専門家に質問してみよう