簡體   English   中英

VBA從一個范圍內的單元格內容中刪除“

[英]VBA remove " from cell content in a range

我是vba編碼(一般編碼)的新手,但我已經開始做一個小宏,它將csv文件的值傳遞給excel文件。

我的下一步是刪除每個單元格中的引號。 我在我的sub中試過這些代碼行:

Dim Table As Range
Dim Cell As Variant

Set Table = Range("A1:currentregion")

For Each Cell In Table        
    cell.value2 = Replace(cell.value2,""","")   *I get a syntax error here*        
Next Cell

我知道這是非常基本的,但我無法在網上找到解決方案或使用宏錄制器。 如果有人能告訴我我做錯了什么,以及我可以用什么代碼將包含一串數字的單元格中的值更改為數值?

謝謝!

您不需要遍歷每個單元格。 Range("A1").CurrentRegion可以作為一個整體進行操作。

With Range("A1").CurrentRegion
    .Replace What:="""", Replacement:=vbNullString, LookAt:=xlPart
End With

請注意,要查找單引號(例如“)”,您需要連續使用4個引號。另一個選擇是Chr(34)因為引號符號是第34個ASCII字符。

附錄:

關於問題的第二部分,最好使用快速文本到列►固定寬度命令將看起來像數字的文本更改為實際數字。 每列必須單獨運行,但這可以在.CurrentRegion完成。

Dim c As Long
With Range("A1").CurrentRegion
    .Replace What:="""", Replacement:=vbNullString, LookAt:=xlPart
    For c = 1 To .Columns.Count
        .Columns(c).NumberFormat = "General"
        .Columns(c).TextToColumns Destination:=.Columns(c), _
            DataType:=xlFixedWidth, FieldInfo:=Array(0, 1)
    Next c
End With

有一個問題是列開始時的數字格式。 如果它們是Text (例如'.NumberFormat =“@”`那么刪除引號不會將它們轉換為真實數字。我已經添加了對通用數字格式的恢復以適應這一點。如果你有現有的數字格式,您希望保留,有更精確的方法可以恢復某些單元格的數字格式。

Cell.Value2 =替換(Cell.Value2,Chr(34),“”)
總有一種解決方法,這個是通過字符代碼引用的。

你應該將Cell作為范圍調暗。 使用VBA語法元素命名變量也不是一個好主意。 請改用MyTable和MyCell。

並設置范圍更好用

設置MyTable = [A1]

對於MyTable.CurrentRegion中的每個MyCell

...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM