• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAと罫線の作成)

VBAと罫線の作成

このQ&Aのポイント
  • VBA勉強中の初心者が、エクセル2003で表を作成し、行いたい処理について質問しています。
  • B列の氏名欄に対応する連番をA列に表示し、氏名欄が入っている部分をA列からD列まですべてを罫線で囲みたいという処理を行いたいという問題があります。
  • 最終行と列の取得方法についてわからず、教えて欲しいとお願いしています。

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

merlionXXです。 > Range("A2:D" & i). > 上記の構文がよくわかりません おや、i は i = Range("B4").End(xlDown).Row '最終行の取得 で、求めた最終行ですよね。 かりに最終行が10行目だとしたら変数 i には10が代入されてますから Range("A2:D" & i).は Range("A2:D10")  ということです。

aidorumary
質問者

補足

なるほど、そうでした。 うまくいきそうです。 ありがとうございます。

その他の回答 (2)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

そこまで出来てたらあと一息でしたね。 一例です。 Sub sample2()   Dim num As Integer '行変数を設定   Dim num2 As Integer '番号変数を設定   Dim i As Long   num = 4 'B列4行目から調べる   num2 = 1 '連番は「1」からスタート   Range("A:A").Clear 'A列のデータをいったんクリアにする   Do Until Cells(num, 2) = "" 'B列の氏名欄が空白なるまで処理を繰り返す     Cells(num, 1) = num2 '連番「1」をB4にまず、代入する     num = num + 1 '行を1行分下げる     num2 = num2 + 1 '番号変数に1をプラスする   Loop   i = Range("B4").End(xlDown).Row '最終行の取得   With Range("A2:D" & i).Borders '罫線設定     .LineStyle = xlContinuous     .Weight = xlThin     .ColorIndex = xlAutomatic   End With End Sub なお、連番を振る方の質問 http://okwave.jp/qa/q6445931.html は、解決したら締め切りましょう。

aidorumary
質問者

補足

ありがとうございます。 勉強中で、ひとつ追加で質問なのですが Range("A2:D" & i). 上記の構文がよくわかりません。 最初に列範囲が来て、後に最終行の 値が来て、結合?しているのでしょうか。 お手数かけ、申し訳ありません。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんにちは! ↓のコードではどうでしょうか? 個人的には For~Nxxt を使いたがる人間です。 一例です。 データは4行目から入るものとします。 Sub test() Columns(1).Clear Dim i, j As Long j = Cells(2, Columns.Count).End(xlToLeft).Column Columns(1).Clear Range(Columns(1), Columns(j)).Borders.LineStyle = xlNone For i = 4 To Cells(Rows.Count, 2).End(xlUp).Row If Cells(i, 2) <> "" Then Cells(i, 1) = Cells(i, 1).Row - 3 '←4行目からのデータの場合です With Range(Cells(i, 1), Cells(i, j)) .Borders(xlEdgeLeft).LineStyle = xlContinuous .Borders(xlEdgeTop).LineStyle = xlContinuous .Borders(xlEdgeRight).LineStyle = xlContinuous .Borders(xlEdgeBottom).LineStyle = xlContinuous .Borders(xlInsideVertical).LineStyle = xlContinuous End With End If Next i End Sub 的外れならごめんなさいね。m(__)m

関連するQ&A