source

Excel VBA에서 워크시트 생성 및 이름 지정

nicesource 2023. 5. 29. 11:00
반응형

Excel VBA에서 워크시트 생성 및 이름 지정

현재 워크시트 다음에 새 워크시트를 Excel 문서에 추가한 다음 사용자 양식의 텍스트 상자에 입력된 이름으로 이름을 변경하는 매우 간단한 코드가 있습니다.새 워크북에서는 잘 작동하지만 기존 워크시트가 여러 개 있는 워크북에서는 새 워크시트를 만들지만 이름은 바꾸지 않습니다.

이 문제는 이 코드를 처음 실행할 때만 발생하며 다음 번에는 정상적으로 실행됩니다.더 이상한 것은 VBA 편집기를 열어 디버깅을 시도하면 역시 정상적으로 실행된다는 것입니다.이것은 분명히 오류를 찾는 것을 어렵게 됩니다.

제가 사용하는 코드는 다음과 같습니다.

     Dim WS As Worksheet

     Set WS = Sheets.Add(After:=Sheets(Worksheets.count))
     WS.name = txtSheetName.value

아주 간단합니다.시트가 제대로 생성되기 전에 이름을 바꾸려고 하는 것이 문제인지 궁금합니다.이 코드를 쓰는 더 좋은 방법이 있습니까?

업데이트: 디버거를 열면 문제가 중지되고 코드 처리가 중간에 중단되기 때문에 메시지 상자를 사용하여 디버깅을 시작했습니다.

  Dim WS As Worksheet
  MsgBox (WS Is Nothing)

    Set WS = Sheets.Add(After:=Sheets(Worksheets.count))
    '***** Nothing after this point gets processed *******
    MsgBox (WS Is Nothing)
    MsgBox WS.name

    WS.name = txtSheetName.value
    MsgBox WS.name

http://www.mrexcel.com/td0097.html

Dim WS as Worksheet
Set WS = Sheets.Add

위치를 알 필요도 없고, 이름이 무엇인지 알 필요도 없고, WS라고만 하면 됩니다.
여전히 "구식" 방식으로 이 작업을 수행하고 싶다면 다음을 시도해 보십시오.

Sheets.Add.Name = "Test"

오류 처리기를 사용하고 있습니까?오류를 무시하고 시트의 이름을 기존 시트와 동일하게 지정하거나 잘못된 문자가 있는 이름으로 지정하려고 하면 해당 줄을 건너뛰는 것일 수 있습니다.여기에서 CleanSheetName 기능을 참조하십시오.

http://www.dailydoseofexcel.com/archives/2005/01/04/naming-a-sheet-based-on-a-cell/

확인할 수 있는 잘못된 문자 목록입니다.

갱신하다

다른 시도 사항: 완전한 참조, 실행 이벤트 제출, 코드 클리닝.이 코드는 이 워크북에 대한 시트 참조 자격을 부여합니다(적절한 경우 활성 워크북으로 변경할 수 있음).또한 1,000개의 DoEvents(멍청한 오버킬이지만 완료하는 데 시간이 오래 걸리는 경우 이를 통해 할 수 있습니다. 실제로 해결할 수 있는 것이 있다면 DoEvents가 하나만 필요할 수도 있습니다.)를 추가합니다.

Dim WS As Worksheet
Dim i As Long

With ThisWorkbook
    Set WS = .Worksheets.Add(After:=.Sheets(.Sheets.Count))
End With

For i = 1 To 1000
    DoEvents
Next i

WS.Name = txtSheetName.Value

마지막으로, 저는 말도 안 되는 멍청한 VBA 문제가 있을 때마다 롭 보비의 코드 클리너를 사용합니다.모든 모듈을 텍스트 파일로 내보낸 다음 다시 가져오는 추가 기능입니다.수동으로도 할 수 있습니다.이 프로세스는 주변에 있는 모든 손상된 p-code를 제거합니다.

버튼을 누르기 전에(Enter를 누름) 셀을 커밋하시겠습니까?시트의 이름을 지정하는 데 사용하려면 먼저 셀의 내용을 저장해야 합니다.

더 나은 방법은 대화 상자를 팝업하고 사용할 이름을 가져오는 것입니다.

언급URL : https://stackoverflow.com/questions/3840628/creating-and-naming-worksheet-in-excel-vba

반응형