Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Range () Variablen setzen und aufrufen als .hidden

Forumthread: Range () Variablen setzen und aufrufen als .hidden

Range () Variablen setzen und aufrufen als .hidden
14.10.2024 09:57:18
Lars
Vorab, bin Neuling im VBA Bereich habe aber dank einiger Beiträge hier schon vieles bisher toll lösen können, Danke für diese tolle Informationsquelle und Dank auch an die Wissenenden die bereitwillig Ihre Erfahrungen teilen.

Meine aktuelle Aufgabenstellung / Problemsituation
Ich habe eine Execel Daei mit einem Modul und darin diverse Macros. Für diverse Copier und ein/Einblendevorgänge möchte ich immer wieder die gleichen Spalten einblenden oder kopieren. Hierfür nutze ich die Codezeilen mit Range ("...") Da ich aber mittlerweise an die 110 Spalten habe würde ich ich gerne in den Makros auf zentral benannte Rage Bereiche zurückgreifen.

Wie kann ich einen Range Bereich setzen asl VAriable und wie rufe ich diesen wieder auf? Meine Versuche schlagen zZ alle fehl.




Sub variablenwerte_setzen()
Dim SPALTEN_FUNKTIONEN As Range
Set SPALTEN_FUNKTIONEN = "CZ:DI"
End Sub


Sub test_funktionsspalten_an()
Call Blattschutz_aus
Range(SPALTEN_FUNKTIONEN) .EntireColumn.Hidden = False
Call Blattschutz_an
End Sub



Wo liegt der Gedankenfeheler?

Danke Euch
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Range () Variablen setzen und aufrufen als .hidden
14.10.2024 10:03:29
Onur
Eine Variable ist nur in der Sub gültig, in der sie deklariert wurde - ausser man deklariert sie ganz oben (ausserhalb der Sub) als PUBLIC.

Public SPALTEN_FUNKTIONEN As Range


Sub variablenwerte_setzen()
Set SPALTEN_FUNKTIONEN = "CZ:DI"
End Sub
Sub test_funktionsspalten_an()
Call Blattschutz_aus
Range(SPALTEN_FUNKTIONEN).EntireColumn.Hidden = False'KEIN Leerzeichen vor dem Punkt!
Call Blattschutz_an
End Sub

Noch besser wäre es, die Public-Variable in einem STANDARDMODUL zu deklarieren - dann ist sie im ganzen Workbook gültig.

Anzeige
AW: Range () Variablen setzen und aufrufen als .hidden
14.10.2024 10:09:04
Onur
Sorry - hab ich übersehen:

Set SPALTEN_FUNKTIONEN = Range("CZ:DI")
AW: Range () Variablen setzen und aufrufen als .hidden
14.10.2024 10:22:34
Onur
Wenn du aber flexibel bleiben willst, kannst du die Variable als Parameter an die zweite Sub übergeben und könntest sie von überall her aufrufen:

Sub variablenwerte_setzen() 'UND AUSBLENDEN   

Dim SPALTEN_FUNKTIONEN As Range
Set SPALTEN_FUNKTIONEN = Range("CZ:DI")
Call test_funktionsspalten_an(SPALTEN_FUNKTIONEN)'Aufruf der zweiten Sub
End Sub
Sub test_funktionsspalten_an(RNG as Range)
Call Blattschutz_aus
Range(RNG).EntireColumn.Hidden = False'KEIN Leerzeichen vor dem Punkt!
Call Blattschutz_an
End Sub
Anzeige
AW: Range () Variablen setzen und aufrufen als .hidden
14.10.2024 10:25:10
Onur
Oder ohne Variable:

Sub variablenwerte_setzen() 'UND AUSBLENDEN   

Call test_funktionsspalten_an(Range("CZ:DI"))'Aufruf der zweiten Sub
End Sub
Sub test_funktionsspalten_an(RNG as Range)
Call Blattschutz_aus
Range(RNG).EntireColumn.Hidden = False'KEIN Leerzeichen vor dem Punkt!
Call Blattschutz_an
End Sub
Anzeige
AW: Range () Variablen setzen und aufrufen als .hidden
14.10.2024 10:14:51
Lars
Ah - das hilft schon ein wenig weiter.
Du hattest erwähnt das eine Deklaration in einem Standardmodul besser wäre, Das verstehe ich vom Grundgedanken her - ich nun kann ich unter Module ja nur Module / Userform / Klassenmodule einfügen . Wo sollte ich dann die Deklarationen einfügen?
AW: Range () Variablen setzen und aufrufen als .hidden
14.10.2024 10:16:50
Onur
"ich nun kann ich unter Module ja nur Module / Userform / Klassenmodule einfügen" - Das ERSTE (Module) ist ein Standardmodul.
Anzeige
AW: Range () Variablen setzen und aufrufen als .hidden
14.10.2024 10:06:52
Ulf
Hi,
variabel sollten dann die String sein
~


'Private evtl.
public SPALTEN As Range

sub test
call variablenwerte_setzen("CZ:DI")
call test_funktionsspalten_an
end sub

Sub variablenwerte_setzen(byval strSpalten as string)
Set SPALTEN = Range(strSpalten)
End Sub

Sub test_funktionsspalten_an()
Call Blattschutz_aus
SPALTEN.EntireColumn.Hidden = False
Call Blattschutz_an
End Sub

hth
Ulf
Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige