Einsteigerhilfe (VBA)

tobi91 @, Rottenburg am Neckar, Freitag, 07.06.2019, 00:40 (vor 72 Tagen)

Hallo,

ich versuche mir gerade ein kleines Programm zusammenzuschnipseln ohne viel Vorkenntnisse allerdings Scheitere ich an den Grundlagen. Ich habe verschiedene Lösungsansätze im Internet gefunden und nun versuche ich eine Function in ein Sub zu integrieren. Weil ich das nicht hinbekommen habe, versuchte ich es mit diesem kleinem Beispiel aber ich habe meinen Fehler mit ausprobieren nicht gefunden. In den Tutorials die ich überflogen habe wurden Subs und functions immer Separat erklärt und ich konnte nicht nachvollziehen was die Bedingungen zum zusammenfügen sind.

Was ist mein Fehler?:


Sub test()
Dim Hallo As String
Debug.Print Hallo
End Sub


Function Hallo()
Hallo = "Servus"
End Function

Einsteigerhilfe

Martin Asal @, Freitag, 07.06.2019, 08:52 (vor 71 Tagen) @ tobi91

Hallo Tobi,

vielleicht besteht dein Problem darin, Tutorials nur zu überfliegen, statt dich Schritt für Schritt damit zu beschäftigen? ;-)


Sub test()
 
Debug.Print Hallo() 
End Sub
 
 
Function Hallo() As String
Hallo = "Servus"
End Function

Martin

Einsteigerhilfe

tobi91 @, Rottenburg am Neckar, Freitag, 07.06.2019, 12:34 (vor 71 Tagen) @ Martin Asal

Vielen Dank Martin,

ah, mein Rückgabewert war typ Variant und davor hatte ich eine gleichnamige Variable als String deklariert.
:-)
Ja, ich arbeite gerade an einem Gis projekt mit ArcMap und versuche Daten vom Deutschen wetterdienst weiterzuverarbeiten. Die Website des dwd ist natürlich bugged und jetzt versuche ich mir mit vba die Daten so vorzubereiten dass ich diese nachher über text files in raster daten vorliegen habe. Ich komme aber ganz gut voran. (ahhhrg Syntax :P)

gruß tobi

Einsteigerhilfe

Martin Asal @, Freitag, 07.06.2019, 12:40 (vor 71 Tagen) @ tobi91

Hallo Tobi,

du machst offensichtlich Fortschritte ;-)

davor hatte ich eine gleichnamige Variable als String deklariert.

Stimmt. Das mit dem Datentyp ist zum Verständnis hier erstmal nicht so wichtig, macht es aber vielleicht etwas deutlicher.

Martin

Einsteigerhilfe

tobi91 @, Rottenburg am Neckar, Freitag, 07.06.2019, 14:03 (vor 71 Tagen) @ Martin Asal

mein erster Erfolg: :-D

geht bestimmt auch eleganter aber ^\_O_/^


Sub dataToTxt()

Dim myFile As String, rng As Range, cellValue As Variant, p As Integer, r As Integer, cellValue_d As Variant
Dim lastRow As Long, fileName As String, a As Integer, columnumber As Integer, b As Integer


With Sheets("makros_probieren.txt")                            'Sheet namen eintragen
    lastRow = .Range("A" & .Rows.Count).End(xlUp).Row
                                                'bestimmung letzte zeile
Set rng = Range("A1:B" & lastRow)                                'range für p, r loop
 
For b = 3 To 4                                                                 '1-48 eintragen, anzahl an files/ iterationen
   
    columnumber = b
    a = (columnumber - 1) * 6                                         'spalte überprüfen -> 1-48; 1 mit 5 ersetzten

                                                                                        'set proper location and file name
    fileName = "precipitation_h" & a

    myFile = Application.DefaultFilePath & "\" & fileName & ".txt"
    Open myFile For Output As #1

    For p = 1 To lastRow                                                    'p = zeilen, r = spalten
    cellValue_d = Cells(p, columnumber).Value
      For r = 1 To rng.Columns.Count
        cellValue = rng.Cells(p, r).Value
            If r = rng.Columns.Count Then
                Write #1, cellValue,
                Write #1, cellValue_d                                       'ohne Komma wird eine neue Zeile im txt begonnen
                Else
                Write #1, cellValue,
            End If
        Next r
    Next p
  
    Close #1                                                                     'schließe txt

Debug.Print fileName & " written"

Next b

End With

Debug.Print "loop finished"

End Sub
RSS-Feed dieser Diskussion
powered by my little forum