@Jeeped가 언급 했으므로 Select
및 Activate
을 사용하지 말고 참조를 한정하는 것이 안전합니다.
예를 들어 Range("A1").Value
을 사용하면 현재 활성 워크 시트의 A1 셀 값을 가져올 수 있지만 사용자가 해당 시트를 활성화하지 않았거나 다른 proc이 뷰를 이동 한 경우 어떻게됩니까? 잠재적으로 워크 시트에서 셀 A1의 값을 얻을 수 있습니다.
워크 시트에 대한 참조를 만든 다음 활성 워크 시트를 변경할 필요가없고 범위 값의 출처에 대한 모호성이없는 방식으로 모든 워크 시트를 보내는 것이 가장 좋습니다. 예를 들어
: -
Option Explicit
Dim WkSht_I As Worksheet 'Input
Dim WkSht_P As Worksheet 'Process
Dim WkSht_O As Worksheet 'Output
Public Sub Sample()
Set WkSht_I = ThisWorkbook.Worksheets("Input")
Set WkSht_P = ThisWorkbook.Worksheets("Process")
Set WkSht_O = ThisWorkbook.Worksheets("Output")
MsgBox "Input A1 = " & WkSht_I.Range("A1").Value
MsgBox "Process A1 = " & WkSht_P.Range("A1").Value
MsgBox "Output A1 = " & WkSht_O.Range("A1").Value
Set WkSht_O = Nothing
Set WkSht_P = Nothing
Set WkSht_I = Nothing
End Sub
은 안전하고 명확해야한다이 방법으로 절차를 변환하고, 다른 사람 또는 작업중인하면서 콘텐츠를 표시하는 당신은 단 한 번 활성 시트를 설정할 수 있습니다.
참조 (http://stackoverflow.com/questions/10714251/how-to-avoid-using을 변경 선택를 사용 avoide합니다 -select-in-excel-vba-macros)를 사용하여 목표를 달성하기위한 select 및 activate에 의존하는 방법을 배웁니다. – Jeeped