원하는 VBA 모듈을 작성하는 방법에 대한 피드백을 받고 싶습니다. 내 파일에는 외부 데이터 (Bloomberg)에서 새 데이터를 수집 할 때 값이 변경되는 여러 열이 있습니다. 다음으로,이 범위 내의 값 중 하나가 항상 같은 ($ A $ 1 및 $ A $ 2) 두 셀의 곱보다 큰 경우 메시지를 보내려고합니다. 또한 여러 시트가 있으므로 모듈이 모든 시트에 적용되는지 확인하고 싶습니다.VBA 모듈 : 배수 범위에 대해 "교차"함수 사용
이가 첫 번째 대안 : 내가 비슷한 질문을 볼 수있는 인터넷을 탐험
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
With Sh
Set r1 = Sh.Range("N1:N50")
Set r2 = Sh.Range("AA1:AA50")
Set r3 = Sh.Range("AN1:AN50")
Set r4 = Sh.Range("BA1:BA50")
Set r5 = Sh.Range("BN1:BN50")
Set r6 = Sh.Range("CA1:CA50")
Set myMultipleRange = Union(r1, r2, r3, r4, r5, r6)
Dim myMultipleRange as Range
Dim Cell as Range
For Each Cell in myMultipleRange.Cells
With Cell
If .Value2 > 0.1 * $A$1 * $A$2 Then
MsgBox ("Ticker: " & Sh.Name & ", Today's volume in the " & Cells(row,column -1) " & " serie is " & Cells" & " contracts")
그러나, 대답은 "교차을 포함
인터넷과 유래를 검색 한 후 나는 두 가지 대안이 함께했다 "-기능. Intersect는 두 개 또는 그 이상의 범위의 교차를 나타내는 Range Object를 반환한다는 것을 이해합니다. 그러나 모듈과 정확히 다른 점은 무엇입니까? 그리고 어떤 방법이 더 빠릅니까? 내 파일이 거대하기 때문에 가장 빠른 모듈을 원한다!
나는 당신이 선호하고 개선의 여지를 참조해야합니까 업을 설정 교차 기능Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
With Sh
Dim r1, r2, r3, r4, r5, r6, my MultipleRange as Range
Set r1 = Sh.Range("N1:N50")
Set r2 = Sh.Range("AA1:AA50")
Set r3 = Sh.Range("AN1:AN50")
Set r4 = Sh.Range("BA1:BA50")
Set r5 = Sh.Range("BN1:BN50")
Set r6 = Sh.Range("CA1:CA50")
Set myMultipleRange = Union(r1, r2, r3, r4, r5, r6)
If Target.Value > (0.1 * sh.Range("A1").Value * sh.Range("A2").Value
If Not Intersect(Target, myMultipleRange) Is Nothing Then
MsgBox ("Ticker: " & Sh.Name & ", Today's volume in the " & Cells(row,column -1) " & " serie is " & Cells" & " contracts
으로 두 번째 모듈을 작성하려고?
도움을 주시면 대단히 감사하겠습니다!
첫 번째 방법 만 작동합니다 (모든 오류가 제거되면). 그러나 이것이 가장 빠른 접근법은 아닙니다. 가장 빠른 접근법은 배열입니다. 이후에 가능한 모든 "일치"에 대해 배열을 검색해야하며 메시지 상자에 표시해야합니다 (여러 번 나타나는 경우 한 번에 모두 표시). 개선 작업을 위해 작업 하위를 작성한 다음 [Code Review] (http://codereview.stackexchange.com/)에 게시하는 것이 좋습니다. – Ralph
답장을 보내 주셔서 감사합니다. 오류가있는 방향으로 나를 밀어 넣을 수 있습니까? 그리고 이상적으로는 각 발생에 대한 메시지 상자 알림을 원합니다. 이 경우에도 귀하의 조언을 따라야합니까? 친절합니다. – HJA24