2014-07-09 7 views
0

나는 새로운 VBA 문제에 걸쳐 실행했습니다 : 문제의 시트가 활성화되어 있으면 일부 코드 줄만 실행되고, 그렇지 않으면 오류가 발생합니다 (런타임 오류 '1004': 응용 프로그램 정의 또는 객체 정의 오류 "). 배경에서 실행할 수 있도록 코드가 필요합니다. (VBA에 능숙한) 새로운 눈을 가진 사람이 선에 잘못된 점을 찾을 수 있습니다. (나는 여기에 그들을 함께 게시하지만, 서로 다른 매크로에서 실제로있어)런타임 오류 1004

Dim senaste As Range 
Sheets("PA").Range(Cells(senaste.Row, (senaste.Column - 2)), Cells(senaste.Row, senaste.Column)).Copy 

Worksheets("GL").Range(Cells(3, 1), Cells(Sheets("GL").UsedRange.Rows.Count, Sheets("GL").UsedRange.Columns.Count)).Delete 

편집 :.! 아래 멋진 대답은 다른 라인과 같은나요 및 좌표는 (무슨 일이 있었는지, 미친 갔다 -4 -9 사용? 티 . 당신에게

Dim senaste As Range 
Sheets("PA").Range(Sheets("PA").Cells(senaste.Row, (senaste.Column - 2)), Sheets("PA").Cells(senaste.Row, senaste.Column)).Copy 

Worksheets("GL").Range(Worksheets("GL").Cells(3, 1), Worksheets("GL").Cells(Sheets("GL").UsedRange.Rows.Count, Sheets("GL").UsedRange.Columns.Count)).Delete 

또는 - 오 -1)

Set pt = Worksheets("PA").PivotTables("A") 
pt.DataBodyRange.Range(pt.DataBodyRange.Cells(-4, (pt.DataBodyRange.Cells.Columns.Count - 9)), pt.DataBodyRange.Cells((pt.DataBodyRange.Cells.Rows.Count - 6), (pt.DataBodyRange.Cells.Columns.Count - 7))).Copy 

답변

1

당신은 제대로 모든 범위를 자격을하지 않는 그들은 같은 시트를 지정할 수 있도록 모든 범위 및 세포 통화를 평가해야

Dim senaste As Range 
With Sheets("PA") 
    .Range(.Cells(senaste.Row, (senaste.Column - 2)), .Cells(senaste.Row, senaste.Column)).Copy 
End With 

유사 :

With Worksheets("GL") 
    .Range(.Cells(3, 1), .Cells(.UsedRange.Rows.Count, .UsedRange.Columns.Count)).Delete 
End With 
With 블록을 사용하여 정돈 할 수 있습니다

.Range.Cells 호출 전에 점을주의하십시오. 그렇지 않으면 당신은 당신이 원하는 곳에서 오프셋 범위를 얻을 것이다, 최초의 범위 호출이 워크 시트가 아닌 DataBodyRange으로 규정 될 필요가 있다고

Set pt = Worksheets("PA").PivotTables("A") 
With pt.DataBodyRange 
    pt.Parent.Range(.Cells(1, .Columns.Count - 3), .Cells(.Rows.Count - 1, .Columns.Count - 1)).Select 
End With 

참고 : 업데이트 된 부분에 대한

, 당신이 원하는.

+0

감사합니다. 업데이트 된 질문. – Emmy

+0

@Emmy 그 문제를 해결하기위한 답변도 업데이트했습니다. (약간 다른 상황입니다) – Rory

+0

당신은 최고입니다! 대단히 감사합니다! – Emmy