AW: feste Funktion mit sich ändernden Werten
26.01.2009 18:16:00
fcs
Hallo Tobsen,
die Funktion CInt wandelt einen als Text vorliegenden Zahlen-Ausdruck in eine Integer-Zahl um. Ist der Text nicht nummerisch, dann gibt es einen Typ-Fehler. deshalb ist dringend eine Fehlerbehandlung/Wertpürfung angeraten.
Wenn du mehrere Werte an die Funktion übergeben willst, dann muss du diese in einem Array übergeben. In einer Schleife müssen diese Werte dann für die Datenzeile in der CSV-Datei zusammengebaut werden.
Gruß
Franz
Function schreibe_VT(Verz, Datei, strwert As Variant) As Boolean
Dim Datum As String, Vortag As Variant, intI As Integer, test As Long
Dim daten As String
On Error GoTo Fehler
Datum = Format(Date, "yyyy/mm") '---> 2006.01
Datum = Format(Date, "yyyy_mm") 'meine Empfehlung '---> 2006_01
Vortag = DateAdd("d", -1, Date)
daten = (Vortag)
For intI = LBound(strwert) To UBound(strwert)
If IsNumeric(strwert(intI)) Then
' test = CInt(strwert(intI)) 'CInt kann nur Zahlen bis ca. 32000 verarbeiten
test = CLng(strwert(intI))
daten = daten & ";" & (test)
Else
' daten = daten & ";" & strwert(intI) 'nur zum Testen
daten = daten & ";" 'Bei nicht nummerischen Werten
End If
Next
Open Verz & Datei & "_" & Datum & ".csv" For Append Shared As #1
Print #1, daten
Close #1
schreibe_VT = True
Fehler:
With Err
If .Number 0 Then
schreibe_VT = False
MsgBox "Fehler-Nr. " & .Number & vbLf & .Description
End If
End With
End Function
Private Sub CommandButton5_click()
Dim erg As Boolean, Var1, Var2, Var3
'hier sollen alle datenpunkte eingetragen werden, _
in der funktion sollen diese nicht geändert werden müssen!?'
'so - feste Werte
erg = schreibe_VT("c:\test\", "Anlage", Array("105", "203.4", "26"))
'oder so - Zelladdressen
erg = schreibe_VT("c:\test\", "Anlage", Array(Cells(3, 1), Cells(3, 2), _
Cells(3, 3)))
'oder so - Range-Addressen
erg = schreibe_VT("c:\test\", "Anlage", Array(Range("A3"), Range("B3"), _
Range("C3")))
'oder so - Variablen-Werte
Var1 = "123.2"
Var2 = "007"
Var3 = "0.234"
erg = schreibe_VT("c:\test\", "Anlage", Array(Var1, Var2, Var3))
If erg = True Then
MsgBox "Daten erfolgreich in Datei geschrieben", vbOKOnly, "Test schreibe_VT"
Else
MsgBox "Fehler beim Schreiben der Daten in Datei", vbOKOnly, "Test schreibe_VT"
End If
End Sub