2014-04-09 4 views
7

VBA를 사용하는 셀 (변수)에 "데이터 유효성 검사"를 추가하고 데이터 유효성 검사 목록에 올 범위도 가변적입니다. 지금까지 나는 데이터 유효성 검사에게 내가 무엇입니까VBA를 사용하여 셀에 데이터 유효성 검사를 추가하는 방법

Dim range1, rng As range 
Set range1 = range("a1:a5") 
Set rng = range("b1") 
With rng 
With .Validation 
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ 
    xlBetween, Formula1:="range1" 
End With 
End With 

을 원하는 셀을 "RNG를"데이터 유효성 검사 목록에 와서하는 범위를이 여기

"범위 1을"입니다 사용하고있다 "응용 프로그램 정의 개체 정의 오류"또한

사람이

With .Validation 
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ 
    xlBetween, Formula1:="range1" 

답변

16

사용에 나에게이 일을 다른 인수의 의미를 설명 할 수

01 당신이 Dim range1, rng As range를 사용하는 경우에만 rng Range의 유형을 가지고 있지만, range1Variant 것을 23,516,는
Dim ws As Worksheet 
Dim range1 As Range, rng As Range 
'change Sheet1 to suit 
Set ws = ThisWorkbook.Worksheets("Sheet1") 

Set range1 = ws.Range("A1:A5") 
Set rng = ws.Range("B1") 

With rng.Validation 
    .Delete 'delete previous validation 
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _ 
     Formula1:="='" & ws.Name & "'!" & range1.Address 
End With 

참고. 그래서 Dim range1 As Range, rng As Range을 사용하고 있습니다. 당신이 읽을 수있는 매개 변수의 의미에 대해
MSDN이지만, 짧은 :

  • Type:=xlValidateList는이 경우에 당신이
  • AlertStyle:=xlValidAlertStop 검증 중에 표시되는 메시지 상자에 사용되는 아이콘을 지정 목록에서 값을 선택해야합니다, 검증 유형을 의미 . 사용자가 목록에서 값을 입력하면 오류 메시지가 나타납니다.
  • 원래 코드로는 Operator:= xlBetween이 이상합니다. 유효성 확인을 위해 두 개의 수식이 제공된 경우에만 사용할 수 있습니다. 목록 데이터 유효성 검사에 대한
  • Formula1:="='" & ws.Name & "'!" & range1.Address가 (형식 =Sheet!A1:A5에서) 값
+0

이봐, 내가 한 변경하고 그냥 잘 작동 이봐, 당신이
을 설명해주십시오 수
도움을 주셔서 감사합니다 '와 목록의 주소를 제공 '
다시 약간 자세하게, 나는 단지 "=" "및"=! "인 것을 설명하지 않습니다. , 나는 VBA를 처음 사용합니다. 제발 신경 쓰지 마십시오. 또는 제가 공부할 수있는 링크가 있다면 자세히 알려주세요. – Gajju

+3

@Gajju, 걱정하지 않아도됩니다. :) 시작하자! 원하는 결과는 다음과 같습니다 :'Formula1 : = "= 'Sheet1'! A1 : A5"'- excel의 모든 공식은 등호 :'='에서 시작합니다. 다음으로, ''Sheet1 '!'은 'A1 : A5'의 범위가 시트 'Sheet1'에 속함을 의미합니다 (시트 이름에 공백이 포함되어 있으면 다음과 같이 한숨을 쉬울 수 있습니다 : Formula1 : = "= Sheet1! A1 : A5 "하지만이 공식을 하드 코드하고 싶지 않으므로 'Formula1 : ="=' "& ws.Name &" '! & range1.Address' 여기서'ws.Name'는 시트를 반환합니다 이름 (예 : "Sheet1")과'range1.Address'는'A1 : A5'를 반환합니다. –

+0

이해하기 쉽습니다. 감사합니다. – Gajju

관련 문제