我是vba编码(一般编码)的新手,但我已经开始做一个小宏,它将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
我知道这是非常基本的,但我无法在网上找到解决方案或使用宏录制器。如果有人能告诉我我做错了什么,以及我可以用什么代码将包含一串数字的单元格中的值更改为数值?
谢谢!
答案 0 :(得分:3)
您无需遍历每个单元格。 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 =“@”`那么删除引号不会将它们转换为真数。我已经添加了对 General 数字格式以适应这种情况。如果您希望保留现有的数字格式,可以使用更精确的方法来恢复某些单元格的数字格式。
答案 1 :(得分:1)
Cell.Value2 = Replace(Cell.Value2,Chr(34),“”)
总有一种解决方法,这个是通过字符代码引用的。
答案 2 :(得分:-1)
你应该将Cell作为范围调暗。使用VBA语法元素命名变量也不是一个好主意。请改用MyTable和MyCell。
要更好地设置范围
设置MyTable = [A1]
MyTable.CurrentRegion中的每个MyCell
...