2016-11-16 146 views
0

我在Excel中添加了一個簡單的宏,但它似乎使我的Excel崩潰了很多。有誰知道爲什麼?添加宏後Excel崩潰

這裏的宏:

Sub PlanRelativityTesting() 
With Sheets("Sheet1") 
For i = 8 To 9 
.Range("D11").value = .Range("G" & i).value   
Call AnotherMacro 
Sheets("Sheet2").Select  
     .Range("H" & i).value = Sheets("Sheet2").Range("AE20").value 
     .Range("I" & i).value = Sheets("Sheet2").Range("AE21").value 
     .Range("J" & i).value = Sheets("Sheet2").Range("AE22").value 
     .Range("K" & i).value = Sheets("Sheet2").Range("AE23").value 
     .Range("L" & i).value = Sheets("Sheet2").Range("AE24").value 
     .Range("M" & i).value = Sheets("Sheet2").Range("AE25").value 
     .Range("N" & i).value = Sheets("Sheet2").Range("AE26").value 
     .Range("O" & i).value = Sheets("Sheet2").Range("AE27").value 
     .Range("P" & i).value = Sheets("Sheet2").Range("AE28").value 
     .Range("Q" & i).value = Sheets("Sheet2").Range("AE29").value 
     .Range("R" & i).value = Sheets("Sheet2").Range("AE30").value 
     .Range("S" & i).value = Sheets("Sheet2").Range("AE31").value 
Next i  
.Select 
End With 
End Sub 
+2

爲什麼不你只需將一個範圍的轉置分配給另一個範圍?另外,由於你的代碼引用了一些神祕的AnotherMacro,所以誰能說出問題所在?你顯示的代碼是沒有問題的(雖然不必要的冗長)。 –

+0

你是否也檢查過被調用函數?根據您的工作表的大小和excel的版本(x64或x86),您可能會針對2 GB RAM限制運行。你也可以考慮爲單元使用一個相對地址,所以你不必輸入太多的代碼,即範圍(單元格(1,1),單元格(5,3))是A1:C5,並允許循環遍歷行和列。如果這是你正在嘗試做的事,轉置是一個更簡單的解決方案。 – Zediiiii

+0

嗨Zediiiii,謝謝你的評論!它運行在32位Excel上,它是39 KB。所以尺寸可能不是問題?你能想到另一個原因嗎? – JBB

回答

1

正如約翰指出你的代碼可以更簡潔:

Sub PlanRelativityTesting() 
    With Sheets("Sheet1") 
     For i = 8 To 9 
      .Range("D11").Value = .Range("G" & i).Value 
      AnotherMacro 
      .Range("H" & i).Resize(1, 12).Value = _ 
      Application.Transpose(Sheets("Sheet2").Range("AE20").Resize(12, 1).Value) 
     Next i 
     .Select 
    End With 
End Sub 

的實際問題,但更可能是在AnotherMacro

+0

謝謝你的幫助! AnotherMacro應該沒問題;它現在已經在Excel模型中很長一段時間了。當我在原始模型中運行宏時,它似乎工作得更好。但是,一旦我用宏保存了另一個模型副本,它很容易崩潰。該文件是39,000 KB,也許這是爲什麼? – JBB

+0

不可能說這是否是原因,但是39MB非常大。 –