G'Day,Excel VBA - const 문자열 범위 사이의 성능 이점 또는 범위 이름 정의?
나는 더 나 엑셀 VBA 효과적으로 아니라 데이터를 실행하기 위해 한 곳에서 선언 된 정의 범위를 관리 할 수있는 방법에 대한 자세한에 이해할 수 있도록 대한 질문이 있습니다. 이 프로젝트에서 더 많은 작업을하기 전에 두 가지 옵션 (지금까지 알고있는) 중 어느 것이 더 좋은지 또는 그렇지 않은지를 결정하는 것이 좋습니다.
는내가 해결하고있어 문제는 따라서 테이블 (죄송는 원시 형태)
다음과 같습니다 허구 공급 업체의 집합에 걸쳐 실패의 숫자를 포함하는 작은 테이블을 만드는 것입니다 "회사 명", "실패"
"의 번호는 차가운 기계 수 '7
"냉각수 쿼터스 "5
"작은 물 냉매 3
"항공 운송 시스템"7
다음"제너럴 냉각수"5
"감탄 냉매"4
내 첫 번째 옵션 (헌장 문자열)이 모듈/공식이다.
Option Explicit
Public Const CountofFailures As String = "J7:J12"
Sub btnRandom()
' Declaration of variables
Dim c As Range
' Provide a random number for failures across Suppliers
For Each c In ActiveSheet.Range(CountofFailures)
c.Value = Random1to10
Next c
End Sub
Function Random1to10() As Integer
'Ensure we have a different value each time we run this macro
Randomize
' Provide a random number from 1 to 10 (Maximum number of Failures)
Random1to10 = Int(Rnd() * 10 + 1)
End Function
두 번째 옵션 (정의 된 이름)은 다음과 같은 모듈/공식입니다.
Option Explicit
Sub btnRandom()
' Declaration of variables
Dim c As Range
Dim iLoop As Long
' Provide a random number for Suppliers with Defined Range
For Each c In ActiveWorkbook.Names("CountofFailures").RefersToRange
c.Value = Random1to10
Next c
End Sub
Function Random1to10() As Integer
'Ensure we have a different value each time we run this macro
Randomize
' Provide a random number from 1 to 10 (Maximum number of Failures)
Random1to10 = Int(Rnd() * 10 + 1)
End Function
어떤 제안 -이 도움이된다면 나중에 매크로 타이머 테스트를 할 것인가?
셀에 나열된 범위를 값으로 가져 오는 경우 세 번째 옵션이 있습니까? 실제로이 작업을 수행하는 코드를 보지 못했습니까?
브렛, 나는 마지막으로 .value = .value 라인이 복사와 동일하고 특별한 값을 붙여 넣는다고 말하고 싶습니까? –
예 - 수식을 – brettdj
값으로 변환합니다. Brett의 조언에 감사드립니다. 나는이 일반적인 패턴을 따르도록 서브 루틴을 조정할 것이다. –