- ベストアンサー
EXCELマクロの話ですが
EXCELマクロの話ですが マクロでcellに以下のようなものを書き出したいとします。 TOM-001,TOM-002,TOM-003・・・TOM-010,TOM-011 と続くようなものを作りたいとおもい以下のようなマクロを組んでみたが・・・ sub tom() Dim i As Integer For i = 0 To 11 cells(i + 1,1).value = "TOM-" & i + 1 Next i end sub 当然のことながら・・・ TOM-1,TOM-2,TOM-3・・・TOM-10,TOM-11 どのようにしたら 最初に描いた『TOM-000』のようなものになるだろうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
cells(i + 1,1).value = "TOM-" & format(i + 1,"000")
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
>EXCELマクロの話ですが マクロの話じゃない。エクセルの書式設定で、顕著に効果が出るのは、数値に対してだけ。 日付は日付シリアル値という数値なのはご存知か。 文字列と数値を&で結合したら文字列になる。 文字列はTOM-1に対しTOM-001のような器用なことは出来ないのは常識。 だから文字列そのものをTOM-001のように作らないとならない。 VBあを遣り出したら直ぐ、1を001の値にしたいニーズが出てくる。そこで関数を探すのだ。 Format関数がそれ。STR関数というのでも出来そうだが文字列1や12と3桁以内の0を先頭に結合しないとダメなので複雑。 Strは前に符号桁1スペースが付く。それを除く。 3-(引く)元数字桁の数の0をくっつける。Mid関数など利用。Replace関数でも出来そう(略) VBAの前に、エクセルの知識が必要を示す例ではないか。
- redfox63
- ベストアンサー率71% (1325/1856)
Format関数を使えばいいと思いますよ Cells(i+1,1).Value = Format( i+1, """TOM-""000") といった具合です
- himajin100000
- ベストアンサー率54% (1660/3060)
Option Explicit Sub Main() Dim i As Integer For i = 0 To 100 '適当にイミディエイトウィンドウでも開いて出力 Debug.Print (Right$("000" & CStr(i), 3)) Next i End Sub
お礼
ありがとうございます。 1つ勉強になりました。 formatの使い方がいまいちだったので、ありがたいです。