Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Variable in nächste Prozedur übergeben

Forumthread: Variable in nächste Prozedur übergeben

Variable in nächste Prozedur übergeben
26.12.2003 19:56:43
Heidi
Hallo Forum,

ich habe durch Unterstützung einen Code erhalten, wo ich jetzt aber nicht mehr von allein weiterkomme.
Kann ich eine Variable von einer SUB in eine

Private Sub übergeben?
In meinem Fall möchte ich in dem SUB mit der Variable 'bezeichnung' in einer Schleife einen Begriff speichern, nach dem dann in der PUBLIC SUB der gleichlautende Tabellenblattname gesucht wird.
In einer einzigen Prozedur funktionierts im Test, auf zwei Prozeduren aufgeteilt leider nicht.
Hier ist der Code:
Sub Aufruf()
For i = 1 To 4
aral = Workbooks("Basis.xls").Sheets("Stammdaten").Cells(4 + i, 53)
Call URL_Load(aral)
bezeichnung = Workbooks("Basis.xls").Sheets("Stammdaten").Cells(4 + i, 2) 'HIER IST DIE VARIABLE, DIE ICH ÜBERGEBEN MÖCHTE
Next i
End Sub



Private Sub URL_Load(ByVal sURL As String)
Dim appIE As Object, lfCount As Integer, txtSearch As Long
Dim sTxt As String, txtLine As String, txtbool As Boolean
Set appIE = CreateObject("InternetExplorer.Application")
appIE.navigate sURL
Do: Loop Until appIE.Busy = False
Do: Loop Until appIE.Busy = False
sTxt = appIE.document.documentElement.outerhtml
Set appIE = Nothing
Close
Open ThisWorkbook.Path & "\test.txt" For Output As #1
lfCount = 1
For txtSearch = 1 To Len(sTxt)
If txtbool Then
If Mid(sTxt, txtSearch, 1) = vbCr Then
Print #1, txtLine
txtLine = ""
txtbool = False
Else
txtLine = txtLine & Mid(sTxt, txtSearch, 1)
End If
Else
If Mid(sTxt, txtSearch, 1) = vbLf Then lfCount = lfCount + 1
Select Case lfCount
Case 42 To 45: txtbool = True 'Zeile 20 bis 25 Benzin
Case 118 To 120: txtbool = True 'Diesel
End Select
End If
Next
Close
MsgBox "Der Text wurde gespeichert unter:" & vbLf & ThisWorkbook.Path & "\test.txt"
anzahl = Worksheets.Count
For x = 2 To anzahl
If Workbooks("Basis.xls").Sheets(x).Name = bezeichnung Then
Sheets(x).Cells(1, 1) = "Heidi"  'HIER MÖCHTE ICH DEN TABELLENBLATTNAMEN ZUORDNEN
End If
Next x
End Sub


Kann mir jemand sagen, ob Variablen übergeben in die nächste Prozedur überhaupt geht, und wenn ja, wie ?

Danke schon mal fürs Lesen,

MFG Heidi
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Variable in nächste Prozedur übergeben
26.12.2003 20:11:48
andre
hallo heidi,
eine variable übergibst du ja schon - die heisst oben aral und wird unten dann sURL. der name ist oben also egal, nur die reihenfolge ist bei mehreren einzuhalten.
willst du eine andere übwrgeben, dann das gleiche strickmuster.
willst du mehrere übergeben, dann meinetwegen oben Call URL_Load(aral,esso,shell)
und unten musst du auch 3 einbauen
Private Sub URL_Load(ByVal sURL As String, optional byval aURL as string, byval xURL as string,)
wobei natürlich die typen verschieden sein können und auch mal beim aufruf eine weggelassen werden kann: Call URL_Load(aral,,shell) - aber nur die anstelle der mit optional
gruss andre
Anzeige
Danke!
26.12.2003 20:27:23
Heidi
Hallo Andre,

vielen Dank für die schnelle Antwort, ich habs sofort ausprobiert, und es
funktioniert!

Danke nochmal und schönen Abend noch.

Gruß Heidi
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Variablen in VBA-Prozeduren übergeben


Schritt-für-Schritt-Anleitung

Um eine Variable von einer Sub-Prozedur in eine andere in VBA zu übergeben, kannst du die folgenden Schritte befolgen:

  1. Variable deklarieren: Stelle sicher, dass die Variable, die du übergeben möchtest, im richtigen Scope deklariert ist.

    Dim bezeichnung As String
  2. Sub-Prozedur aufrufen: Übergebe die Variable beim Aufruf der Sub-Prozedur. Du kannst mehrere Variablen übergeben, indem du sie durch Kommas trennst.

    Call URL_Load(aral, bezeichnung)
  3. Parameter in der Sub-Prozedur definieren: Definiere die Parameter in der Ziel-Prozedur, um die übergebenen Werte zu empfangen.

    Private Sub URL_Load(ByVal sURL As String, ByVal bezeichnung As String)
  4. Verwenden der übergebenen Variablen: Innerhalb der Ziel-Prozedur kannst du die übergebene Variable verwenden, wie du es mit anderen lokalen Variablen tun würdest.


Häufige Fehler und Lösungen

  • Error: "Variable nicht definiert": Stelle sicher, dass alle Variablen vor ihrer Verwendung deklariert sind.

  • Error: "Typ nicht übereinstimmend": Achte darauf, dass die übergebene Variable den richtigen Datentyp hat. Wenn du eine String-Variable übergibst, sollte der Parameter in der Sub-Prozedur ebenfalls als String deklariert sein.

  • Error: "Sub oder Function nicht gefunden": Überprüfe, ob du die Sub-Prozedur korrekt aufrufst und dass der Name genau übereinstimmt.


Alternative Methoden

Falls du eine Variable nicht direkt übergeben möchtest, kannst du folgende Alternativen nutzen:

  • Globale Variablen: Deklariere die Variable als Public in einem Modul, um sie in allen Prozeduren des Projekts verwenden zu können.

    Public bezeichnung As String
  • Verwendung von Collections oder Dictionaries: Du kannst Daten in einer Collection oder einem Dictionary speichern und diese Strukturen an die Prozedur übergeben.


Praktische Beispiele

Hier ist ein einfaches Beispiel, um die Übergabe einer Variable zu demonstrieren:

Sub Aufruf()
    Dim aral As String
    Dim bezeichnung As String

    For i = 1 To 4
        aral = Workbooks("Basis.xls").Sheets("Stammdaten").Cells(4 + i, 53)
        bezeichnung = Workbooks("Basis.xls").Sheets("Stammdaten").Cells(4 + i, 2)
        Call URL_Load(aral, bezeichnung)
    Next i
End Sub

Private Sub URL_Load(ByVal sURL As String, ByVal bezeichnung As String)
    ' Hier kannst du die übergebene Variable verwenden
    MsgBox "Übergebene Bezeichnung: " & bezeichnung
End Sub

Tipps für Profis

  • Verwende ByRef oder ByVal: Achte darauf, ob du die Variable per Referenz (ByRef) oder per Wert (ByVal) übergeben möchtest, da dies Auswirkungen auf die Modifizierbarkeit der Variable hat.

  • Dokumentiere deinen Code: Füge Kommentare hinzu, um die Bedeutung der übergebenen Variablen klar zu machen.

  • Debugging: Nutze die Debugging-Werkzeuge in VBA, um zu überprüfen, ob die Variablen den erwarteten Wert haben.


FAQ: Häufige Fragen

1. Kann ich mehrere Variablen in einer Sub-Prozedur übergeben?
Ja, du kannst mehrere Variablen übergeben, indem du sie durch Kommas trennst. Stelle sicher, dass die Parameter in der Prozedur entsprechend definiert sind.

2. Was ist der Unterschied zwischen ByRef und ByVal?
ByRef übergibt die Referenz der Variablen, was bedeutet, dass Änderungen an der Variablen in der aufgerufenen Prozedur auch die ursprüngliche Variable beeinflussen. ByVal übergibt eine Kopie der Variable, sodass Änderungen in der Prozedur die ursprüngliche Variable nicht beeinflussen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige