2014-07-20 4 views
0

SHEET1에서 실행해야하는 매크로가 있습니다. 그런 다음 매크로를 실행할 수 있도록 사용자가 클릭 할 수있는 버튼이있는 다른 시트 (SHEET2)가 있습니다. 내 질문은, 내 버튼에 매크로를 할당했지만 아무 일도 일어나지 않는다. 나는이 라인을 Sheet1.Range("A2:A" & lastrow)에 추가하려고 시도했으나 매크로는 멈추고 작업을 완전히 끝낸다. 내 코드에 문제가 있습니까? 도와주세요.다른 워크 시트에서 실행할 Excel 매크로

Sub DC1() 
    Dim lastrow&, rng1 As Range, rng2 As Range 
    lastrow = Cells(Rows.Count, 1).End(xlUp).Row 
    Set rng1 = Range("A2:A" & lastrow).SpecialCells(xlCellTypeConstants) 
    Set rng2 = rng1.Offset(0, 6) 
    rng2.Value = "=AVERAGE(RC[-6]:RC[-2])" 
    Set rng2 = rng1.Offset(0, 7) 
    rng2.Value = "=SUM(RC[-5]:RC[-1])*0.5" 
    Set rng2 = rng1.Offset(0, 9) 
    rng2.Value = "=CONCATENATE(RC[-9],RC[-8],RC[-7],RC[-6],RC[-5],RC[-4])" 
End Sub 
+0

@Nanashi - 이것은 나에게 뭔가를 생각 나게합니다. http://stackoverflow.com/questions/24761536/ – dcromley

답변

2

두 가지 :

  1. 당신의 시트를 자격. 매크로는 Sheet2의 단추에서 호출되기 때문에 범위는 Sheet1 대신 해당 시트에서 인스턴스화됩니다.
  2. R1C1 표기법을 사용하려는 경우 .Value 대신 .FormulaR1C1을 사용하십시오.

다음은 고정 된 버전의 코드입니다.

Sub DC1() 

    Dim WS1 As Worksheet 
    Dim LastRow As Long, Rng1 As Range, Rng2 As Range 

    Set WS1 = ThisWorkbook.Sheets("Sheet1") 

    With WS1 
     LastRow = .Range("A" & .Rows.Count).End(xlUp).Row 
     Set Rng1 = .Range("A2:A" & LastRow).SpecialCells(xlCellTypeConstants) 
     Set Rng2 = Rng1.Offset(0,6) 
     Rng2.FormulaR1C1 = "=AVERAGE(RC[-6]:RC[-2])" 
     ' ... Other code. 
    End With 

End Sub 

이 정보가 도움이되는지 알려주십시오.

+0

나나시 감사합니다! –

관련 문제