Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1484to1488
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

Übergabe an Sub

Übergabe an Sub
04.04.2016 09:23:12
Marc

Hallo,
ich habe ein Problem:
Hier definiere Ich per DIM und SET ein Workscheet:


    Dim Datei As Workbook
Dim B_175 As Worksheet
Set Datei = Workbooks("Adress-Export.xlsm")
Set B_175 = Datei.Worksheets("17,5 12,5 7,5")
und dann will ich das an ein
Subprogramm übergeben:
So gehts:

    Call HEK(Datei.Worksheets("17,5 17,5 17,5"))

So nicht: (ByRev unverträglich)

    HEK B_175

oder

    Call HEK(B_175)
das ist das SUBProgramm:

Sub HEK(Transfer As Worksheet)
Transfer.Activate
End Sub

Ich verstehe den Unterschied nicht.
Das per SET definierte Tabellenblatt benutze ich an vielen Stellen vorher schon problemlos, aber wenn ich es an ein Sub übergeben will, dann streikt Excel/VBA?
Frage: Wie kann ich hier das per SET definierte korrekt übergeben.
Würde mich sehr über Hilfe freuen.

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

Betreff
Datum
Anwender
Anzeige
AW: Übergabe an Sub
04.04.2016 09:26:39
Marc
Korrektur:
die Call Funktion lautet an der Stelle natürlich so:
Call HEK(Datei.Worksheets("17,5 12,5 7,5"))

AW: Übergabe an Sub
04.04.2016 09:42:59
ChrisL
Hi Marc
Welche Fehlermeldung bekommst du?
Folgendes funktioniert bei mir problemlos:
Sub test()
Dim Datei As Workbook
Dim B_175 As Worksheet
Set Datei = ThisWorkbook
Set B_175 = Datei.Worksheets("17,5 12,5 7,5")
Call HEK(B_175)
End Sub

Sub HEK(Transfer As Worksheet)
Transfer.Activate
End Sub

Der Tabellenname (ich nehme an, es handelt sich nur um eine Tabelle), muss natürlich übereinstimmen.
cu
Chris

Anzeige
AW: Übergabe an Sub
04.04.2016 09:55:33
Marc
Hallo Chris,
ich bekomme beim Kompilieren:
Argumenttyp byRef unverträglich
Userbild

AW: Übergabe an Sub
04.04.2016 09:57:58
Marc
Kontrollkästchen vergessen

AW: Übergabe an Sub
04.04.2016 10:16:29
ChrisL
Hi Marc
Kann es sein, dass du nicht sauber (wie im ersten Beitrag beschrieben) deklarierst.
z.B.
Dim B_175, B_150 As Worksheet
B_175 ist in diesem Fall Variant.
Im zur Verfügung gestellten Code-Teil liegt der Fehler jedenfalls nicht.
cu
Chris

AW: Übergabe an Sub
04.04.2016 10:43:26
Marc
HAllo Chris,
vielen Dank für Deine Hilfe.
Anbei die komplette Deklaration:

Dim Datei As Workbook
Dim Blatt, B_175, B_150, B_125, B_100, B_075, B_050, B_DZB, B_000 As Worksheet
Set Datei = Workbooks("Adress-Export.xlsm")
Set Blatt = Datei.Worksheets("Works")
Set B_DZB = Datei.Worksheets("17,5 17,5 17,5")
Set B_175 = Datei.Worksheets("17,5 12,5 7,5")
Set B_150 = Datei.Worksheets("15,0 10,0 5,0")
Set B_125 = Datei.Worksheets("12,5 7,5 3,0")
Set B_100 = Datei.Worksheets("10,0 6,5 3,0")
Set B_075 = Datei.Worksheets("7,5 5,0 0,0")
Set B_050 = Datei.Worksheets("5,0 2,5 0,0")
Set B_000 = Datei.Worksheets("0,0 0,0 0,0")

Ist daran etwas falsch ?

Anzeige
damit ist nur ...
04.04.2016 10:46:13
Rudi Maintaire
... B_000 als Worksheet deklariert. Alles andere ist Variant.
Gruß
Rudi

AW: Übergabe an Sub
04.04.2016 11:15:24
Marc
HAllo Chris,
vielen Dank für Deine Hilfe.
Anbei die komplette Deklaration:

Dim Datei As Workbook
Dim Blatt, B_175, B_150, B_125, B_100, B_075, B_050, B_DZB, B_000 As Worksheet
Set Datei = Workbooks("Adress-Export.xlsm")
Set Blatt = Datei.Worksheets("Works")
Set B_DZB = Datei.Worksheets("17,5 17,5 17,5")
Set B_175 = Datei.Worksheets("17,5 12,5 7,5")
Set B_150 = Datei.Worksheets("15,0 10,0 5,0")
Set B_125 = Datei.Worksheets("12,5 7,5 3,0")
Set B_100 = Datei.Worksheets("10,0 6,5 3,0")
Set B_075 = Datei.Worksheets("7,5 5,0 0,0")
Set B_050 = Datei.Worksheets("5,0 2,5 0,0")
Set B_000 = Datei.Worksheets("0,0 0,0 0,0")

Ist daran etwas falsch ?

Anzeige
AW: Übergabe an Sub
04.04.2016 11:19:06
ChrisL
Hi Marc
Siehe Antwort Rudi.
Richtig wäre...
Dim Blatt As Worksheet, B_175 As Worksheet, B_150 As Worksheet, B_125 As Worksheet, B_100 As Worksheet, B_075 As Worksheet, B_050 As Worksheet, B_DZB As Worksheet, B_000 As Worksheet
cu
Chris

AW: Übergabe an Sub mit ByVal
04.04.2016 10:41:16
Rudi Maintaire
Hallo,
falls du nicht sauber deklariert hast:
     Sub HEK(ByVal Transfer As Worksheet)
Transfer.Activate
End Sub
Gruß
Rudi

AW: Übergabe an Sub mit ByVal
04.04.2016 11:37:46
Marc
Hallo Rudi,
das ist die Lösung, nun läuft es.
Vielen Dank an Chris und Rudi.

AW: Übergabe an Sub
04.04.2016 13:38:58
snb
Aber....
Warum so kompliziert ?
Sub M_snb()
M_snb_009 Sheets("sheet3")
End Sub
Sub M_snb_009(it)
it.Activate
End Sub

Anzeige
AW: Übergabe an Sub
04.04.2016 14:08:49
Daniel
Wahrscheinlich, weils auf Dauer einfacher ist, nur B_175 zu schreiben statt ständig: Workbooks("Adress-Export.xlsm").Worksheets("17,5 17,5 17,5")
man kann doch davon ausgehen, dass der Code etwas umfangreicher ist als das gezeigte Beispiel.
ausserdem lässt sich der Code bei Verwendung von Variablen leichter abändern, falls ich der zugehörige Datei- oder Workbookname mal ändert, dann muss man nämlich nur einmalig die Variablenzuweisung ändern statt und nicht an mehreren Stellen die Echtbenennung (wobei es dann schnell passiert, dass man mal eine Stelle übersieht.)
Gruß Daniel

Anzeige
So wird's sein, ...
04.04.2016 18:34:47
Luc:-?
…Daniel;
während snb offensichtlich Einweg-Pgmm* auf Bastel-Niveau liebt… ;-))
* Ganz im Sinne gewisser (Automatisierungs-)MVPs…
Gruß, Luc :-?
Besser informiert mit …

AW: So wird's sein, ...
05.04.2016 12:16:00
snb
Ein sehr konstruktiver Beitrag zum 'thread': chapeau

Nicht ärgern, das konnte ich mir nicht ...
10.04.2016 02:06:59
Luc:-?
…verkneifen, snb;
du weißt schon warum…! ;-)
Luc :-?

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige