Excel에서 셀에 문자열 쓰기
"A1" 셀에 값을 쓰려고 하는데 다음 오류가 발생합니다.
애플리케이션 정의 또는 개체 정의 오류 '1004'
저는 인터넷에서 많은 해결책을 시도해 보았지만, 아무 것도 작동하지 않습니다.저는 엑셀 2007을 사용하고 있으며 파일 확장자는 .xlsm입니다.
내 코드는 다음과 같습니다.
Sub varchanger()
On Error GoTo Whoa
Dim TxtRng As Range
Worksheets("Game").Activate
ActiveSheet.Unprotect
Set TxtRng = ActiveWorkbook.Sheets("Game").Cells(1, 1)
TxtRng.Value = "SubTotal"
'Worksheets("Game").Range("A1") = "Asdf"
LetsContinue:
Exit Sub
Whoa:
MsgBox Err.number
Resume LetsContinue
End Sub
편집: 주의 아이콘을 클릭하고 계산 단계 표시를 선택하면 오류가 발생한 후 올바르게 작동합니다.
시트 보호대에 걸려 넘어진 것 같습니다.코드를 조금 간소화했으며 워크북 및 워크시트 개체에 대한 참조를 명시적으로 설정하고 있습니다.예제에서는 TxtRng 개체를 설정할 때 워크북과 시트를 명시적으로 참조하지만 시트 보호를 해제할 때는 참조하지 않습니다.
사용해 보십시오.
Sub varchanger()
Dim wb As Workbook
Dim ws As Worksheet
Dim TxtRng As Range
Set wb = ActiveWorkbook
Set ws = wb.Sheets("Sheet1")
'or ws.Unprotect Password:="yourpass"
ws.Unprotect
Set TxtRng = ws.Range("A1")
TxtRng.Value = "SubTotal"
'http://stackoverflow.com/questions/8253776/worksheet-protection-set-using-ws-protect-but-doesnt-unprotect-using-the-menu
' or ws.Protect Password:="yourpass"
ws.Protect
End Sub
만약 내가 서브를 실행한다면,ws.Unprotect
코멘트 아웃, 런타임 오류 1004가 발생합니다. (시트를 보호하고 범위를 잠갔다고 가정합니다.)줄의 주석을 제거하면 코드가 정상적으로 실행됩니다.
주의:
- 범위에 글을 쓴 후 시트 보호를 다시 설정하고 있습니다.애초에 시트를 보호했다면 이렇게 하고 싶으실 거예요.추가 처리 후 나중에 보호를 다시 설정하는 경우 해당 줄을 제거해야 합니다.
- 오류 처리기를 제거했습니다.Excel 오류 메시지는 Err.number보다 훨씬 더 자세한 내용을 제공합니다.코드가 작동하고 원하는 것을 표시하면 다시 넣을 수 있습니다.분명히 당신은 Err을 사용할 수 있습니다.설명도.
- 그
Cells(1, 1)
표기법은 엄청난 양의 슬픔을 유발할 수 있습니다.조심해서 사용하세요.Range("A1")
인간이 훨씬 쉽게 해석할 수 있고 이마를 찢는 실수를 방지하는 경향이 있습니다.
오늘 밤 크랜베리 보드카를 좀 마셔서 뭔가 빠진 것 같아요범위를 설정해야 합니까?사용하지 않는 이유:
Activeworkbook.Sheets("Game").Range("A1").value = "Subtotal"
이것도 실패하나요?
비슷한 것을 시도한 것 같습니다.
'Worksheets("Game").Range("A1") = "Asdf"
그러나 워크시트는 모음이므로 "게임"을 참조할 수 없습니다.대신 Sheets 객체를 사용해야 할 것 같습니다.
범위("A1") = "Asdf"를 범위("A1")로 바꿉니다. 값 = "Asdf"
대신 이것을 사용해 보세요.
Set TxtRng = ActiveWorkbook.Sheets("Game").Range("A1")
추가
파일이 손상되었을 수도 있습니다. 이전에도 여러 번 발생한 적이 있습니다. 유일한 해결책은 모든 파일을 새 파일로 복사하는 것입니다.
다음을 시도해 보십시오.
- 새 xlsm 파일을 저장하고 "MyFullyQualified.xlsm"이라고 합니다.
- 보호 기능이 없는 시트를 추가하고 "내 시트"라고 부릅니다.
- 워크북에 모듈을 추가하고 다음 절차를 추가합니다.
이것이 작동합니까?
Sub varchanger()
With Excel.Application
.ScreenUpdating = True
.Calculation = Excel.xlCalculationAutomatic
.EnableEvents = True
End With
On Error GoTo Whoa:
Dim myBook As Excel.Workbook
Dim mySheet As Excel.Worksheet
Dim Rng As Excel.Range
Set myBook = Excel.Workbooks("MyFullyQualified.xlsm")
Set mySheet = myBook.Worksheets("mySheet")
Set Rng = mySheet.Range("A1")
'ActiveSheet.Unprotect
Rng.Value = "SubTotal"
Excel.Workbooks("MyFullyQualified.xlsm").Worksheets("mySheet").Range("A1").Value = "Asdf"
LetsContinue:
Exit Sub
Whoa:
MsgBox Err.Number
GoTo LetsContinue
End Sub
언급URL : https://stackoverflow.com/questions/11568321/writing-a-string-to-a-cell-in-excel
'programing' 카테고리의 다른 글
Maria DB 10.3의 MSSQL에서 MSSQL 식별자 괄호 무시/사용 (0) | 2023.08.08 |
---|---|
파워셸 - 가장 가까운 정수로 반올림 (0) | 2023.08.08 |
부트스트랩 모달: 전환 시 배경이 맨 위로 이동합니다. (0) | 2023.08.08 |
DOM 요소를 일시적으로 제거했다가 나중에 다시 삽입하시겠습니까? (0) | 2023.08.08 |
MariaDB 연결 문제(Digital Ocean) (0) | 2023.08.08 |