2015-11-06 67 views
1

我有一個Excel文件,其中包含多個工作表。在每個「A1」單元中,我將公式保存爲文本格式:將單元格轉換爲替換公式

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

我將它們保存爲這種格式因爲公式允許通過插件(xlam)連接到數據庫(Thomson Reuters Eikon)並用於從此數據庫檢索數據。如果我將它們全部放入沒有%字符的文件中,它們會立刻被執行並且文件崩潰。所以我想寫VBA,它將每個表格中的字符(%)逐個刪除,因此等待1或2分鐘,直到上一張表格中的公式檢索到數據。我嘗試了幾種方法,但都沒有工作。

首先,我試圖用這個代碼替換字符:

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 "%", "" 

但如果我所說的查找和替換框,然後按那就隻手動按鈕。

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

如何使用宏來運動查找和替換框?我嘗試了在TR('Sheet 1'!C1;'Sheet 1'!$ F $ 1:$ F $ 5;「Frq = D SDate =#1 EDate =#」)中加入「=」來生成公式。 2 Curn = EUR CH = FD「; $ B $ 1; '表1' $ d $ 1; '表1' $ E $ 1)所示:!

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

我失敗要麼...

是否有其他可能性來替代%角色?

回答

1

將替換寫入Range.Formula property

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 property來更改分號分隔符。

+0

謝謝,我會嘗試一下,並在稍後報告成功。 – In777

+0

不幸的是,它沒有奏效。我使用'Sheets(「Sheet1」)。Cells(1,1).Formula = Replace(Sheets(「Sheet1」)。Cells(1,1).Value,Chr(37),vbNullString)'我得到了「Runtime錯誤1004「。 – In777

+0

配方有問題。我用一個更簡單的公式(例如'%= SUM(B2:B4)')測試了它,它按預期工作。如果公式有效,那麼公式的複雜性應該沒有差別。除非預期這是一個數組公式。 – Jeeped