以下マクロの処理を最終行まで処理されるようにしたいです。
以下マクロですと最初の5行のA~D列をそれぞれ結合して左上に寄せる処理をしてます。
これを5行おきに最終行まで処理させたいです。
5行のうち2~5行目は空白です。
' merge Macro
'
'
Range("A7:A11,B7:B11,C7:C11,D7:D11").Select
Range("D7").Activate
With Selection
.HorizontalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Selection.Merge
With Selection
.HorizontalAlignment = xlLeft
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
End With
With Selection
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlTop
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
End With
End Sub
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
こんにちは
すでに回答がありますけれど、以下はご参考までに。
(各列について、最終行までを処理します)
Sub Q13674218()
Dim rw As Long, col As Long
rw = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
rw = Application.Max(rw - 7, 1)
With Range("A7:D7").Resize(rw)
.UnMerge
.IndentLevel = 0
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlTop
End With
Application.DisplayAlerts = False
For col = 1 To 4
For rw = 7 To Cells(Rows.Count, col).End(xlUp).Row Step 5
Cells(rw, col).Resize(5).Merge
Next rw
Next col
Application.DisplayAlerts = True
End Sub
No.3
- 回答日時:
#2です
Range("A7:A11,B7:B11,C7:C11,D7:D11") が
Range("A7:D11")・・・・とんでもない回答ですみません
試さないから間違える・・ですね
Dim i As Long
For i = 7 To Cells(Rows.Count, 1).End(xlUp).Row Step 5
With Range("A" & i).Resize(5, 4)
部分を
Dim i As Long
Dim n As Integer
For i = 7 To Cells(Rows.Count, 1).End(xlUp).Row Step 5
n = i + 4
With Range("A" & i & ":A" & n & ",B" & i & ":B" & n & ",C" & i & ":C" & n & ",D" & i & ":D" & n)
とか・・・かっこ悪すぎなら
' merge Macro
'
'
Dim i As Long
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row - 7 Step 5
With Range("A6:A10,B6:B10,C6:C10,D6:D10").Offset(i)
.Merge
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlTop
End With
Next
End Sub
とか・・・
二重ループで範囲を繰り返しみたいな
Sub test02()
Dim i As Long
Dim n As Integer
For i = 7 To Cells(Rows.Count, 1).End(xlUp).Row Step 5
For n = 1 To 4
With Cells(i, n).Resize(5)
.Merge
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlTop
End With
Next
Next
End Sub
#2は参考になる部分があればよいのですが、勘違いで誤回答です
No.2
- 回答日時:
まず記録マクロをまとめます
通常、処理は上から下に実行されるので同じプロパティへの設定は下の方が最終実行されますので重複している処理をまとめると・・
' merge Macro
'
'
Range("A7:A11,B7:B11,C7:C11,D7:D11").Select
With Selection
.Merge
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlTop
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
End With
End Sub
となります
さらに今回省略可能な設定を省略すると
' merge Macro
'
'
Range("A7:A11,B7:B11,C7:C11,D7:D11").Select
With Selection
.Merge
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlTop
End With
End Sub
さらにさらにSelect::Selection
Range("A7:A11,B7:B11,C7:C11,D7:D11") :: Range("A7:D11")
をまとめて書くと
Sub test()
With Range("A7:D11")
.Merge
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlTop
End With
End Sub
となります・・・(Selectはされませんが5行にまとまりました)
最終行まで5行おき(解釈が・・・)
カウント変数などを使い繰り返し処理が必要になります
範囲を変えていくのに扱いやすい書き方に変えます(一例)
With Range("A7:D11")==With Range("A7").Resize(5, 4)
最終行を取得します
>5行のうち2~5行目は空白です。
1行目には値があるという事ですね 列の掲示はありませんが A列とします
Cells(Rows.Count, 1).End(xlUp).Row :最下行の行番号
5行おきに A7の次はA12という事でしょうか
Dim i As Long
For i = 7 To Cells(Rows.Count, 1).End(xlUp).Row Step 5
スタート7で Step 5で繰り返しごとに5進む 7>12>17>>>>
変数iを使って範囲を特定、書式プロパティを設定 繰り返し処理をすると
Dim i As Long
For i = 7 To Cells(Rows.Count, 1).End(xlUp).Row Step 5
With Range("A" & i).Resize(5, 4)
.Merge
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlTop
End With
Next
End Sub
のようになります(一例)
With Range("A" & i).Resize(5, 4)は
With Cells(i, 1).Resize(5, 4)や
With Range(Cells(i, 1), Cells(i + 4, 4)) などなど書き方があります
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) マクロで最終行を取得してコピーしたい 3 2022/04/06 19:07
- Visual Basic(VBA) 最終列の右へSUM関数を作成するため下記コードを実行しましたが、最終列「10月28日」が上書きされて 3 2022/12/05 20:32
- Excel(エクセル) エクセルマクロで教えてください 2 2022/05/04 09:07
- Visual Basic(VBA) エクセル VBA 処理スピードを上げたいのですが。 6 2023/03/31 20:52
- Visual Basic(VBA) Excel VBAでフォルダ内の全テキストファイルの任意データを取得について 7 2021/12/18 16:00
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/10 14:24
- Excel(エクセル) マクロでセル内の文字列と同じ名前ファイルを選択し、コピペする方法 2 2021/12/31 15:15
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Visual Basic(VBA) Excel_マクロ_現在開いているシートにマクロを実行したいです 1 2023/02/14 23:54
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/13 08:41
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
エクセルの関数でわからないことあるのでコード付きで教えてください
Excel(エクセル)
-
会社のPCに入っているExcelでバーコードを作ろうと思い、「開発」→「挿入」→「コントロールの選択
その他(Microsoft Office)
-
A列B列どちらにもあるのを抽出する
Visual Basic(VBA)
-
-
4
マクロを実行するとエクセルが小さく表示される
Excel(エクセル)
-
5
ExcelのVBAのことで質問です。 以下のコードを入れ、ボタンを押せば作動させると写真のように画面
Visual Basic(VBA)
-
6
excelのVBAについて、以下のコードに追加をお願いいたします。
Visual Basic(VBA)
-
7
エクセルの「パスの定義」の仕方について教えてください
Excel(エクセル)
-
8
エクセルで【0.5日と1日】を表示したいのですが。。。
Excel(エクセル)
-
9
ご教授お願いします。#NUM!が解消されません。
Visual Basic(VBA)
-
10
【マクロ】for nextステートメントがわかりません。例あり。
Excel(エクセル)
-
11
【VBA】【マクロ】 指定の条件で、空白の行を挿入
Excel(エクセル)
-
12
Excelのマクロファイルを開くと下記のエラーがでます。
Excel(エクセル)
-
13
エクセルで、複数のマスに構文を一度に入力する方法を教えてください
Excel(エクセル)
-
14
Excelセルに入力された文字の色を変える方法を教えてください
Visual Basic(VBA)
-
15
お世話になります。 Excel VBAのプログラムについてご教授をお願いいたします。 添付した写真よ
Visual Basic(VBA)
-
16
VBA コード
Visual Basic(VBA)
-
17
Excel VBA ダブルクリックで入力 複数まとめる
Visual Basic(VBA)
-
18
エクセルでXLOOKUP関数が使えません
その他(Microsoft Office)
-
19
VBAのことで質問です
Visual Basic(VBA)
-
20
近似式 エクセルについて 分かる方いましたらお願いします。 f=から始まる近似式、グラフを右クリック
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
IF文に時間(何時から何時ま...
-
vbaのエラー対応(実行時エラー...
-
【C#/Java?】try-catchでcatch...
-
特定の名前のオートシェイプの...
-
マクロで、次のコードへ行く前...
-
途中で処理を中断させたい (ア...
-
ExcelのVBAで、選択したファイ...
-
シグナル 6(SIGABRT)とは?
-
VBA 複数の行を高速で削除する...
-
【Vb.net】プリンタジョブの取得
-
jspのiterateのindexidについて
-
変数を使用したFunctionから戻...
-
Excel VBA セルの名前があるか...
-
private subモジュールを他のモ...
-
どうやってもFor文を抜けてしま...
-
順番に処理させたい
-
【C#】Page_Loadさせない方法に...
-
ListViewから選択中の文字列を取得
-
ドリブン??
-
特定のファイルを他のプロセス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【C#/Java?】try-catchでcatch...
-
IF文に時間(何時から何時ま...
-
private subモジュールを他のモ...
-
vbaのエラー対応(実行時エラー...
-
マクロで、次のコードへ行く前...
-
どう増強すべきか
-
特定の名前のオートシェイプの...
-
シグナル 6(SIGABRT)とは?
-
Excel VBA セルの名前があるか...
-
ExcelのVBAで、選択したファイ...
-
どうやってもFor文を抜けてしま...
-
シェルスクリプトでファイル内...
-
ドリブン??
-
特定のファイルを他のプロセス...
-
VB6にてネットワーク上にある共...
-
【VBA】エラー処理で別プロシー...
-
Functionで戻り値を複数返す方法
-
Word VBA。各マクロの間に待ち...
-
エクセル VBAで複数セル選択時...
-
VBA 複数の行を高速で削除する...
おすすめ情報