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

VBAで結合したセルの番号を出力する関数を作成したい

このQ&Aのポイント
  • VBAを使って、結合したセルの番号を出力する関数を作成したいです。
  • 呼び元でこの関数を呼び出し、B列に結合したセルの番号を出力します。
  • 他の処理と組み合わせて使用し、結合したセルの番号を振ることができます。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんばんは。 >呼び元は他の処理も行っていて、機能追加の意味で別関数を用意したいです。 なぜ、そんなに難しく考えなくてはならないのか、私には良く分かりません。 一応、ユーザー定義関数を作ってみました。た。 '原則的に、標準モジュール用 '------------------------------------------- Sub 呼び元()   Dim i As Long   For i = 1 To 6     Call 結合番号出力(Cells(i, 1), i)   Next End Sub Function 結合番号出力(rng As Range, ByRef i As Long)   Dim j As Long   With rng     For j = 1 To .MergeArea.Count       .Cells(j, 1).Offset(, 1).Value = j     Next j   End With   i = i + j - 2 End Function '========================================= '私なら、このように考えます。 Sub Test1()   Dim i As Long   Dim j As Long   j = 1   For i = 1 To 6     If Cells(i, 1).MergeArea.Count > 1 Then       Cells(i, 2).Value = j       j = j + 1     Else       j = 1       Cells(i, 2).Value = 1     End If   Next i End Sub

hrrk
質問者

お礼

ご回答ありがとうございました。 教えて頂いたコードを参考にして、やりたいことができました。 大変助かりました。 ありがとうございました。 ------ 説明不足のところがありました。 実際やりたかったことを今後の参考にメモしておきます。 呼び元は1行ごとに複数関数を呼んでいて、結合番号出力も 1行ごとに処理します。(うまくお伝えできそうにないので 作ったコードをメモします。 Sub 呼び元() Dim i As Long Dim j As Long j = 1 For i = 1 To 6 '←行カウンタ ' Call 処理1 Call 結合番号出力(i, j) ' Call 処理2 Next End Sub Sub 結合番号出力(i, j) With Cells(i, 1) If .MergeArea.Count > 1 Then .Offset(, 1).Value = j j = j + 1 Else j = 1 .Offset(, 1).Value = j End If If .MergeArea.Count < j Then j = 1 End If End With End Sub

その他の回答 (1)

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.2

こんな感じ? Sub test() Dim i, j j = 1 For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row If Cells(i, 1).MergeCells Then Cells(i, 2).Value = j j = j + 1 Else Cells(i, 2).Value = 1 j = 1 End If Next i End Sub 以上参考まで

hrrk
質問者

お礼

ご回答ありがとうございました。とても参考になり、やりたいことができました。

関連するQ&A