我在文本文件中打印值时遇到问题。每当我有一个或多个日期时,我会得到一个“错误13”......我猜它与我的变量有关但我无法理解问题所在。
Sub SX_Externe_Generate_TXT()
Dim WsCib As Worksheet
Dim LastCol, LastRow, i, j As Byte
Application.ScreenUpdating = False
Set Ws = ThisWorkbook.Sheets("Externe")
Set WsCib = ThisWorkbook.Sheets("SX_Externe")
LastCol = WsCib.Cells(1, 1).SpecialCells(xlCellTypeLastCell).Column
LastRow = WsCib.Cells(1, 1).SpecialCells(xlCellTypeLastCell).Row
WsCib.Activate
Open "C:\Users\xizx692\Desktop\SX_Externe_Temp.txt" For Output As #1 'Tu crées le fichier text
i = 1
For i = 1 To LastRow
j = 1
For j = 1 To LastCol
Print #1, WsCib.Cells(i, j).Value + ";"; 'Séparateur = ;
Next j
Print #1, WsCib.Cells(i, j + 1).Value 'pas de séparateur (Saut de ligne)
Next i
Close #1
Ws.Activate
Application.ScreenUpdating = False
End Sub
错误来自此行打印#1,WsCib.Cells(i,j).Value +“;”;每当单元格(i,j).value是日期或数字格式时,'Séparateur=; 。
提前感谢您的帮助。
BR,
让
答案 0 :(得分:3)
Print #1, WsCib.Cells(i, j).Value + ";"; 'Séparateur = ;
VBA中的串联运算符为&
,不 +
。如果两个操作数都是字符串,后者有时会起作用。
number + string引发运行时错误13 ,除非该字符串可转换为数字,但在使用+
时VBA永远不会将数字转换为字符串,它只会尝试算术在这种情况下加入。
Print #1, WsCib.Cells(i, j).Value & ";"; 'Séparateur =
' ^^^
这将解决手头的问题,但还有一些其他问题需要改变。
Dim LastCol, LastRow, i, j As Byte
此语句将j声明为Byte,其他所有声明为Variant。将它们全部调暗,并使用long而不是Byte,因为Long应始终是整数变量的自然选择,除非出现具体原因。
`Dim LastCol as Long, LastRow As Long, i as Long, j As Long`
i=1
和j=1
是多余的,让For
语句执行初始化作业
语句Print #1, WsCib.Cells(i, j + 1).Value
也是多余的,因为该单元格为空。要打印空行,只需Print #1, ""
。虽然它的功能相同,但它对您的代码的可读性更为重要。