使用replace将单元格转换为公式

我有一个Excel文件,其中有几张纸。 在每个“A1”单元中,我将公式保存为一个文本,格式为:

%= TR('Sheet 1'!C1;'Sheet 1'!$ F $ 1:$ F $ 5;“Frq = D SDate =#1 EDate =#2 Curn = EUR CH = Fd”; $ B $ 1;'Sheet 1'!$ D $ 1;'Sheet 1'!$ E $ 1)

由于公式允许通过Add-In(xlam)连接到数据库(Thomson Reuters Eikon)并用于从此数据库检索数据,所以我特意将它们保存为这种格式。 如果我把它们全部放在没有%字符的文件中,那么它们会被立刻运行,并且会崩溃。 所以我想写VBA,在每个表中逐个删除字符( % ),因此等待一两分钟,直到上一页中的公式检索到数据。 我尝试了几种方法,但都没有工作。

首先,我试图用这个代码replace字符:

 Dim SearchValue As String Dim NewValue As String SearchValue = "%" NewValue = "" Selection.Replace What:=SearchValue, Replacement:=NewValue, LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False 

和这个代码:

 Range("B1").Replace "%", "" 

但是,只有当我打电话查找和replace框并手动按下button。

 Application.Dialogs(xlDialogFormulaReplace).Show "%", "" 

如何使用macros来运行查找和replace框?

此外,我试图在TR('Sheet 1'!C1;'Sheet 1'!$ F $ 1:$ F $ 5;“Frq = D SDate =#1 EDate =#2 Curn = EUR CH = Fd“; $ B $ 1;'Sheet 1'!$ D $ 1;'Sheet 1'!$ E $ 1)像这样:

 myformula = Cells(1, 1).Value Range("B1").Select ActiveCell.Formula = "=" & myformula 

我也没有成功

是否有其他可能性来replace%字符?

将replace写入Range.Formula属性 。

 with selection.cells(1) .formula = replace(.value, chr(37), vbnullstring) end with With Sheets("Sheet1").Cells(1, 1) .Formula = Replace(.Value, Chr(37), vbNullString) End With 'for non-US-EN systems you need to use comma list separators with .Formula With Sheets("Sheet1").Cells(1, 1) .Formula = Replace(Replace(.Value, Chr(37), vbNullString), Chr(59), Chr(44)) End With 'for non-US-EN systems you can also use .FormulaLocal With Sheets("Sheet1").Cells(1, 1) .FormulaLocal = Replace(.Value, Chr(37), vbNullString) End With 

VBA公式设置非常US-EN为中心; 它期望你在EN-US系统上使用一个公式。 您可以将公式列表分隔符从分号更改为逗号,或者使用Range.FormulaLocal属性对分号列表分隔符进行validation。