dポイントプレゼントキャンペーン実施中!

例えば「001」という文字列があった場合、左側の0を全て取って「1」としたい場合、どのような関数を使ってコードを記述すれば良いのでしょうか?

A 回答 (8件)

数値がInteger型で足りるのであれば変換関数「CInt」を使い変換するのがいいのではないでしょうか?


文字列が入ってたらエラーになるのでIsNumericで数値型かどうか判断してエラー回避をちゃんとして下さい。

If (IsNumeric("0015")) Then
intVal = CInt("0015")
End If

こんな具合に。
    • good
    • 0

VBのバージョンは6.0で良いですか?



Dim strSuji As String

strSuji = "001"

の様な場合、

Format$(strSuji, "#")
で求めれます。

Format よりも Format$ の方が、引数と返値共にStringなので、曖昧性を排除でき、処理も少し速いです。
    • good
    • 0

文字列で求めると解釈して


Function a001(a)
b = Format(Val(a), "#")
a001 = b
End Function
Sub test01()
MsgBox a001("02021")
End Sub
数値以外の引数を指定すると、スペースが返ります。
初歩的な回答ですが。
    • good
    • 0

私もvalを使うのが簡単でいいと思うけど、別のアプローチ


-----------------------------------------------------
Dim a, oRE
a = "001"
Set oRE = CreateObject("VBScript.RegExp") '正規表現オブジェクトを使う
oRE.Pattern = "^0+" '先頭からの連続する0にマッチさせる
a = oRE.Replace(a, "") '先に指定したパターンにマッチする部分を取り除く
    • good
    • 0

当初の質問に対する回答とは異なりますが、ご容赦ください。



回答の中に、Val関数を使用するという回答がありますが、Val関数は型を特定しないことから変換に有効的に思われがちですが、逆に言うとVB任せの変換になるので、コーディング的にはあまり良くありません。

その値がどういう性質のものなのかを考慮し、それに見合った型の変数に格納するのが望ましいと思います。
従って、No.3さんの回答のように、値をチェックして、No.2さん、No.3さんのように然るべき型に変換すべく、CInt関数やFormat関数を用いることが良いと思います。
    • good
    • 0

0を除いた結果を数値として使いたいのか、文字列として使いたいのかがわからないのでなんともいえませんが...、私もNO1のVALがいちばんわかりやすいと思います。


valは引数を数値化するものなので、"001"という文字列は「1」という数値に変換されます。
具体的な使い方はこんな感じです。
 ↓
Dim mozi as string
Dim suti as intejer

mozi = "001"
suti = val(mozi)   →    suti=1
    • good
    • 0

formatをつかえばよいかと。


たとえば

A = "00015"
A = Format(A, "0")

とした場合、Aは15になるはずです。
    • good
    • 0

数字だけの文字列でしたらvalを使えばいいと思います。

ただ、文字列ではなくなりますけど。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!