당신의 편집에
.Select/Activate
의 사용을 피하고 개체의 자격을 완전히 부여하십시오. 당신은 여전히 다음이 참조 코드를 잘못 무엇인지 알고 싶다면 INTERESTING READ
는 귀하의 코드는
Private Sub CommandButton1_Click()
Dim ws As Worksheet
Dim rng1 As Range, rng2 As Range
'~~> Change as applicable
Set ws = ThisWorkbook.Sheets("Sheet1")
With ws
Set rng1 = ws.Range("A10")
Set rng2 = .Range(rng1, rng1.End(xlUp))
With rng2
Debug.Print .Address
'
'~~> Do something with the range
'
End With
End With
End Sub
과 같이 쓸 수있다.
범위를 이미 정의했습니다. ActiveSheet.Range()
을 다시 추가 할 필요가 없습니다. 실제로 문제가하거나 중복 ActiveSheet.Range() 귀하의 코드를 주석
에서
Private Sub CommandButton1_Click()
Dim i As Range
Set i = ActiveCell
ActiveSheet.Range(i, i.End(xlUp)).Select
End Sub
편집
후속 조사로 기록 할 수 있었나요? - user3033634 14 분 전
이것은 problematic
입니다. 다양한 개체의 기본 속성은 .Value
이 코드
Sub Sample()
Dim ws As Worksheet
Dim rng As Range
Set ws = ThisWorkbook.Sheets("Sheet1")
With ws
Set rng = .Range("A1")
rng.Value = "Blah"
MsgBox rng '<~~ This will give you "Blah"
MsgBox rng.Value '<~~ This will give you "Blah"
MsgBox rng.Address '<~~ This will give you "$A$1"
MsgBox ws.Range(rng) '<~~ This will give you an error
'~~> Why? Becuase the above is evaluated to
'MsgBox ws.Range("Blah")
MsgBox ws.Range(rng.Address) '<~~ This will give you "Blah"
End With
End Sub
후 귀하의 편집에 무엇이 잘못되었는지 설명이 예제를 고려, 난 내 대답에 약간의 변화를 만들었습니다. 페이지를 새로 고침해야 볼 수 있습니다. –