Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1564to1568
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Funktion aus Makro aufrufen

Funktion aus Makro aufrufen
07.07.2017 14:05:00
Kai
Hallo zusammen,
folgendes Problem: Ich habe einen Code, der mir aus archivierten Arbeitsmappen Daten ausliest und in eine neue Mappe schreibt.
Ziel ist eine statistische Auswertung von Messergebnissen.
Der Code funktioniert, ich habe ihn schon mehrfach für andere Auswertungen verwendet.
Leider können in dem Archiv von den über 400 Mappen einige vorhanden sein in denen das Arbeitsblatt das die Daten enthält fehlt.
Durch googeln bin ich recht schnell auf eine Funktion gestoßen, die sich mir erschließt und die Aufgabe erledigen sollte.
Leider weiß ich nicht, wie ich diese Funtkion aufrufen kann. Ich habe die letzten zwei Stunden selber rumprobiert, möchte das Thema aber wenn möglich heute noch abschließen.
Hier ist der Code:
Option Explicit
Public Function BlattVorhanden(BlattName As String) As Boolean
Dim Blatt As Object
Dim BlattVorhanden As Boolean
For Each Blatt In ActiveWorkbook.Sheets ' Namen aller Tabellen prüfen
If Blatt.Name = "Elution_pH_el. LF" Then
BlattVorhanden = True
Exit Function
End If
Next Blatt
BlattVorhanden = False
End Function
Sub Statistik_Projekt_LF()
Dim strFile        As String
Dim strPfad        As String
Dim i              As Long
Dim wsZ            As Worksheet
Dim wbkQ           As Workbook
Workbooks.Add
Set wsZ = ActiveSheet
'Application.ScreenUpdating = False
strPfad = "Z:\Pfad zu den Berichten\"
strFile = Dir(strPfad & "*W pH LF*.xl*", vbNormal)
Do Until Len(strFile) = 0
With wsZ
Workbooks.Open strPfad & "\" & strFile
 'WIE FÜHRE ICH AN DIESER STELLE DIE FUNKTION BlattVorhanden AUS?
If BlattVorhanden = True Then
i = IIf(.Cells(.Rows.Count, 1).End(xlUp).Row 
Wie wird die Funktion korrekt aufgerufen?
Die Beispiele die ich gefunden habe beziehen sich meistens auf die Übergabe von Argumenten, hier möchte ich eine Arbeitsmappe durchsuchen und kriege die Syntax nicht hin.
Gruß
Kai

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Funktion aus Makro aufrufen
07.07.2017 14:11:59
Kai
Das ist natürlich Quatsch in der Funktion:
Dim BlattVorhanden As Boolean

Habe ich schon korrigiert.
AW: Funktion aus Makro aufrufen
07.07.2017 14:21:07
mmat
Aufruf:

If BlattVorhanden("Elution_pH_el. LF") = True Then
Änderung in der Funktion (Du hast da den Blattnamen als Literal reingepinnt, ts, ts, ts ....):
         If Blatt.Name = Blattname Then
vg, MM
AW: Funktion aus Makro aufrufen
07.07.2017 14:48:43
Kai

Aufruf:

If BlattVorhanden("Elution_pH_el. LF") = True Then


Funktioniert. Das Wochenende naht...
Was ich allerdings nicht verstehe: In der Funktion setze ich BlattVorhanden auf True bzw. False. Warum muss dann noch ("Elution_pH_el. LF") angegeben werden? Ich bin davon ausgegangen, nur den Wert abfragen zu müssen.
Also abfragen ob BlattVorhanden = True damit die If-Verzweigung startet.
Änderung in der Funktion (Du hast da den Blattnamen als Literal reingepinnt, ts, ts, ts ....):   _

If Blatt.Name = Blattname Then

vg, MM

Du hast natürlich recht. Ich übe noch...
Vielen Dank
Kai
Anzeige
AW: Funktion aus Makro aufrufen
07.07.2017 15:10:58
mmat
Das ist, um die Funktion vielseitig einsetzbar zu machen. Du sagst beim Aufruf, wonach du suchst. Heute nach ("Evolution_pH_el. LF"), morgen brauchst du genau die gleiche Funktion um zu gucken, ob es ein Blatt "Tabelle1" gibt. Die Funktion bleibt unverändert, nur der Aufruf ist ein anderer.
vg, MM
AW: Funktion aus Makro aufrufen
07.07.2017 15:16:34
Matthias
Moin! Deine Funktion hat ja einen Parameter (Blattname). Den gibst du bei deiner letzten Variante von mmat an und dieser Wert wird abgeglichen. Eigentlich könntest du den Namen so wie in der ersten Variante fest in der Funktion festlegen (geht ja immer um den selben und kein variables Blatt). Dann brauchst du in der Funktion auch nichts angeben, musst aber den Kopf der FUnktion ohne Parameter festlegen. Letztendlich ist es egal - beides geht. Der Vorteil der jetzigen Funktion ist, dass du sie später noch anders verwenden könntest. VG
Anzeige
AW: Funktion aus Makro aufrufen
10.07.2017 09:06:54
Kai
Danke Euch beiden für die Erklärung. Verstanden. Ich habe den Blattnamen in der Funktion und im Makro angegeben, also unnötigerweise doppelt. Ich werde das noch mal in beiden Varianten testen, wenn ich hier etwas Ruhe habe. Montag morgen ist dafür schlecht geeignet.
Gruß
Kai

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige