ID非公開

2020/9/23 7:24

22回答

エクセルvba について質問です。 vba で、ボタン1つで操作したいです。 B列の1行目に a001 と入力して、その後、

エクセルvba について質問です。 vba で、ボタン1つで操作したいです。 B列の1行目に a001 と入力して、その後、 5行置きに連番で、a002 、a003 など、入力し、700行目まで、続きたいです。 表示形式は、日付 でお願い致します。 a700 まで行くと自動で.、b001 からb700 まで変わる様にしたいです。 何卒アドバイスよろしくお願い致します

Excel | Visual Basic47閲覧xmlns="http://www.w3.org/2000/svg">50

ベストアンサー

0

'5行おきだと696行目でa140になります、a700には到達しません。 '参考までにz999まで5行おきに作成するコードです Sub a() Dim i As Long Dim j As Long Dim num As Long Dim blankRow As Integer Application.ScreenUpdating = False blankRow = 5 num = 97 - blankRow For i = 97 To 122 num = num + blankRow For j = 1 To 999 Cells(num - 96, 2).Value = Chr(i) & Format(j, "000") num = num + blankRow Next j num = num - blankRow Next i Application.ScreenUpdating = True End Sub

ID非公開

質問者

2020/9/23 19:44

追記ですが、先頭の記号をa~zの範囲で自分で選べる様に出来ますか? a001、c002 等、最初の記号を自分で選べる様に出来ますか? よろしくお願いします。

ThanksImg質問者からのお礼コメント

この度はありがとうございます。 とても分かりやすくて為になりました。

お礼日時:9/28 3:39

その他の回答(1件)

0

>a700 まで行くと自動で b001 から b001から書き込むのが a700 (3496行目) の5行下 (3501行目) からなのでしたら―― 以下をActiveXコマンドボタンに記述します。 ------- Private Sub CommandButton1_Click() Dim rw As Long, gr As Long, al As String, num As Long rw = 1 For gr = 1 To 5 '※(下記) al = Replace(Cells(1, gr).Address(0, 0), 1, "") Do num = num + 1 If num = 701 Then Exit Do Cells(rw, 1).Value = LCase(al) & Format(num, "000") rw = rw + 5 Loop num = 0 Next End Sub ------- ※:先頭の記号は a ~ e の範囲にしています。

ID非公開

質問者

2020/9/23 19:44

追記ですが、先頭の記号をa~zの範囲で自分で選べる様に出来ますか? a001、c002 等、最初の記号を自分で選べる様に出来ますか? よろしくお願いします。