初めての店舗開業を成功させよう>>

EXCEL2010でVBAを使用してシートを作成しています。
シート1のA1にヘッダ数・A2に項目数を入力します。
VBAのコードを実行するとA1のヘッダ数が1ならシート2のA列には何も表示せず
A2の項目数の分だけB列の14行目から数字を入力していきます。
(例)シート1
  A1:1
  A2:20
 の場合はシート2のB14から20行下まで1~20の値を自動入力させる。
  シート2
  B14:1
  B15:2
    ↓
  B33:20

シート1のA1が2以上の場合はシート2のA14から、シート1のA2の数値分アルファベットを表示させていきます。
(例)シート1
  A1:2
  A2:10
 の場合シート2のA14:A23に「A」を表示させます。(シート1のA2の数分この場合は10行ずつ)
              A24:A33に「B」を表示させます。
              B列にはアルファベットごとに数字を1~表示させます。
  B14:B23 1~10
  B24:B33  1~10
シート1のA1が2なのでA・Bを表示
A1が3だとA・B・C
A1が10だとA・B・C・D・E・F・G・H・I・JがA2の数字で区切りながら表示される。

このようなコードを書きたいのですが、どなたかご教示お願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

Not_Proさん 



以下のコードできると思います。
※但し、シート1のA1は1~26までです("A"~"Z")。

Sub シート自動作成()
 Dim A As Long
 Dim B As Long
 Dim 行 As Long
 With Sheets("シート2").Range("A14")
  For A = 1 To Sheets("シート1").Range("A1")
   For B = 1 To Sheets("シート1").Range("A2")
    .Offset(行, 0) = Chr(Asc("A") + A - 1)
    .Offset(行, 1) = B
    If Sheets("シート1").Range("A1") = 1 Then .Offset(行, 0) = ""
    行 = 行 + 1
   Next B
  Next A
 End With
End Sub
    • good
    • 0
この回答へのお礼

回答ありがとうございます。無事にできました。

お礼日時:2011/07/24 10:30

sub macro1r1()


 dim a, b, i
 a = worksheets("Sheet1").range("A2") '個数
 b = worksheets("Sheet1").range("A1") '種類の数
 for i = 0 To b - 1
  worksheets("Sheet2").range("A14").resize(a, 1).offset(i * a) = iif(b=1,"",chr(65 + i))
  worksheets("Sheet2").range("B14").resize(a, 1).offset(i * a).formula = "=ROW(B1)"
 next i

 with worksheets("Sheet2").range("B14:B" & 13+a*b)
 .value = .value
 end with
end sub

などのように。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
別の方法も知れて助かりました。

お礼日時:2011/07/24 10:33

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


人気Q&Aランキング