2009-09-08 5 views
3

mine의 한 친구는 보험 회사의 분석가로 일하며 VBA (Visual Basic for Applications)를 사용하여 스크립트를 작성합니다."시트"를 참조하는 언어 독립적 인 방법은 무엇입니까?

그녀의 회사는 다른 유럽 국가에 지사가 있기 때문에 가능한 한 언어 독립적 인 스크립트를 작성해야합니다.

최근에 나온 한 가지 문제점은 주요 유럽 언어에서이 용어를 번역 할 필요없이 Excel 문서를 처리하고 시트 (예 : Sheet1, Sheet2)를 참조하는 방법입니다.

Excel에서 지역화 된 버전의 Windows/Excel에 관계없이 다른 정보에 액세스하는 데 사용할 수있는 상수 목록을 제공하는지 알고 있습니까?

감사합니다.

+0

난 당신이 인덱스 대신의 이름으로 시트를 참조 할 수 있습니다 생각합니다. –

+0

@Cory - 내가 틀렸다고 정정하되 표시 순서에 따라 시트의 색인이 변경되지 않습니까? – warren

+0

예, 그렇기 때문에 가능한 해결책은 아니지만 최소한 언어에 대해 걱정할 필요는 없습니다. –

답변

4

VBA에서 워크 시트의 하드 코드 된 이름을 사용해서는 안됩니다. 셀 문헌에

Dim s As Worksheet 

For Each s In ActiveWorkbook.Sheets 
    DoSomethingWith s 
Next s 

또는

Set s = ActiveSheet 
DoSomethingWith s 

또는
Set s = ActiveWorkbook.Sheets.Add() 
DoSomethingWith s 

또는

Dim i As Long 

With ActiveWorkbook.Sheets 
    For i = 1 To .Count 
    DoSomethingWith .Item(i) 
    Next i 
End With 

하지만, 실제의 시트 이름을 사용하는 것은 불가피하다. 이러한 참조는 VBA의 요청에 따라 작성 될 수 있습니다. 기존 참조 (셀 함수에서)는 Excel에 자동으로 최신 상태로 유지됩니다.

+0

감사합니다. – Gulbahar

+0

특정 시트에 대한 참조를 가져올 필요가있는 경우를 제외하고, 맞습니까? 서수를 사용하면 이름만큼 휘발성이 맞습니까? 나는 과거에 꽤 많은 VBA를 해왔지만, 꽤 오래되었습니다. 지금은 산발적 인 일을하고 있습니다. 이에 대한 "우수 사례"가 수락되어 있습니까? –

+0

언젠가 컨벤션이 필요하다고 생각합니다. 코드에서 특정 시트를 참조하려면 변경 사항에 대해 통합 문서를 잠궈 코드를 강력하게 만들어야합니다. – Tomalak

0

VBA 편집기에서 워크 시트 개체의 이름을 바꿀 수 있습니다. 이것은 화면 하단의 탭에 표시된 워크 시트 이름과 완전히 구분됩니다.

나는 보통 그들에게 wksData 및 wksSummary 같은 이름을 변경하고, 그들이 원하는대로 워크 시트의 이름을 바꿀 수 있습니다

wksSummary.Range("A1").Value = "abc" 

사용자 같은 코드를 사용하지만 VBA 참조는 동일하게 유지됩니다.

하면 워크 시트의 이름은 아래의 예에서와 같이 검색 할 수 있습니다 :

MsgBox wksSummary.Name 
관련 문제