嗨,我是第一次使用VBA开发(之前使用vb.net等)。 我总是会收到错误
未定义变量
在运行代码时。
调用方法writeHeaders
时,程序始终退出。
一些帮助将不胜感激,这东西使我发疯了atm。
Option Explicit
Sub exportToAPplus()
Dim applusImport As Workbook
Set applusImport = createFile
writeHeaders applusImport
End Sub
Function createFile() As Workbook
Dim dateiName As String
dateiName = Application.GetSaveAsFilename()
If dateiName <> "Falsch" And dateiName <> "False" Then
Dim applusImport As Workbook
dateiName = dateiName + "xlsx"
Set applusImport = Workbooks.Add
Application.DisplayAlerts = False
applusImport.SaveAs dateiName, FileFormat:=xlOpenXMLWorkbook
Application.DisplayAlerts = True
Set createFile = applusImport
Else
MsgBox ("Sie haben keinen Dateinamen ausgewählt, es wurde nichts
gespeichert.")
End If
End Function
Sub writeHeaders(applusImport As Workbook)
Dim headers() As Variant
headers() = Array("DATUM", "AUFTRAG", "PERSONAL", "KSTR", "INNENAUFTRAG", "POSITION", "AG", "KAPAST", "MASCHINENGRUPPE", "START", "ENDE", "DAUER", "BESCHREIBUNG")
Application.ScreenUpdating = False
For i = LBound(headers()) To UBound(headers()) Step 1
.Cells(1, 1 + i).Value = headers(i)
Next i
applusImport.Save
Application.ScreenUpdating = True
End Sub
答案 0 :(得分:2)
错误
“未定义变量”
表示您使用了变量但未定义变量。
您尚未在writeHeaders
中声明的变量是变量i
。
您必须先声明它并指定其类型,然后才能使用i
:
Dim i As Long
For i = LBound(headers()) To UBound(headers()) Step 1
请注意,发生此类错误是因为您使用Option Explicit
强制进行变量声明(强烈建议这样做)。有关更多信息,请参见:Excel Easy: Option Explicit
答案 1 :(得分:1)
答案 2 :(得分:1)
感谢Peh。您需要在VBA的For循环中声明i。