VBA-将行打印到.txt文件
在文本文件中打印值时出现问题。每当我有一个日期或数字,我就会得到一个“错误13”。。。我想这和我的变量有关,但我不明白问题出在哪里VBA-将行打印到.txt文件,vba,excel,Vba,Excel,在文本文件中打印值时出现问题。每当我有一个日期或数字,我就会得到一个“错误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 = ThisWor
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
错误出现在这一行Print#1,WsCib.Cells(i,j).Value+“;”Séparateur=每当单元格(i,j)的值为日期或数字格式时
提前谢谢你的帮助
比尔
琴
VBA中的串联运算符是&
,不是+
。如果两个操作数都是字符串,则后者有时有效
number+string会引发运行时错误13,除非字符串可转换为数字,但当使用+
时,VBA不会将数字转换为字符串,在这种情况下,它只会尝试算术加法
Print #1, WsCib.Cells(i, j).Value & ";"; 'Séparateur =
' ^^^
这将解决手头的问题,但还有一些事情需要改变
此语句声明j为Byte,所有其他变量为Variant。将它们全部调暗,并使用long而不是Byte,因为long应该始终是整数变量的自然选择,除非有特定原因Dim LastCol,LastRow,i,j为Byte
`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,“
Long
,因为它是32位的,所以速度最快,溢出风险更小。只有当您拥有可能导致内存问题的大型数组时,才会想到整数
或字节
。
`Dim LastCol as Long, LastRow As Long, i as Long, j As Long`