Excel VBA

这是我的代码行:

ActiveCell.FormulaR1C1 = "='Main'!R[9]C[0]&LEFT("" "",5-LEN('Main'!R[9]C[1])) &'Main'!R[9]C[1]&"" ""&DAY('Main'!R[4]C[8]) & ""-"" & UPPER(TEXT('Main'!R[4]C[8],""mmm"")) & ""-"" &YEAR('Main'R[4]C[8])&"" "" & 'Main'!R[9]C[3] & "" "" & 'Main'!R[9]C[4] & "" "" & LEFT('Main'!R[9]C[5],35)& LEFT("" "",35-LEN(LEFT('Main'!R[9]C[5],35))) & "" "" & LEFT("" "", 12-LEN('Main'!R[9]C[6]))& 'Main'!R[9]C[6] & "" "" & 'Main'!R[9]C[7] & "" "" & LEFT('Main'!R[4]C[9],9) & LEFT("" "",9-LEN(LEFT('Main'!R[4]C[9],9))) & "" "" & 'Main'!R[9]C[2] & LEFT("" "",4-LEN('Main'!R[9]C[2])) & "" DATALOAD"""

我得到一个run-time error 1004说它是一个application-defined or object-defined error 。 问题是我对VBA不是很熟悉。 这个公式中有相当多的东西在发生。 基本上我需要的是将数据粘贴到新的表格上。 这就是为什么有一堆空间等等。 我使用R1C1因为每一行在表单1上有不同的数据,因此需要粘贴到表单2中。

任何想法为什么这个代码运行到一个错误? 任何帮助将不胜感激。

澄清:我的整个macros如下…

 Dim row As Integer Dim col As String col = "A" row = 1 Do Until IsEmpty(ActiveCell) Sheets("Protected").Select Range(col & row).Select ActiveCell.FormulaR1C1 = "big long code as mentioned above goes here" Sheets("Main").Select ActiveCell.Offset(1, 0).Select row = row + 1 

从评论复制

实际的工作公式是

=Main!A11&LEFT(" ",5-LEN(Main!B11)) &Main!B11&" "&DAY(Main!$D$6) & "-" & UPPER(TEXT(Main!$D$6,"mmm")) & "-" &YEAR(Main!$D$6)&" " & Main!D11 & " " & Main!E11 & " " & LEFT(Main!F11,35)& LEFT(" ",35-LEN(LEFT(Main!F11,35))) & " " & LEFT(" ", 12-LEN(Main!G11))& Main!G11 & " " & Main!H11 & " " & LEFT(Main!$E$6,9) & LEFT(" ",9-LEN(LEFT(Main!$E$6,9))) & " " & Main!C11 & LEFT(" ",4-LEN(Main!C11)) & " DATALOAD"

当你有一个工作公式,那么最好的办法是logging一个macros,看看Excel如何将公式存储在单元格中。

这是我从macros观中得到的

ActiveCell.FormulaR1C1 = "=Main!R[10]C[-3]&LEFT("" "",5-LEN(Main!R[10]C[-2])) &Main!R[10]C[-2]&"" ""&DAY(Main!R6C4) & ""-"" & UPPER(TEXT(Main!R6C4,""mmm"")) & ""-"" &YEAR(Main!R6C4)&"" "" & Main!R[10]C & "" "" & Main!R[10]C[1] & "" "" & LEFT(Main!R[10]C[2],35)& LEFT("" "",35-LEN(LEFT(Main!R[10]C[2],35))) & "" "" & LEFT("" "", 12-LEN(Main!R[10]C[3]))& Main!R[10]C[3] & "" "" & Main!R[10]C[4] &" & " LEFT(Main!R6C5,9) & LEFT("" "",9-LEN(LEFT(Main!R6C5,9))) & "" "" & Main!R[10]C[-1] & LEFT("" "",4-LEN(Main!R[10]C[-1])) & "" DATALOAD"""

你可以比较这个公式与你的公式,看看哪里是什么失踪:)