首页 文章

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

提问于
浏览
0

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

  • 在活动单元格中输入公式

  • 将它(填充)向下复制10行

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

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

但是,这会产生 1004: Application-define or object-defined error

我已经尝试为 ActiveCell 声明 Range 对象但仍然遇到错误 .

任何有关这方面的帮助将受到高度赞赏 .

2 回答

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

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

  • 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/

相关问题