VBA删除“的范围内的单元格内容

我是新的vba编码(和一般编码),但我已经开始做一个小的macros,将csv文件的值传输到一个excel文件。

我的下一步是删除每个单元格中的引号。 我已经尝试了我的子代码中的这些行:

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 

我知道这是非常基本的,但我无法在网上find解决scheme或使用macroslogging器。 如果有人可以告诉我我做错了什么,也可以使用什么代码来改变一个单元格中的值包含一个数字string的数值?

谢谢!

你不需要循环遍历每个单元格。 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 

有什么数字格式的列是在开始的问题。 如果他们是文本 (例如'.NumberFormat =“@”`然后删除引号不会将它们转换为真正的数字。我已经添加了一个通用数字格式,以适应这个。如果你有现有的数字格式你想保留,还有更精确的方法来恢复一些单元格的数字格式。

Cell.Value2 = Replace(Cell.Value2,Chr(34),“”)
总是有一个解决方法,这是通过字符代码引用。

你应该把Cell作为Range来调暗。 用VBA语法元素命名variables也不是一个好主意。 改用MyTable和MyCell。

并设置范围更好地使用

设置MyTable = [A1]

对于MyTable.CurrentRegion中的每个MyCell