• ベストアンサー

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』のようなものになるだろうか?

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

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

cells(i + 1,1).value = "TOM-" & format(i + 1,"000")

tfh92552
質問者

お礼

ありがとうございます。 1つ勉強になりました。 formatの使い方がいまいちだったので、ありがたいです。

その他の回答 (3)

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

>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)
回答No.3

Format関数を使えばいいと思いますよ Cells(i+1,1).Value = Format( i+1, """TOM-""000") といった具合です

回答No.2

Option Explicit Sub Main() Dim i As Integer For i = 0 To 100 '適当にイミディエイトウィンドウでも開いて出力 Debug.Print (Right$("000" & CStr(i), 3)) Next i End Sub

関連するQ&A

専門家に質問してみよう