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

Excel Spalte ausblenden Wenn

Excel Spalte ausblenden Wenn
05.07.2016 11:54:27
Jan
Hi,
Ich suche nach einem VBA-Code der mir folgendes ermöglicht. Wenn in Zelle O20 GER30 oder UK100 oder USAInd oder JP225 steht, dann möchte ich die Spalten U bis Z ausgeblendet haben. Kann mir jemand helfen? Das habe ich derzeit zustande gebracht :(

Sub Test2()
If Range("O20") = "GER30;UK100;USAInd;JP225" Then
Columns("U:Z").EntireColumn.Hidden = True
End If
If Range("O20") = "LCrude;Gold;Copper" Then
Columns("S:T;W:Z").EntireColumn.Hidden = True
End If
If Range("O20") = "Silver;USDInd" Then
Columns("S:V;Y:Z").EntireColumn.Hidden = True
End If
If Range("O20") = "AUD;CAD;CHF;GBP;JPY;NZD;USD" Then
Columns("S:X").EntireColumn.Hidden = True
End If
End Sub

Jedoch wird weder etwas ausgeblendet noch eingeblendet.
Vielen Dank für eure Mühe!

27
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel Spalte ausblenden Wenn
05.07.2016 12:30:41
ChrisL
Hi Jan
Mehrere Bedingungen kannst du nicht einfach mit Strichpunkt verbinden. Wenn dann...
If Range("O20") = "x" Or Range("O20") = "y" Or Range("O20") = "z" Then
Schöner geht es aber mit einer Select Case Anweisung
Sub Test2()
With ActiveSheet
Select Case .Range("O20")
Case "GER30", "UK100", "USAInd", "JP225"
.Columns("U:Z").EntireColumn.Hidden = True
Case "LCrude", "Gold", "Copper"
.Columns("S:T").EntireColumn.Hidden = True
.Columns("W:Z").EntireColumn.Hidden = True
'usw.
End Select
End With
End Sub

cu
Chris

Anzeige
AW: Excel Spalte ausblenden Wenn
05.07.2016 13:49:10
Jan
Hi,
erstmal vielen Dank für die prompte Antwort. Leider funktioniert es nicht richtig. Wenn ich in O20 bspw. Silver ausgewählt habe und den Code eingebe - bleiben die Spalten, egal was ich auch anklicke. D.h. wenn ih jetzt bspw. GER30 auswähle bleiben die Spalten von Silber.
Sub ausbl()
With ActiveSheet
Select Case .Range("O20")
Case "GER30", "UK100", "USAInd", "JP225"
.Columns("U:Z").EntireColumn.Hidden = True
Case "LCrude", "Gold", "Copper"
.Columns("S:T").EntireColumn.Hidden = True
.Columns("W:Z").EntireColumn.Hidden = True
Case "Silver", "USDInd"
.Columns("S:V").EntireColumn.Hidden = True
.Columns("Y:Z").EntireColumn.Hidden = True
Case "AUD", "CAD", "CHF", "GBP", "JPY", "NZD", "USD"
.Columns("S:X").EntireColumn.Hidden = True
End Select
End With
End Sub

Anzeige
AW: Excel Spalte ausblenden Wenn
05.07.2016 15:47:52
ChrisL
Hi Jan
Wenn ich richtig verstehe, am Anfang vom Code alles einblenden.
.Columns("S:Z").EntireColumn.Hidden = False
cu
Chris

AW: Excel Spalte ausblenden Wenn
05.07.2016 16:03:23
Jan
Hi,
keine Ahnung wo das hin muss. Schau mal so soll das Aussehen.
Userbild
Wenn ich nun bei Asset per Dropdown "AUD" wähle sollen nur die Spalten Y und Z zu sehen sein. Oder wenn ich "Lcrude" auswähle sollen nur die Spalten U und V auszuwählen sein.
BG Jan

AW: Excel Spalte ausblenden Wenn
05.07.2016 16:04:29
Jan
Hi,
keine Ahnung wo das hin muss. Schau mal so soll das Aussehen.
Userbild
Wenn ich nun bei Asset per Dropdown "AUD" wähle sollen nur die Spalten Y und Z zu sehen sein. Oder wenn ich "Lcrude" auswähle sollen nur die Spalten U und V zu sehen sein.
BG Jan

Anzeige
AW:verbundene Zellen?
05.07.2016 17:44:14
MB12
Hallo Jan,
das ist immer das Problem, wenn man keine Beispieldatei hochlädt - die Helfer gehen in die falsche Richtung.
Ich vermute mal, dass das Problem an den verbundenen Zellen liegt. Dann könntest du evt. mit "like" arbeiten. Details eher von den VBA-Kennern
Gruß, Margarete

AW: AW:verbundene Zellen?
05.07.2016 17:52:45
Jan
Sry ich kann leider keine .xlsm hochladen.

AW: AW:verbundene Zellen?
05.07.2016 18:42:30
ChrisL
Und ich kann leider keine Dateien nachbauen resp. Bilder abschreiben ;)
Inzwischen verstehe ich leider gar nicht mehr wo das Problem liegt. Ob du ein Change-Ereignis bräuchtest, ob du die Codezeile nicht einarbeiten kannst, ob verbundene Zellen das Problem sind oder das Makro einfach das Falsche macht. Es ist schönes Wetter und ich mache dann mal Feierabend...

Anzeige
AW: AW:verbundene Zellen?
05.07.2016 18:49:44
Jan
Hi,
okay anscheind habe ich ein bisschen wirres Zeug geredet :)
Der Code sieht an sich sehr gut aus, jedoch werden nicht die Spalten geöffnet die geöffnet werden sollen und es werden nicht die Spalten geschlossen die geschlossen werden sollen. Hier nochmal der Code:
Sub ausbl()
With ActiveSheet
Select Case .Range("O20")
Case "GER30", "UK100", "USAInd", "JP225"
.Columns("U:Z").EntireColumn.Hidden = True
Case "LCrude", "Gold", "Copper"
.Columns("S:T").EntireColumn.Hidden = True
.Columns("W:Z").EntireColumn.Hidden = True
Case "Silver", "USDInd"
.Columns("S:V").EntireColumn.Hidden = True
.Columns("Y:Z").EntireColumn.Hidden = True
Case "AUD", "CAD", "CHF", "GBP", "JPY", "NZD", "USD"
.Columns("S:X").EntireColumn.Hidden = True
End Select
End With
End Sub
Nun weiß ich leider nicht, wo ich
.Columns("S:Z").EntireColumn.Hidden = False
einfügen muss damit der Code Ordnungsgemäß funktioniert. Danach könnte ich auch ausschließen ob es an den verbundenen Zellen liegt oder ein anderes Problem vorliegt.
BG Jan und es hat keine Eile

Anzeige
AW: AW:verbundene Zellen?
05.07.2016 18:59:14
ChrisL
Hi Jan
Ganz kurz bin ich noch da ;)
Probiere mal...
Sub ausbl()
With ActiveSheet
.Columns("S:Z").EntireColumn.Hidden = False
Select Case .Range("O20")
Case "GER30", "UK100", "USAInd", "JP225"
.Columns("U:Z").EntireColumn.Hidden = True
Case "LCrude", "Gold", "Copper"
.Columns("S:T").EntireColumn.Hidden = True
.Columns("W:Z").EntireColumn.Hidden = True
Case "Silver", "USDInd"
.Columns("S:V").EntireColumn.Hidden = True
.Columns("Y:Z").EntireColumn.Hidden = True
Case "AUD", "CAD", "CHF", "GBP", "JPY", "NZD", "USD"
.Columns("S:X").EntireColumn.Hidden = True
End Select
End With
End Sub
Evtl. musst du noch True in False und False in True umtauschen.
cu
Chris

Anzeige
AW: AW:verbundene Zellen?
05.07.2016 19:00:46
Michael
Hi,
wieso nicht? Wir können das alle, z.B. die hier: https://www.herber.de/bbs/user/106779.xlsm
Das Makro sucht in S:Z nach dem Begriff aus O20 und blendet alle Spalten außer der gefundenen aus:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
If Target.Address = "$O$20" Then
Application.ScreenUpdating = False
Range("S18:Z18").EntireColumn.Hidden = False
Set c = Range("R18:Z19").Find(What:=Target.Value, After:=Range("R18"), LookIn:=xlValues, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
If Not c Is Nothing Then
Range("S18:Z18").EntireColumn.Hidden = True
c.Resize(, 2).EntireColumn.Hidden = False
Else
MsgBox "Begriff nicht gefunden"
Range("S18:Z18").EntireColumn.Hidden = False
End If
End If
End Sub
Schöne Grüße,
Michael

Anzeige
AW: AW:verbundene Zellen?
05.07.2016 19:08:37
ChrisL
Hi
Elegante Lösung mit Find.
Devisen fasst verschiedene Währungen zusammen, darum würde ich vorschlagen:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
If Target.Address = "$O$20" Then
Application.ScreenUpdating = False
Range("S18:Z18").EntireColumn.Hidden = False
Set c = Range("R18:Z19").Find(What:=Target.Value, After:=Range("R18"), LookIn:=xlValues, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
If Not c Is Nothing Then
Range("S18:Z18").EntireColumn.Hidden = True
c.Resize(, 2).EntireColumn.Hidden = False
Else
Range("S18:X18").EntireColumn.Hidden = True
End If
End If
End Sub
cu
Chris

Anzeige
aha,
05.07.2016 19:25:25
Michael
Hi,
danke.
Guter Vorschlag.
Mich wurmt, daß .find anscheinend nicht in ausgeblendeten Spalten sucht: oder ist mir da eine Option entgangen?
Grüße,
Michael

AW: aha,
06.07.2016 08:27:20
ChrisL
Hi Michael
Ich glaube nicht, dass es eine Option ist. Alternative Match/Vergleich oder mit Schleife.
Bin aber auch nicht der Profi.
cu
Chris

AW: aha,
06.07.2016 09:03:54
Jan
Guten Morgen,
erstmal vielen Dank, der Code funktioniert auch soweit. Nur habe ich jetzt noch ein Problem und zwar "USDIND" und "USD". Wenn ich "USD" bei Asset auswähle erscheinen die Spalten von "USDIND". Kann man dieses Porblem ohne eine Umbenenung umgehen?
BG JAN

Anzeige
mit "Trennzeichen"
06.07.2016 13:14:53
Michael
Hi Jan,
das ist so eine Sache: die Suche muß ja mit "xlPart" durchgeführt werden, weil mehrere Begriffe in den Zellen stehen.
Am einfachsten ist ein Leerzeichen nach JEDEM Begriff (auch nach dem letzten!), dann sieht die Suche so aus:
xxx.Find(What:=Target.Value & " ", usw.

Damit ist USD und USDIND erschlagen; falls auch der Fall USD und INDUSD vorkommen sollte, machst Du auch vor den 1. Begriff ein Leerzeichen und suchst so:
xxx.Find(What:=" " & Target.Value & " ", usw.
Schöne Grüße,
Michael

Nachtrag
06.07.2016 13:19:19
Michael
Hi,
da fällt mir noch was ein.
Man könnte in der Liste noch den Begriff "Alle" unterbringen und das Makro so ergänzen:
   Range("S18:Z18").EntireColumn.Hidden = False
If Target.Value = "Alle" Then Exit Sub ' ************
Set c = Range("R18:Z19").Find ' usw.
Ciao,
Michael

AW: .Match findet alles 1., .Find nur Sichtbares! orT
06.07.2016 15:23:43
Jan
Hi,
es funktioniert jetzt. Ich habe einfach darauf geachtet, dass kein Wort doppelten vorhanden ist.
Vielen Dank für eure Mühe.
BG

Na, denn iss ja jut... owT
06.07.2016 15:41:26
Luc:-?
:-?

Danke, Luc :-?
06.07.2016 18:07:15
Michael

Bitte sehr! ;-) owT
07.07.2016 00:36:53
Luc:-?
:-?

nochmal kurz
07.07.2016 12:57:08
Michael
Hi Luc:-?,
ich habe mir nochmal die Herber-Doku über .find angesehen und nix dazu gesehen...
Aber wenn ich das vor ein paar Monaten gewußt hätte, hätte ich mir mit einer Geschichte leichter getan, wo es darum ging, den "interessanten" Datenbereich zu ermitteln, bei dem ausgeblendete Spalten nicht berücksichtigt werden sollten: dann hätte es .find (*,...) getan.
Schöne Grüße,
Michael

Ja, vor mehreren Jahren haben wir mal drüber ...
08.07.2016 02:30:01
Luc:-?
…diskutiert und ich hatte das dann getestet, wobei es zum genannten Ergebnis kam, Michael.
Übrigens, hast du den Link zu deinem HTML-Bsp Tab-in-Tab noch parat? Mit der doofen „Guggl“-RECHERCHE finde ich das (zumindest nachts) nicht mehr… :-|
Gruß, Luc :-?

Datei anbei
08.07.2016 13:23:35
Michael
Hi,
heißt bei mir "TabelleOhneKoepfe" vom 7.3.: den Link habe ich auch nicht mehr gefunden, habe ab 5.3. bis 8.3. alles abgegrast.
War wohl die: https://www.herber.de/bbs/user/106861.htm, lt. Quelltext zwei tables ineinander.
Sag mal, nebenbei zur Sicherheit: man sollte doch auf der sicheren Seite sein, wenn man (als Helfer) quasi eine immer geöffnete Datei hat, die eine heruntergeladene via Makro mit enableevents=false, readonly und updatelinks=false öffnet, oder? Dann kann man sich in Ruhe ansehen, ob ein blödes open-Makro drin ist oder sonst ein Mist, bevor man sich damit beschäftigt.
Das ist ja in ein paar Minuten programmiert, aber wie bekomme ich den Dateinamen möglichst schnell rein? Via API die zuletzt gespeicherte Datei im Ordner xy auslesen? Dateinamen aus Explorer kopieren?
Obwohl: getopenfilename sollte es ja eigentlich tun, aber nett wäre es, wenn der dann gleich nach Datum sortiert wäre - aber der übernimmt das sowieso aus den Ordner-Einstellungen, oder?
Ok, ich denke laut und gebe mir die Antworten selbst...
Gute Zeit,
Michael

Danke, ...
09.07.2016 00:30:41
Luc:-?
…Michael;
unter Xl14/2010 erhalte ich stets 1-2 Warnungen, wenn eine heruntergeladene Datei gleich öffnet:
1. zur Bearbeitbarkeit; unsicher, weil aus Internet;
2. falls VBA-Code enthalten, Aktivierung desselben → ja/nein;
…und außerdem ist sie stets schreibgeschützt. Das sollte bei dir auch so sein!
Was passiert, wenn'ne Wb_Open-Routine enthalten ist, habe ich noch nicht feststellen können, da so etwas entweder noch nicht vorkam oder ich nicht darauf geachtet hatte. Richtigerweise müsste dann die 2.Frage kommen, bevor die Datei geöffnet wird. Wenn nicht, wird diese Routine sicherlich nicht ausgeführt und man muss das ggf im Nachhinein tun.
Ich glaube, ich habe mal so etwas hochgeladen, aber wahrscheinlich war damals diese Routine noch nicht oder nicht in der End­form angelegt, sonst wäre sie uU nicht ladbar gewesen, wenn dieses Pgm sofort ausge­führt worden wäre, was darauf hindeuten könnte, dass VBA normaler­weise stets blockiert wird. Diese Datei (.xls!) war übrigens nur mit aktivierten Pgmm sinnvoll, und nur bis XL9-11/2k+0…3 fehlerfrei nutzbar.
Luc :-?

naja, VBA aktivieren...
09.07.2016 18:03:03
Michael
Luc :-?,
ist ja seit XL 2003 so lästig, es geht ja nur noch AUS mit Nachfrage und nicht mehr EIN mit Nachfrage.
Bei meiner Maschine mit W7/Xl2013 werd ich immer wahnsinnig, wie lange das dauert, außerdem kann ich mir anscheinend Makros NICHT ansehen, bevor ich auf "bearbeiten" gehe: also entweder in LO öffnen und nachsehen (das dauert mir zu lang) oder "friß und stirb, wenn du Pech hast".
Vista/XL2007 macht einfach ohne G'schieß: ist halt nicht ungefährlich.
Naja, der Schuster hat die schlechtesten Schuh...
Schönes Wochenende,
Michael

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige