Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Objekt in anderes Makro übergeben
#1
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
Antworten Top
#2
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
Antworten Top
#3
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
Antworten Top
#4
Hallo,

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

Wo hast Du es probiert?
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#5
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
Antworten Top
#6
@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.
Antworten Top
#7
Hallo,

Public wb as Workbook und Public ws as Worksheet

Gruß Werner
Antworten Top
#8
@Werner

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

Vielen Dank!!!!
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste