特定の行の中で同じものが続いたらセルを結合する、ということがやりたくて
以下のコードをネット上から探してきました。
上記の動作は実現できたのですが、自分でこのコードをみてもイマイチわかりません。
お分かりになる方、できれば1行ずつ解説してください。
よろしくお願いします。
Sub Sample()
Dim myRng As Range, myRow As Long
Set myRng = Range("A1")
For myRow = 1 To Cells(Rows.Count, 1).End(xlUp).Row
With Cells(myRow, 1)
If .Value = .Offset(1).Value Then
Set myRng = Union(myRng, .Offset(1))
Else
Application.DisplayAlerts = False
myRng.Merge
Application.DisplayAlerts = True
Set myRng = .Offset(1)
End If
End With
Next
End Sub
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
コメントのないコードは読みにくいものですね。
A列の入力されている範囲を対象にして、連続して同じ値のセルがあれば結合しています。
Sub Sample()
'変数宣言 myRngはセル。myRow は数値(行番号、Long型)
Dim myRng As Range, myRow As Long
'変数myRngにセルA1を定義
Set myRng = Range("A1")
'1行目から、A列の入力された最後のセルの行まで繰り返す
' Cells(Rows.Count, 1)=Cells(65536, 1) <Excel97以降なら>
' これはA列の一番下のセル。
' 一番下のセルから上方向に登録されたセルに動いた<End(xlUp)>セルの行を求めている
For myRow = 1 To Cells(Rows.Count, 1).End(xlUp).Row
'Cells(myRow, 1)=セルA? を基準にして
'以下With~End With 間にある『.』の前にはCells(myRow, 1)が省略されている
With Cells(myRow, 1)
'セルA?の値が1つ下のセルの値と等しければ
If .Value = .Offset(1).Value Then
'変数myRngにその時点のmyRngに1つ下のセルを合わせた範囲を再定義している
Set myRng = Union(myRng, .Offset(1))
Else
'セルA?の値が1つ下のセルの値と等しくなければ、
'以下で、セルを結合して、新たな基準セルを定義している
'マクロ実行中の警告やメッセージを非表示にする
Application.DisplayAlerts = False
'変数myRngに定義されたセル範囲を結合
myRng.Merge
'マクロ実行中の警告やメッセージを表示するようにする
Application.DisplayAlerts = True
'新たな基準セルを定義
Set myRng = .Offset(1)
End If
End With
Next
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelVBAで、index、match関数を使用して、指定範囲に出力したい 3 2022/10/18 21:53
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Excel(エクセル) vba 転記するときの最終行について 2 2022/09/03 09:31
- Excel(エクセル) EXCEL マクロで行を挿入して貼り付けようとするとエラーになる。 2 2022/05/24 09:43
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) VBAで教えて頂きたいのですが? 1 2022/04/29 02:36
- Visual Basic(VBA) ExcelVBAの転記について 1 2022/03/23 20:13
- Visual Basic(VBA) excel VBA if文について 3 2022/03/27 17:42
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【エクセル】IF関数 Aまたは...
-
エクセルで指定したセルのどれ...
-
セルをクリック⇒そのセルに入力...
-
Excelでのコメント表示位置
-
エクセル 足して割る
-
対象セル内(複数)が埋まった...
-
Excel2003 の『コメント』の編...
-
貼り付けで複数セルに貼り付けたい
-
Excelで数式内の文字色を一部だ...
-
EXCEL VBA セルに既に入...
-
エクセルのセルの枠を超えて文...
-
エクセル “13ヶ月”を“1年1ヶ月...
-
excelの特定のセルの隣のセル指...
-
複数のセルのいずれかに数字が...
-
(Excel)数字記入セルの数値の後...
-
投資番組の専門家は どういうと...
-
【Excel】 セルの色での判断は...
-
エクセルの一つのセルに複数の...
-
エクセルの取り消し線が引けな...
-
枠に収まらない文字を非表示に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセル 足して割る
-
【エクセル】IF関数 Aまたは...
-
エクセルで指定したセルのどれ...
-
Excelで数式内の文字色を一部だ...
-
Excelでのコメント表示位置
-
貼り付けで複数セルに貼り付けたい
-
対象セル内(複数)が埋まった...
-
セルをクリック⇒そのセルに入力...
-
【Excel】 セルの色での判断は...
-
エクセルの一つのセルに複数の...
-
EXCEL VBA セルに既に入...
-
エクセル “13ヶ月”を“1年1ヶ月...
-
エクセル オートフィルタで絞...
-
エクセルのセルの枠を超えて文...
-
excelのCOUNTIF関数で、『範囲=...
-
(Excel)数字記入セルの数値の後...
-
枠に収まらない文字を非表示に...
-
Excel2003 の『コメント』の編...
-
Excel 例A(1+9) のように番地の...
-
複数のセルのいずれかに数字が...
おすすめ情報