2013-07-25 98 views
1

我使用VB在Excel中填充數據。它們填充在A列,第1行至3000VB查找並替換爲excel

這裏有一個樣品部分:

H'03F8 
H'03FD 
H'4404 
H'0812 
... and so on 

現在我想要做的是找到以H」的所有字符串,並刪除這一切發生在表格。所以結果會是這樣:

03F8 
03FD 
4404 
0812 
... and so on 

對於這種這裏是我使用的代碼:

Dim xl = Microsoft.VisualBasic.CreateObject("Excel.Application") 
Dim wb = xl.Workbooks.Add() 
Dim sheet = wb.ActiveSheet 

Private Sub find_replace() 
    Dim myRange As Range 
    myRange = sheet.Range("A1:A3000") 
    For Each row In myRange 
     sheet.substitute(myRange, "H'", "") 
    Next 

End Sub 

但運行時,它給出了一個錯誤:MissingMemberExeception了未處理。並在詳細信息中顯示:找不到類型爲「工作表」的公共成員'替代'。

我正在使用VB 2010 Express。請幫忙。

+2

爲什麼不使用使用簡單的查找和Excel中。(CTRL + H) – Vasim

+1

更換funtion既然你用一些VB.Net代碼自己填充Excel表格,首先不會在表格中寫入H''更容易? – sloth

+0

感謝Dominic讓我以這種方式思考。知道它像你說的那樣工作。 – slyclam

回答

3

只需使用下面的VBA:

sheet.Range("A1", "A3000").Replace "H'", "'" 
+0

您的解決方案完美無缺。儘管我需要更多的幫助。當遇到諸如'H'03E8'的條目時,在運行這個代碼之後,應該是'3E8',但由於某些原因它們會以'3.00E + 08'的形式出現。請幫助我。 – slyclam

+0

我正在更新我的答案。請驗證這是否有幫助。 – dotNET

+1

此修改會在每個條目的前面添加不需要的''''。我通過添加這行代碼'sheet.Range(「A1」,「A3000」)。NumberFormat =「@」''''''''''來修復這個問題,它將單元格格式設置爲文本,從而保留了'03E8'值。無論如何感謝您的幫助。 – slyclam

0

嘗試......

Private Sub find_replace() 
    Dim myRange, r As Range 
    Dim s As String 

    myRange = sheet.Range("A1:A3000") 
    For Each r In myRange 
     s = r.Value    
     r.Value = s.Substitute("H'", "") 
    Next 

End Sub 
+0

此代碼顯示範圍爲朋友錯誤。 – slyclam