VBA를 사용하여 Excel과 수직으로 병합된 셀의 시작 범위 및 종료 범위 가져오기
수직으로 병합된 세포의 첫 번째 세포와 마지막 세포를 찾아야 합니다.
제가 B2 세포를 B50 세포로 병합한다고 가정해 보겠습니다.
시작 셀(=B2)과 끝 셀(=B50)을 VBA에 입력하려면 어떻게 해야 합니까?
Sub MergedAreaStartAndEnd()
Dim rng As Range
Dim rngStart As Range
Dim rngEnd As Range
Set rng = Range("B2")
If rng.MergeCells Then
Set rng = rng.MergeArea
Set rngStart = rng.Cells(1, 1)
Set rngEnd = rng.Cells(rng.Rows.Count, rng.Columns.Count)
MsgBox "First Cell " & rngStart.Address & vbNewLine & "Last Cell " & rngEnd.Address
Else
MsgBox "Not merged area"
End If
End Sub
아래 매크로는 워크북의 모든 시트를 살펴보고 병합된 셀을 찾은 다음 병합을 해제하고 모든 병합된 셀에 원래 값을 넣습니다.
이것은 DB 애플리케이션에 자주 필요하기 때문에 당신과 공유하고 싶었습니다.
Sub BirlesenHucreleriAyirDegerleriGeriYaz()
Dim Hucre As Range
Dim Aralik
Dim icerik
Dim mySheet As Worksheet
For Each mySheet In Worksheets
mySheet.Activate
MsgBox mySheet.Name & “ yapılacak…”
For Each Hucre In mySheet.UsedRange
If Hucre.MergeCells Then
Hucre.Orientation = xlHorizontal
Aralik = Hucre.MergeArea.Address
icerik = Hucre
Hucre.MergeCells = False
Range(Aralik) = icerik
End If
Next
MsgBox mySheet.Name & " Bitti!!"
Next mySheet
End Sub
B2를 B50으로 병합했다고 가정합니다.
그러면 시작 셀 주소는 다음과 같습니다.
MsgBox Range("B2").MergeArea.Cells(1, 1).Address
종료 셀 주소:
With Range("B2").MergeArea
MsgBox .Cells(.Rows.Count, .Columns.Count).Address
End With
위 코드에서 B2 대신 병합된 영역의 셀 주소를 입력할 수 있습니다.
병합된 범위에 있는 셀 중 하나의 주소를 알고 있다고 가정하면 해당 범위에서 오프셋을 선택하고 행/열을 가져올 수 있습니다.
Sub GetMergedRows()
Range("A7").Select 'this assumes you know at least one cell in a merged range.
ActiveCell.Offset(-1, 0).Select
iStartRow = ActiveCell.Row + 1
Range("A7").Select
ActiveCell.Offset(1, 0).Select
iEndRow = ActiveCell.Row - 1
MsgBox iStartRow & ":" & iEndRow
End Sub
위의 코드는 오프셋 행을 선택할 수 없는 경우(즉, 병합된 행이 A1 ~ 임의의 행인 경우) 오류를 발생시키므로 오프셋할 수 없는 경우 코드를 알려주는 오류 처리를 추가하려고 합니다. 위쪽 행은 1이어야 하고 아래쪽 행은 65,536이어야 합니다.이 코드도 1차원이므로 x축도 추가할 수 있습니다.
셀 참조를 문자열로 사용하려면 위치, 시작 셀 및 끝 셀이 문자열 변수인 다음과 같은 것을 사용할 수 있습니다.
Location = Selection.Address(False, False)
Colon = InStr(Location, ":")
If Colon <> 0 Then
StartCell = Left(Location, Colon - 1)
EndCell = Mid(Location, Colon + 1)
End If
이러한 개체를 범위로 설정하려면 시작 범위 및 끝 범위가 범위 개체인 이 항목을 추가할 수 있습니다.
set StartRange = Range(StartCell)
set EndRange = Range (EndCell)
병합된 셀을 순환하려면 이 작업을 수행합니다.
Sub LoopThroughMergedArea()
Dim rng As Range, c As Range
Set rng = [F5]
For Each c In rng.MergeArea
'Your code goes here
Debug.Print c.Address'<-Sample code
Next c
End Sub
언급URL : https://stackoverflow.com/questions/2951070/get-start-range-and-end-range-of-a-vertically-merged-cell-with-excel-using-vba
'programing' 카테고리의 다른 글
application.yml Spring Cloud Gateway에서 사용자 지정 필터를 지정하는 방법 (0) | 2023.08.13 |
---|---|
jQuery로 파일 입력 크기를 확인하는 방법은 무엇입니까? (0) | 2023.08.13 |
바인딩 보기 - 포함된 레이아웃에 대한 바인딩을 가져오려면 어떻게 해야 합니까? (0) | 2023.08.13 |
새 줄을 분할하는 방법 (0) | 2023.08.13 |
MySQL/MariaDB에서 임의 절차 코드 실행 (0) | 2023.08.13 |