Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
368to372
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
368to372
368to372
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Funktion für mehrere Subs verwenden

Funktion für mehrere Subs verwenden
27.01.2004 22:13:06
Christian Becskei
Hi Leute,
Nach dem ich nicht wirklich VBA programmieren kann und jetzt an einem Basic scheitere bitte ich um kurze Unterstützung.
Ich habe eine Funktion geschrieben, die ich in anderen Funktionen immer wieder brauche. Um nun diese Funktion nicht in alle anderen Funktionen immer wieder zu integrieren und die Variablen entsprechend lokal zu definieren bzw. ihnen immer wieder andere Namen zu geben, möchte ich die Funktion aus den anderen Funktionen aufrufen und den Wert zurückgeben,
Meine immer wieder benutzte Funktion sieht wie folgt aus

Sub Search_rangeDef()
Dim numberRows As Variant
numberRows = 0
Dim rowIndex As Variant
rowIndes = 1
For rowIndex = 1 To 1000
If Sheets("Auswertungsdaten").Cells(rowIndex, 1).Value = "" Then
Else
numberRows = numberRows + 1
End If
Next rowIndex
Dim rangeDef As Variant
rangeDef = "A1:D" & numberRows
End Sub

Nun möchte ich zum Beispiel in einer anderen Funktion diesen "rangeDef" Wert weiter verwenden.
Zum Beispiel:


Sub Autofilter_Date()
Sheets("Auswertungsdaten").Select
'generate advanced filter
Sheets("Kontodaten").Range(rangeDef).AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("F15:I16"), CopyToRange:=Range("A1:D1"), Unique:=False
Create_Pivottable
End Sub

Leider habe ich keine Ahnung wie ich in die untere Funktion in die obere integrieren muss, damit ich den Wert "rangeDef" verwenden kann.
Vielleicht kann mir jemand einen Tipp geben.
Ich muss in dieser Arbeitsmappe X Pivottabellen erzeugen und dafür muss ich bei jeder diesen Suchbereich variable bestimmen, daher benötige ich so of diesen "rangeDef" Wert aus der oberen Sub.
Ich bedanke mich schon jetzt für eure Hilfe.
mfg
Christian

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Funktion für mehrere Subs verwenden
27.01.2004 22:20:24
Jens
Hi
Füge ein Modul ein.
Da rein das:
Function rangeDef()
Dim numberRows As Variant
Dim rowIndex As Variant
numberRows = 0
rowIndes = 1

For rowIndex = 1 To 1000

If Sheets("Auswertungsdaten").Cells(rowIndex, 1).Value = "" Then
Else
numberRows = numberRows + 1
End If

Next rowIndex


rangeDef = "A1:D" & numberRows

End Sub
Wenn es nur darum geht die nächste freie Zelle zu finden dann so
Function rangeDef()
rangeDef = "A1:D" & Sheets("Auswertungsdaten").Range("A65536").End(xlup).Row +1
End Sub
Gruß Jens
Anzeige
AW: Funktion für mehrere Subs verwenden
27.01.2004 22:21:41
Jens
PS: der Aufruf geschied dann wie von dir schon geschreiben.
Sheets("Kontodaten").Range(rangeDef). ....
AW: Funktion für mehrere Subs verwenden
27.01.2004 22:43:52
Christian Becskei
Hi Jens,
Danke für deine Hilfe.
Eigentlich funktioniert die Geschichte, aber mein VBA gibt mir immer einen Laufzeitfehler 1004 aus, den ich nicht verstehe.
Über die Funktion erhalte ich eigentlich den Richtigen Adressbereich (mittels MsgBox geprüft), aber dann wirft er mich im AdvancedFilter mit dem Fehler auf.
Blöd dass ich noch nicht weiß wieso.
mfg
Christian
AW: Funktion für mehrere Subs verwenden
27.01.2004 22:52:10
Jens
Hi
Mir waren noch zwei Fehler unterlaufen, vielleicht hast du sie schon selbst bemerkt:

Function rangeDef()
rangeDef = "A1:D" & Range("D65536").End(xlUp).Row + 1
End Function



Sub test()
Range(rangeDef).Activate
End Sub

Versuch mal den Range direkt in deiner Funktion einzugeben und Teste es dann mal.
Manchmal geht der gewünschte Bereich nicht zu Filtern.
Gruß Jens
Anzeige
AW: Funktion für mehrere Subs verwenden
27.01.2004 22:58:40
Christian Becskei
Hi Jens,
Danke
Die Geschichte mit dem ("Dxxx") ist mir aufgefallen.
Aber bei mir funtktionierte die Bereichsfilterung immer.
Wo meinst du dass diese nicht immer funktionieren würde?
Danke
mfg
Christian
AW: Funktion für mehrere Subs verwenden
27.01.2004 22:55:08
Christian Becskei
Danke Jens,
der Tipp mit der kurzen Variante ist Spitze.
Vielen vielen Danke
mfg
Christian
PS: der Laufzeitfehler ist Geschichte (ist nur bei meiner langen "rangeDef" Funktion aufgetreten. Dein Einzeiler war perfekt.
AW: Funktion für mehrere Subs verwenden
27.01.2004 22:43:46
K.Rola
Hallo,
ich muss gestehen, dass ich die Aktion nicht richtig verstehe. Kannst
du mir das mal bitte kurz erläutern?
Option Explicit

Private Function RangeDef() As String
Dim numberRows As Long, rowIndex As Long
numberRows = 0
For rowIndex = 1 To 1000
If Not Sheets("Auswertungsdaten").Cells(rowIndex, 1) = "" Then
numberRows = numberRows + 1
End If
Next rowIndex
RangeDef = "A1:D" & CStr(numberRows)
End Function


Gruß K.Rola
Anzeige
AW: Funktion für mehrere Subs verwenden
27.01.2004 22:47:25
Christian Becskei
Nun muss ich gestehen dass ich deine Frage nicht verstehe.
????
Sorry
mfg
Christian
AW: Funktion für mehrere Subs verwenden
27.01.2004 22:56:52
K.Rola
Hallo,
es wird geprüft, ob im Bereich A1:A1000 Leerzellen sind und wenn nicht,
wird der Zähler erhöht. Was soll damit erreicht werden? Wenn z.B. eine
Leerzeile dabei sein sollte, wird die letzte Zeile nicht mitgefiltert.
Das ist es, was ich nicht verstehe. Oder gehts darum, die letzte
Zelle mit Inhalt zu finden?
Gruß K.Rola
AW: Funktion für mehrere Subs verwenden
27.01.2004 23:01:15
Christian Becskei
Hi K.Rola
mir ging es in der Funktion die letzte Zeile mit Inhalt zu finden, da ich darauf meine Range für einen AdvanceFilter suchen bzw. definieren wollte.
Meine Funktion ist allerdings "einfach" und umständlich. Mir gefällt die Variante von Jens (der Einzeiler) besser, obwohl ich ihn noch nicht ganz verstehe, aber dafür fehlen mit die Programmier Basics.
mfg
Christian
Anzeige
AW: Funktion für mehrere Subs verwenden
27.01.2004 23:07:41
K.Rola
Hallo,
manchmal ist es einfacher, verbal zu beschreiben, worums geht, du
willst schlicht die letzte gefüllte Zelle in Spalte A wissen.
Das macht der Einzeiler von Jens.
Das ist aber beim Spezialfilter nichtmal nötig, der findet die letzte
Zelle allein.
[A:D].AdvancedFilter ......
reicht völlig, das ist die Function nicht nötig.
Gruß K.Rola
AW: Funktion für mehrere Subs verwenden
27.01.2004 23:10:41
Christain Becskei
Du meinst mein ganzes Hin und Her ist eigentlich für die Katz?
Wie würde denn dann mein AdvancedFilter aussehen?
Sheets("Kontodaten").Range(rangeDef).AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("F15:I16"), CopyToRange:=Range("A1:D1"), Unique:=False
etwa so:
Sheets("Kontodaten").[A:D].AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("F15:I16"), CopyToRange:=Range("A1:D1"), Unique:=False
oder wie?
Danke
Christian
Anzeige
AW: Funktion für mehrere Subs verwenden
27.01.2004 23:21:22
K.Rola
Hallo,
im Prinzip ja, aber....
Du hattest im ursprünglichen Code Sheets("Auswertungsdaten").Select
Du filterst im Sheets("Kontodaten"), was nicht ganz klar ist,
wohin kopiert werden soll, nach deiner Konstellation ins Blatt
"Auswertungsdaten". Wenn das so richtig ist, ist dein letzter Code ok.
Gruß K.Rola
AW: Funktion für mehrere Subs verwenden
27.01.2004 23:28:15
Christian Becskei
Hi,
Danke.
Mein erstes Sheet (Auswertungsdaten) war für mich zum Testen, da sich die Zeilen in dem Sheet nicht geändert haben, konnte ich den Filter fertigstellen.
Nun nach dem dieser funktioniert, kann ich aus dem "richtigen" Sheet die Daten kopieren und das wären eben (Kontodaten).
Darin stehen die Kontoeinträge die ich über den AdvancedFilter sortiere, die sortierten Daten werden in das Sheet "Auswertungsdaten" kopiert und danach wird von dort die Pivottable in ein drittes Blatt generiert.
Könntest du mir nur verraten, nachdem ich die Funtkion jetzt getestet habe und diese funktioniert, wo die diesen Trick her hast?
Ich finde ihn absolut genial.
Danke
nochmals
mfg
Christian
Anzeige
AW: Funktion für mehrere Subs verwenden
27.01.2004 23:49:47
K.Rola
Hallo,
wann hat man was wo und vor allem, warum, gelernt? Ich programmiere
seit 4 Jahren beruflich u.a. mit Excel, da bleibt das eine oder andere
hängen.
Gruß K.Rola
AW: Funktion für mehrere Subs verwenden
27.01.2004 23:55:19
Christian Becskei
Hi,
du hast ja recht.
Ich bedanke mich aber trotzdem nochmals bei dir recht herzlich.
mfg
Christian

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige