2017-04-19 1 views
0

VBA를 처음 사용합니다. 다음은 열 B에서 선택된 다른 유효성 검사 목록의 옵션에 따라 유효성 검사 목록을 C 열의 셀에 적용하는 코드입니다. 그것은 clunky하고 천천히. 나는 그것을 작성하는 다른 방법에 대한 몇 가지 아이디어를 기대했다. 다음은 내가 가지고있는 것입니다.Loop without Loop VBA

For k = 36 To 88 

    If Range("B" & k) Is Nothing Then 
    Else 
     CarrierName = Range("B" & k) 
     Range("C" & k).Name = "PlanName" 
     xPlanDropDown = PlanDropDown(CarrierName, PlanName) 
    End If 

    Next k 

End Sub 

Function PlanDropDown(CarrierName, PlanName) 

    Select Case CarrierName 

     Case "Aetna EPO" 
       Range("PlanName").Validation _ 
       .Modify xlValidateList, xlValidAlertStop, Formula1:="=Plans!A2:A101" 
     Case "Aetna HMO" 
       Range("PlanName").Validation _ 
       .Modify xlValidateList, xlValidAlertStop, Formula1:="=Plans!B2:B101" 
     Case "Aetna PPO" 
       Range("PlanName").Validation _ 
       .Modify xlValidateList, xlValidAlertStop, Formula1:="=Plans!C2:C101" ... 

제공 할 수있는 도움을 주셔서 감사합니다! Cheryl

+0

내가 VBA를 빠르게하는 가장 좋은 방법이라고 생각 ...에 VBA를 사용하지 마십시오 :] http://www.contextures.com/xlDataVal02.html – Slai

답변

-1

VBA에 오신 것을 환영합니다!

답변이 많지 않지만 VBA의 속도가 상당히 빨라야합니다. 이 경우 FIRST 서브 루틴으로 이동하여 다른 모든 VBA 루틴을 호출합니다. 예를 들어 귀하가 참조한 FUNCTION에 넣지 마십시오.

Dim PrevCalc As XlCalculation 
With Application 
    PrevCalc = .Calculation 
    .Calculation = xlCalculationManual 
    .Cursor = xlWait 
    .Calculate 
    .EnableEvents = False 
    .DisplayAlerts = False 
    '.ScreenUpdating = False ' Not really needed 
End With 

후 바닥에 이것을 추가 :

당신의 SUB의 상단이 추가

With Application 
    .Cursor = xlDefault 
    .Calculate 
    .Calculation = PrevCalc 
    '.ScreenUpdating = True 'Not really needed 
    .DisplayAlerts = True 
    .EnableEvents = True 
End With