VBScript를 사용하여 VBA 대신 EXCEL을 처리하고 싶습니다. 하지만 Range.Find 메서드를 호출 할 때 코드 오류가 발생했습니다. 아래 참조
Function find_range(wb, domain, var)
Dim sheet
Dim rg1, rg2, rg3
Set sheet = wb.Sheets(domain)
Set rg1 = sheet.Range("D:D").Find(var, , xlValues, xlWhole )
If Not rg1 is Nothing Then
'msgbox rg1.Cells(1,1).row
Set rg2 = sheet.Cells(rg1.Cells(1,1).row, 19)
msgbox(rg2.value)
End if
End Function
find_range 함수를 실행하면
변수가 정의되지 않았습니다. "xlValues" "xlWhole"
오류.
그래서 나는 VBScript에서 이런 식으로 Excel 내장 상수를 사용할 수 없다고 생각합니다.
그렇다면 올바른 방법은 무엇입니까?
불행히도 이러한 명명 된 상수는 VBScript가 참조 할 방법이없는 Excel 개체 라이브러리의 일부이므로 가장 좋은 방법은 Excel VBA 내부의 개체 브라우저 또는 다양한 참조를 통해 온라인에서 명명 된 상수를 조회 한 다음 고유 한 명명 된 상수를 생성하고이를 사용하는 것입니다. 암호.
이 예에서는 Range.Find()
메서드 를 검색하여 식별 할 수있는 두 개의 열거를 사용하고 있습니다 .
xlValues
xlFindLookIn
열거 형 의 명명 된 상수이며 값을가집니다 -4163
.xlWhole
xlLookAt
열거 형 의 명명 된 상수이며 값은 1
.따라서 값을 알고 나면 값을 정의 할 수 있으며 더 이상 변경하지 않아도 코드가 작동합니다.
Const xlValues = -4163
Const xlWhole = 1
이상적으로 이러한 값은 모든 함수 또는 프로 시저에 액세스 할 수 있도록 스크립트의 전역 범위에서 선언되어야합니다.
숫자 값을 지정하지 않는 이유는 무엇입니까? 여러 위치에서 값을 사용하는 경우 이것이 실제로 유효한 접근 방식 이지만 값이 변경되면 여러 위치에서 해당 값을 수정해야합니다 (이 시나리오에서는 거의 발생하지 않음) . 명명 된 상수를 사용하면 한 번만 변경하면 코드에서 해당 값이 참조되는 곳도 변경됩니다.
VBScript는 숫자 값에만 관심이 있으므로 기술적으로 상수 이름을 원하는대로 지정할 수 있다는 점도 주목할 가치가 있습니다. 그러나 특히 Excel VBA에서 함수 코드를 다시 사용한 경우에는 명명 규칙을 따르는 것이 좋습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다