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

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

  • 在活动单元格中input一个公式
  • 复制它(填充)下来10行

在尝试将公式插入到ActiveCell中,我尝试过:

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

但是,这会产生1004:应用程序定义或对象定义的错误

我试过声明ActiveCell的 Range对象,但仍然遇到错误。

任何帮助,将不胜感激。

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

你错过了第一套embedded式报价的翻倍。

您可以使用以下例程将公式从单元格复制到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 

插入这个例程之后。 您只需要在单元格中正常input公式。 然后停留在单元格上并运行此代码,它将复制到剪贴板。 去VBE并做CTRL + V粘贴代码在需要的地方。

最初发布于:

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