VBA를 통해 Range 클래스의 선택 방법이 실패했습니다.
이것이 제가 현재 작업하고 있는 코드인데, 이 문제가 발생하고 있습니다.저는 엑셀 초보인데 뭐가 잘못됐는지 모르겠어요.
Private Sub cmdRecord_Click()
Sheets("BxWsn Simulation").Range("Result").Select //This is the line with the problem, as excel told me.
Selection.Copy
Sheets("Reslt Record").Select
Sheets("Reslt Record").Range("A5000").End(xlUp).Offset(1).Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Sheets("CuCon Simulator").Select
Application.CutCopyMode = False
Range("Improvement").Select
End Sub
오류는Select method of Range class failed via VBA, Error 1004
아이디어 있어요?
ETA:
그래서 코드를 변경했습니다.
Sheets("BxWsn Simulation").Select
Range("Result").Select
저는 이것이 당신이 그것을 활동적으로 만든다는 것을 의미한다고 믿습니다.
하지만 아직도 내가 받고 있어요Method 'Range' of object '_Worksheet' failed, error 1004
.
저는 당신이 여기서 같은 문제를 겪고 있다고 생각합니다.
시트의 범위를 선택하려면 시트가 활성 상태여야 합니다.
또한 시트 이름 한정자를 생략하지 마십시오.
Sheets("BxWsn Simulation").Select
Sheets("BxWsn Simulation").Range("Result").Select
아니면.
With Sheets("BxWsn Simulation")
.Select
.Range("Result").Select
End WIth
어느 것도 마찬가지입니다.
이 특정 질문에 대한 정답은 "선택하지 않음"입니다.때로는 선택하거나 활성화해야 하지만 99%는 그렇지 않습니다.코드가 다음과 같은 경우
Select something
Do something to the selection
Select something else
Do something to the selection
아마도 재요인화하고 선택하지 않는 것을 고려해야 할 것입니다.
개체 '_워크시트'의 메서드 '범위' 오류가 실패했습니다. 오류 1004는 버튼이 있는 시트에 "결과"라는 범위가 없기 때문입니다.개체를 반환하는 대부분(아마도 모든) 속성에는 기본 상위 개체가 있습니다.이 경우 Range 속성을 사용하여 Range 개체를 반환합니다.사용자가 Range(범위) 속성에 적합하지 않기 때문에 Excel은 기본값을 사용합니다.
기본 상위 개체는 상황에 따라 다를 수 있습니다.코드가 표준 모듈에 있는 경우 ActiveSheet가 기본 부모가 되고 Excel이 ActiveSheet를 해결하려고 합니다.범위("결과").코드는 시트의 클래스 모듈(버튼이 있는 시트)에 있습니다.여기서 정규화되지 않은 참조가 사용되는 경우 기본 부모는 해당 모듈에 부착된 시트입니다.이 경우 버튼을 클릭하려면 시트가 활성화되어 있어야 하므로 동일하지만 항상 그렇지는 않습니다.
Excel이 '_Object'('_Worksheet'이라고 함)와 같은 텍스트를 포함하는 오류를 표시할 때는 항상 기본 부모 개체를 참조합니다. 밑줄이 이를 알려줍니다.일반적으로 이 문제를 해결하는 방법은 상위 항목에 대해 명시적으로 언급함으로써 기준을 충족하는 것입니다.하지만 굳이 그럴 필요가 없을 때 선택하고 활성화하는 경우에는 코드를 리팩터링하는 것이 좋습니다.
다음은 선택하거나 활성화하지 않고 코드를 작성하는 한 가지 방법입니다.
Private Sub cmdRecord_Click()
Dim shSource As Worksheet
Dim shDest As Worksheet
Dim rNext As Range
'Me refers to the sheet whose class module you're in
'Me.Parent refers to the workbook
Set shSource = Me.Parent.Worksheets("BxWsn Simulation")
Set shDest = Me.Parent.Worksheets("Reslt Record")
Set rNext = shDest.Cells(shDest.Rows.Count, 1).End(xlUp).Offset(1, 0)
shSource.Range("Result").Copy
rNext.PasteSpecial xlPasteFormulasAndNumberFormats
Application.CutCopyMode = False
End Sub
제가 수업 모듈에 있을 때, 여러분이 일하고 있는 시트의 수업 모듈처럼, 저는 항상 그 수업의 관점에서 일을 하려고 노력합니다.그래서 저는 Active Workbook 대신 Me.Parent를 사용합니다.이것은 코드를 더 쉽게 이동할 수 있게 하고 상황이 바뀔 때 예상치 못한 문제를 방지합니다.
지금 가지고 있는 코드는 밀리초 단위로 실행되므로 신경 쓰지 않을 수도 있지만 선택하지 않으면 코드 속도가 빨라지고 화면 업데이트를 설정할 필요가 없습니다.코드가 커지거나 다른 상황에서 중요해질 수 있습니다.
이것은 저에게 효과가 있었습니다.
RowCounter = Sheets(3).UsedRange.Rows.Count + 1
Sheets(1).Rows(rowNum).EntireRow.Copy
Sheets(3).Activate
Sheets(3).Cells(RowCounter, 1).Select
Sheets(3).Paste
Sheets(1).Activate
이것이 당신이 그것을 복잡하지 않은 쉬운 방법으로 피하는 방법입니다.
사하는대를 사용하는 에.sheet(x).range
사용하다Activesheet.range("range").select
여기 저를 위한 해결책이 있습니다. 또한 위의 해결책이 모두 옳다는 것을 알았습니다.엑셀 모델이 손상되어 코드(이와 유사)가 작동하지 않게 되었습니다.이게 제게 효과가 있었고 항상 효과가 있었습니다
- 워크북 계산 - 공식 ->지금 계산하기(계산 섹션에서)
- 워크북 저장
- 파일을 닫았다가 다시 엽니다.그것은 고정되었고 매번 작동합니다.
언급URL : https://stackoverflow.com/questions/3902818/select-method-of-range-class-failed-via-vba
'programing' 카테고리의 다른 글
최고의 전투함 AI는 무엇입니까? (0) | 2023.05.26 |
---|---|
이중 따옴표를 기본 따옴표 형식으로 사용하여 파이썬 사전을 만드는 방법은 무엇입니까? (0) | 2023.05.26 |
Node.js의 파일 읽기 (0) | 2023.05.26 |
괄호(원괄호) 사이에 있는 텍스트를 추출하려면 어떻게 해야 합니까? (0) | 2023.05.26 |
장고에서 Json Response의 상태를 변경하는 방법. (0) | 2023.05.26 |