Excel VBA:将公式复制到任何活动单元格

时间:2017-11-29 00:18:33

标签: excel vba excel-vba

我是VBA编码新手,希望我能在这里得到一些帮助。我正在尝试创建代码,为任何单元格执行以下操作(不指定硬编码单元格区域或引用):

  • 在活动单元格中输入公式
  • 将其(填写)复制10行

尝试将公式插入 ActiveCell 我尝试过:

Sub Test()
ActiveCell.formula = "=IF(ISBLANK(C5)*ISBLANK(D5),"",IF(ISBLANK(D5),(C5),CONCATENATE(C5,"" ["", D5, ""]"")))"
End Sub

然而,这产生了 1004:应用程序定义或对象定义的错误

我已尝试为 ActiveCell 声明范围对象但仍会遇到错误。

对此的任何帮助都将受到高度赞赏。

2 个答案:

答案 0 :(得分:1)

ActiveCell.formula = "=IF(ISBLANK(C5)*ISBLANK(D5),"""",IF(ISBLANK(D5),(C5),CONCATENATE(C5,"" ["", D5, ""]"")))" 

你错过了第一套嵌入式报价的加倍。

答案 1 :(得分:0)

您可以使用以下例程将公式从单元格复制到VBE兼容格式。看看它是否对您有所帮助:

 Public Sub CopyExcelFormulaInVBAFormat()
 Dim strFormula As String
 Dim objDataObj As Object

 '\Check that single cell is selected!
 If Selection.Cells.Count > 1 Then
     MsgBox "Select single cell only!", vbCritical
     Exit Sub
 End If

 'Check if we are not on a blank cell!
 If Len(ActiveCell.Formula) = 0 Then
     MsgBox "No Formula To Copy!", vbCritical
     Exit Sub
 End If

 'Add quotes as required in VBE
 strFormula = Chr(34) & Replace(ActiveCell.Formula, Chr(34), Chr(34) & Chr(34)) & Chr(34)

 'This is ClsID of MSFORMS Data Object
 Set objDataObj = CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
 objDataObj.SetText strFormula, 1
 objDataObj.PutInClipboard
 MsgBox "VBA Format formula copied to Clipboard!", vbInformation

 Set objDataObj = Nothing

 End Sub

插入此例程后。您只需在单元格中正常输入公式即可。然后留在单元格上运行此代码,它将复制到剪贴板。转到VBE并按CTRL + V将代码粘贴到所需的位置。

最初发布于:

https://chandoo.org/forum/threads/copy-formula-from-excel-to-clipboard-in-vba-compatible-format.35997/