Microsoft Excel

Herbers Excel/VBA-Archiv

Objektvariable an Prozedur übergeben

Betrifft: Objektvariable an Prozedur übergeben von: Dennis
Geschrieben am: 28.10.2014 14:36:11

Hallo zusammen,

ich möchte in einem simplen Programm ein Objektvariabel an eine Prozedur übergeben, Allerdings bekomme ich immer eine Fehlermeldung, Laufzeitfehler 438.

Public Blatt As Worksheet

Sub Namen_Auflistung()

 Dim i, y, a As Integer
  
 i = 0
 For Each Blatt In Worksheets
    If Blatt.Name = "9428" Then
        GoTo Weiter
    End If
    i = i + 1
 Next
 
Weiter:
    For y = Worksheets.Count To i + 1 Step -1
        Set Blatt = Worksheets(y)
        Worksheets("Gesamtersparnis").Cells(y - 1, 2) = Blatt.Name
        Zelle_finden (Blatt)
    Next
    
End Sub
Sub Zelle_finden(ByVal Blatt As Worksheet)
Dim Name As String
Dim Spalte, Zeile As Integer
    
Name = "Ersparnis Depotbankgebühr"
Set Zelle = Blatt.Range("A1:z100").Find(Name)
Spalte = Zelle.Row
Zeile = Zelle.Column
    
End Sub


Kann mir jemand meinen Fehler bitte meinen Fehler erklären? Danke im voraus.

Gruss Dennis

  

Betrifft: AW: Objektvariable an Prozedur übergeben von: ChrisL
Geschrieben am: 28.10.2014 14:46:47

Hallo Dennis

Folgendes solltest du löschen:
Public Blatt As Worksheet

Da du die Variable übergibst, brauchst du diese nicht noch als Public zu deklarieren. Warum genau die Fehlermeldung kommt kann ich auch nicht sagen :)

cu
Chris


  

Betrifft: AW: Objektvariable an Prozedur übergeben von: Cedric
Geschrieben am: 28.10.2014 15:21:06

Täusche ich mich, oder fehlt da ein Call?

Call Zelle_finden (Blatt)



  

Betrifft: AW: Objektvariable an Prozedur übergeben von: Dennis
Geschrieben am: 28.10.2014 15:34:32

Hallo Cedric,

vielen Dank für den Hinweis. Mit der Call-Anweisung übernimmt er die Objektvariable. Bin bisher immer davon ausgegangen das Call optional ist.

Merci


  

Betrifft: ohne Call von: Rudi Maintaire
Geschrieben am: 28.10.2014 16:02:33

Hallo,
dann auch ohne ()

Zelle_finden Blatt
Gruß
Rudi


  

Betrifft: AW: Objektvariable an Prozedur übergeben von: Daniel
Geschrieben am: 28.10.2014 21:27:46

Hi

"Call" ist auch optional.
Du kannst das Makro mit oder ohne Call aufrufen.
Wenn du Call verwendest, müssen die Parameter des aufgerufenen Markos in Klammern gesetzt werden.
Wenn du auf Call verzichtest und das Marko direkt aufrufst, darfst du keine Klammern verwenden.

Richtig ist:

Call Zelle_finden(Blatt)
Zelle_finden Blatt


falsch ist
Call Zelle_finden Blatt
Zelle_finden(Blatt)
Gruß Daniel


  

Betrifft: Meinst du, Dennis hätte Rudis 5,5 h frühere AW ... von: Luc:-?
Geschrieben am: 29.10.2014 10:42:02

…nicht verstanden, Daniel,
oder kämpfst du nach Hajos Vorbild um den MVP…? ;->
Wahrscheinlicher ist doch, das Dennis schon Rudis AW gar nicht mehr gelesen oder einfach nur zK genommen hat und ein FeedBack nicht für nötig hält. Warum dann die längst „kalte Suppe“ noch mal aufwärmen…? Langeweile?
Gruß, Luc :-?


  

Betrifft: AW: Meinst du, Dennis hätte Rudis 5,5 h früher ... von: Daniel
Geschrieben am: 29.10.2014 10:51:05

danke für die Zurecktweisung mein Forumspolizist.
btw was ist ein MVP?
warum sollte man darum kämpfen müssen und wie macht man das?
würde mich untertänigst über eine Aufklärung von dir freuen.
(aber nur, wenn du sie selber in deinem unnachahmlichen Schreibstil formulierst)


  

Betrifft: Schau auf Hajos WebSite nach! owT von: Luc:-?
Geschrieben am: 03.11.2014 01:13:33

:-?


 

Beiträge aus den Excel-Beispielen zum Thema "Objektvariable an Prozedur übergeben"