Clever-Excel-Forum

Normale Version: Objekt in anderes Makro übergeben
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo liebe Excel-Gemeinde,

ich habe ein Frage zur Übergabe von Objekten.

In einem Makro in einem Modul wiese ich einem Workbook und einem Worksheet einen Objektverweis zu.

Code:
Public erstezeile as Integer
Public letztezeile as Integer


Sub oeffnen()
'MsgBox oe_name
Dim oexcel As Object
Dim ws As Object
Dim wb As Object

'Öffnen der Liste
pfad = "Z:\test\"
datei = "Liste.xlsx"
On Error Resume Next
Set oexcel = GetObject("excel.application")
On Error GoTo 0
       
If oexcel Is Nothing Then
    Set oexcel = CreateObject("Excel.Application")
    Set wb = oexcel.Workbooks.Open(pfad & datei)
    Set ws = wb.Sheets(1)
    oexcel.Visible = True
    wb.Activate
    wb.Application.DisplayFullScreen = True
End If

(weitere Anweisungen zur Ermittlung von erstezeile und letztezeile)
.
End Sub


In einem weitere Makro möchte ich diesen Objektverweis wieder nutzen.

Code:
Name suchen
Sub name_suchen()
nachname = UF1.TextBox1.Value

With UF1
    For i = erstezeile To letztezeile
        If ws.Cells(i, 3).Value = nachname Then
            .TextBox2.Value = ws.Cells(i, 4).Value
            .TextBox3.Value = ws.Cells(i, 6).Value
            .TextBox4.Value = ws.Cells(i, 7).Value
            ws.Cells(i, 3).Select
            erstezeile = i
            Exit For
        End If
    Next i
End With

Geht das und wenn ja wie?
Weiß wer Rat?

Gruß

tmessers
Hallo,

deine Variablen für die erste und letzte Zeile hast du doch auch als Public deklariert, warum machst du das dann nicht einfach auch für deine Variablen wb und ws?

Gruß Werner
Hallo Werner, danke für Deine Antwort.

Ich habe "Public ws As Object" probiert.
Die Fehlermeldung lautet:
Laufzeitfehler '91':
Objektvariable oder With-Blockvariable nicht festgelegt

Gruß

tmessers
Hallo,

(02.12.2020, 22:47)tmessers schrieb: [ -> ]Ich habe "Public ws As Object" probiert.

Wo hast Du es probiert?
Hallo tmessers,

soweit ich weiß, kannst Du keine Variablen von einem Makro in ein anderes übergeben.
Von einem Modul eines Makros in ein anderes Modul ja, aber nicht von Makro-Datei zu Makro-Datei.

Gruß,
Lutz
@Steffl

Ich habe den Code wie folgt ergänzt
Code:
Public erstezeile as Integer
Public letztezeile as Integer
Public wb as Object
Public ws as Object


@Lutz Fricke
Ich nutze diese Möglichkeit bereits so und es hat bis auf die Objekte immer funktioniert.
Hallo,

Public wb as Workbook und Public ws as Worksheet

Gruß Werner
@Werner

Das war die Lösung.
Workbook und Worksheet anstatt Object.

Vielen Dank!!!!