
http://okwave.jp/qa4965370.htmlで質問させていただいた内容の発展です
A列にデータが入っているとします
たとえばA8:A50までとします(変動します)
A列の最終行50行目を取得したら、
S~U列8行目から、S~U列の、A列で取得した最終行目まで罫線を引きたいのです
(開始が8行目は決定しています)
罫線の設定はこちらで組めるので、そこまでの例を出していただきたいのですが……
S列のみだと、offsetで簡単にできたのですが、複数列にわたるとむずかしいでしょうか?
暇な時にでも回答お願いします
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
マクロの記録をとれば判ることを、繰り返し聞かないで、自分で考えること。
内容自体も難しいことは無い。個々に質問する前に、もうすこし、勉強を広げて、一通りのVBAの勉強が必要と思う。VBAの解説書やその逆引き解説書を読んでから
考えるべきで、今の段階で何かやろうとすると、質問ばかりになるとおもう。
ーーー
罫線の引き様を、田の字型で良いとすると(このことも質問に書いてないが)
例えば、S2:U12を選択して(操作で)罫線を書く。マクロの記録をとると、
Range("S2:U10").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
・・
以下長いので略
このうちA列の最下行の行番号によって
Range("S2:U10").Select
のU10の10の部分が変わることは判るだろう。
そして(A列)データ最下行を捉えるのは(他にも方法が有るが)
Sub test01()
d = Range("A65536").End(xlUp).Row
MsgBox d
End Sub
を実行して納得すること。この手法は定石で、ここの回答に頻繁に出てくる。
ForNexrを使って、ある列のセル全部に対し繰り返し処理をしたいとき必ず必要になる。
だから、最終形は
Sub test01()
d = Range("A65536").End(xlUp).Row
MsgBox d
Range("S2:U" & d).Select
Macro1
End Sub
Macro1はマクロの記録(最初はMacro1と言う名になる)をとったコードの、始めのほうの
Range("S2:U10").Select
の行だけを削除したもの(を指す。それを1行だけ削除してそのまま使う)。
Range("S2:U" & d).Selectはほかにも書き方があるが、これが判りやすいと思うが、こういうことができると言うのも。他人のコードを見て、学んだことだ。要は経験のみ。
No.3
- 回答日時:
こんにちは。
>S~U列8行目から、
ここに曖昧な表現がありますから、はっきりしませんが、なるべく忠実に表そうとすれば、こういうことだと思います。
Sub Test1()
Dim A As Range
Dim B As Range
Set A = Range("S8:U8")
Set B = Range("A65536").End(xlUp)
If B.Row > 8 Then
Range(A, B).Select
End If
Set A = Nothing
Set B = Nothing
End Sub
>S~U列8行目から、
ここが、もしも確定していないのなら、
Sub Test2()
Dim A As Range
Dim B As Range
Set A = Range("IV8").End(xlToLeft)
If A.Column > 18 Then 'S以降
If A.Column > 21 Then 'V以前
Set A = Range("U8")
End If
Else
GoTo EndLine
End If
Set B = Range("A65536").End(xlUp)
If B.Row < 8 Then '8行以前
GoTo EndLine
End If
Range(A, B).Select
EndLine:
Set A = Nothing
Set B = Nothing
End Sub
VBAもひとつの言語ですから、作業をVBA言語に映すことが可能です。こんなコードは通常ありえないのですが、もし、きんちと言葉がまとめられるなら、短くすることが可能だとは思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「段」と「行」の違いがよくわ...
-
エクセルで離れた列を選択して...
-
列方向、行方向の定義
-
Excelの行数、列数を増やしたい...
-
VLOOKUPの列番号の最大は?
-
LEFT関数とIF関数の組み合わせ...
-
Excel文字列一括変換
-
VBA 指定した列にある日時デー...
-
エクセル 重複したデータを別...
-
エクセルで最初の行や列を開け...
-
vba マージエリアの行数を非表...
-
EXCEL VBA 文字列から電話番号...
-
ListViewで列を指定して表示さ...
-
関数の検証がしたい
-
csvデータの列の入れ替えができ...
-
最近急にVBAの処理速度が遅くな...
-
CSVファイルの「0落ち」にVBA
-
エクセル 任意の列数で分割する...
-
Alt+Shift+↑を一括で行うには、...
-
「コピー → 行列を入れ替えて貼...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「段」と「行」の違いがよくわ...
-
エクセルで離れた列を選択して...
-
vba マージエリアの行数を非表...
-
VLOOKUPの列番号の最大は?
-
列方向、行方向の定義
-
LEFT関数とIF関数の組み合わせ...
-
VBA 指定した列にある日時デー...
-
Excelの行数、列数を増やしたい...
-
エクセル マクロ 範囲指定で...
-
エクセルのソートで、数字より...
-
VBAで結合セルを転記する法を教...
-
エクセルで最初の行や列を開け...
-
VBAで別ブックの列を検索し、該...
-
横軸を日付・時間とするグラフ化
-
Excel文字列一括変換
-
最近急にVBAの処理速度が遅くな...
-
csvデータの列の入れ替えができ...
-
データシートビューのタイトル...
-
エクセルマクロPrivate Subを複...
-
CSVファイルの「0落ち」にVBA
おすすめ情報