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
…