Ich habe da mal wieder eine Frage an Euch. Für eine unserer Abteilungen
kreiere ich eine Exceltabelle mit diversen "Auswahlen", "Produkten" oder
"Versandmöglichkeiten".
Innerhalb dieser Überbegriffe hat es ein Auswahlverfahren. Als Beispiel für
"Versandmöglichkeiten" gibt es darunter die Auswahl für "Ja" oder "Nein".
Bsp.:
Nein - Post-Express
Ja - Normalversand
Nein - A-Post
Ja - B-Post
Ja - Nachnahme
Ich habe in einem Zellbereich nun die Formel erstellt =Wenn(Zelle
A1="ja";A2;"").
Im oben genannten Fall würde der Zellbereich dann so aussehen (wobei "..."
hier für eine leere Zelle steht).
...
Ja - Normalversand
...
Ja - B-Post
Ja - Nachnahme
In einem Dropdownfeld sollen nun diese drei Produkte zur Auswahl sein. Aber
ohne die Leerzeilen dazwischen. Ich habe zwar das Flag bei "leere Zellen
ignorieren" gesetzt, aber trotzdem sind auch die leeren Zeilen sichtbar. Ist
im Dropdownmenue nicht gerade ästhetisch.
Ich habe das ganze mal mit einem Zellbereich versucht, wo ich keine Formel
drinn hatte (also manuell eingegeben), so dass ich einen eventuellen Fehler
so ausschliessen kan. Brachte aber nix.
Ich arbeite mit Excel 2007 und 2003. Habe es auch bei beiden versucht.
Überall das Gleiche. Es spielt auch keine Rolle ob ich den Zellbereich im
Dropdownmenue "C3:C7" wähle oder diesen Bereich mit einem Namen versehe. :-(
Kann mir da einer helfen? Danke!
Gruess ond no en schöne Obig.
Harri
Hallo Härri,
da habe ich sogleich mehrere Verständnisprobleme.
Was hat die Formel =Wenn(Zelle A1="ja";A2;"") mit dem Dropdown zu tun?
Steht Nein - Post-Express in *einer* Zelle oder stehen beide Worte in
benachbarten Zellen?
Ist Ja bzw. Nein überhaupt nötig: ich meine, die Angabe z. B. Post-Espress
sollte klar genug sein.
Offensichtlich willst Du unterschiedliche Listen für die Gültigkeit
benutzen. In einer stehen z. B. nur Normalversand, B-Post und Nachnahme, in
der anderen möglicherweise alle Alternativen. Welche Liste verwandt wird,
wird in meinem Beispiel (s. u.) vom Inhalt der Zelle A1 gesteuert: A1=1 die
verkürzte Liste wie vorstehend, A1=2 die Liste aller Alternativen (oder
etwas anderes).
C1: Liste1 D1: Liste2
Unter diesen Überschriften stehen jeweils die Auswahlmöglichkeiten (C2:C4
Post-Express, B-Post, Nachnahme. Unterhalb D1 die andere Liste.
Für beide Listen die Namen der Überschriften vergeben
Gültigkeit
Formel ist: =WENN(A1=1;Liste1;Liste2)
--
Mit freundlichen Grüssen Eberhard
XP home XL 2000
Eberhard(punkt)W(punkt)Funke(at)t-online.de
Besten Dank erst mal für Dein Feedback. Sorry, aber ich habe mich da wohl
schon etwas zu wenig genau geäussert. Also versuche ich es nochmals.
Bei dem ganzen handelt es sich um ein Formular für unseren Verkauf. Er klärt
mit dem Kunden ab, welche Produkte, Versandarten, etc. für ihn in Frage
kommen. Dies wird dann entsprechend selektiert. Somit wären wir bei meinem
Formular beim ersten Auswahlverfahren (Ja /Nein) wo uns unser Verkauf
mitteilen kann, ob das für den Kunden genutzt wird oder nicht
(Schlüsselbegriffe).
Der andere Teil mit dem Dropdownmenue dient dann dazu, was wir am Ende für
den Kunden im Webtool vorbelegen sollen.
Obwohl die Schlüsselbegriffe und die Vorbelegung zwar grundsätzlich auch im
Webtool eingestellt werden können, benötigen wir dieses Excelformular, um den
Kunden erst mal überhaupt anlegen zu können. Wenn er dann angelegt wurde,
machen wir diese Vorbelegungen und Voreinstellungen. Das Excelformular ist
also die Anmeldung eines neuen Kunden für unser Webtool.
Ich hoffe, dass ich nicht (schon wieder ;-) ) zu kompliziert beschrieben habe.
Gruss Harri
es ist immer hilfreich, wenn man
1. auf konkrete Fragen konkrete Antworten gibt und
2. genau beschreibt, was wo steht und was wo stehen soll.
Ich reime mir Dein Vorhaben jetzt so zuammen:
In Spalte A, beginnend mit A1, kann jeweils Ja oder Nein eingeben werden.
In Spalte B stehen daneben Auswahlbegriffe. Beipiel:
Nein Post-Express
Ja Normalversand
Nein A-Post
Ja B-Post
Ja Nachnahme
Die Begriffe aus Spalte B, vor denen Ja steht - und nur diese! - , sollen
in eine Liste für Gültigkeit übernommen werden. Diese Liste soll ab C3
abwärts stehen.
Die einfachste Lösung scheint mir ein Makro zu sein:
Sub Gült_Liste()
Dim lngI As Long
Dim lngJ As Long
Range("C2").Value = "GListe"
Dim lngLZle As Long
lngLZle = 3
For lngI = 1 To 5
If Range("A" & lngI).Value = "Ja" Then
Range("C" & lngLZle).Value = Range("B" & lngI).Value
lngLZle = lngLZle + 1
End If
Next
End Sub
Den Eintrag "GListe" in C2 kannst Du dann gleich als Namen für die
Gültigkeitsliste verwenden.
> Ja - Normalversand
> ...
> Ja - B-Post
> Ja - Nachnahme
>
> In einem Dropdownfeld sollen nun diese drei Produkte zur Auswahl sein. Aber
> ohne die Leerzeilen dazwischen. Ich habe zwar das Flag bei "leere Zellen
> ignorieren" gesetzt, aber trotzdem sind auch die leeren Zeilen sichtbar. Ist
> im Dropdownmenue nicht gerade ästhetisch.
Dieser Haken hat nichts mit den Daten zu tun, sondern sagt das es
keine Fehlermeldung gibt wenn die Zelle leer ist.
BTW, wenn Du mal auf "Leere Zellen ignorieren" klickst und dann Shift-
F1 drückst, dann bekommst Du eine Hilfe direkt zu dieser Option.
In Anlehnung an Eberhards Beispiel wäre die nächste Stufe den
Gültigkeitsbereich direkt zu manipulieren:
--- schnipp ---
Option Compare Text
Sub Setze_Gültigkeit()
Dim S As String
'Letzten Eintrag in Spalte A
YMax = Range("A" & Rows.Count).End(xlUp).Row
S = ""
'Liste aus Spalte B zusammenstellen wenn A = Ja
For Y = 1 To YMax
If Range("A" & Y) = "Ja" Then _
S = S & Range("B" & Y) & ","
Next
'Das letzte , löschen
S = Mid(S, 1, Len(S) - 1)
'Gültigkeitsbereich von C1 festlegen
With Range("C1")
With .Validation
.Delete
.Add Type:=xlValidateList, Formula1:=S
.IgnoreBlank = True
.InCellDropdown = True
End With
End With
End Sub
--- schnapp ---
Andreas.
Hallo Harri,
>
> Die einfachste Lösung scheint mir ein Makro zu sein:
>
Flexibler bist Du mit folgender Lösung (Abwandlung von Excel-Formeln 43)
C3:
=WENN(ZEILE(A1)>ZÄHLENWENN(A:A;"Ja");"";INDEX(B:B;KKLEINSTE(WENN(A$1:A$1000<>"Nein";ZEILE($1:$1000));ZEILE(A1))))
Formel mit der Tastenkombination Shift+Strg+Enter abschließen
(Matrixformel) und bis C7 nach unten kopieren. Für C3:C7 Namen vergeben.
Die Liste passt sich automatisch Änderungen in der Spalte A an.
Ich habe beide Lösungen von Euch getestet. Beide haben mir gut gefallen.
Von der Endlösung her habe ich am Ende die Variante von Andreas gewählt, weil
es das ist, was ich als Endlösung gesucht habe.
Nochmals besten Dank an euch Beide!
Gruss Harri
Hab doch noch ein kleines Problem. Unter Excel 2007 funktioniert dies
tadellos. Mit Excel 2003 (oder älter) stolpert das Makro über diese Zeile:
S = Mid(S, 1, Len(S) - 1)
Wie kann ich dies lösen, dass dieses Makro sowohl unter Excel 2007 als auch
einer älteren Version läuft?
Gruss Harri
> Hab doch noch ein kleines Problem. Unter Excel 2007 funktioniert dies
> tadellos. Mit Excel 2003 (oder älter) stolpert das Makro über diese Zeile:
>
> S = Mid(S, 1, Len(S) - 1)
>
> Wie kann ich dies lösen, dass dieses Makro sowohl unter Excel 2007 als auch
> einer älteren Version läuft?
Hallo Harri,
ich hatte das Makro von Andreas paralle zu meinem laufen lassen: keine
Probleme.
Gruss Harri
Eine Frage hätte ich trotzdem noch. Sobald ich das Tabellenblatt schütze,
kommt der Debugger in der Zeile mit dem String
.Add Type:=xlValidateList, Formula1:=S
Hier mein angepasstes Makro:
'Letzten Eintrag in Spalte B
YMax = Range("B" & Rows.Count).End(xlUp).Row
S = ""
'Liste aus Spalte C zusammenstellen wenn B = Ja
For Y = 29 To 39
If Range("B" & Y) = "Ja" Then _
S = S & Range("C" & Y) & ","
Next
'Das letzte , löschen
S = Mid(S, 1, Len(S) - 1)
'Gültigkeitsbereich von C1 festlegen
With Range("E10")
With .Validation
.Delete
.Add Type:=xlValidateList, Formula1:=S
.IgnoreBlank = True
.InCellDropdown = True
End With
End With
Warum ist das so? Die Zelle E10 ist nicht gesperrt. Demnach müsste dort doch
reingeschrieben werden können. Schutz hin oder her. Beim Schützen des
Tabellenblattes habe ich versuchsweise auch das Flag bei "Zellen formatieren"
gesetzt. Hat nichts gebracht. Gibt es da ev. sonst noch etwas spezielles, das
ich hier beim Schützen beachten muss? Selbst wenn ich alles Flags setze, wird
diese Zeile markiert.
Habt Ihr da vielleicht eine Idee?
Ansonsten werde ich für das Ausführen des Makros halt einen "Schalter"
setzen, der den Schutz kurzfristig aufhebt.
Gruss Harri
Harri Märki schrieb am 14.01.2009
> Hallo allerseits
>
> Hab doch noch ein kleines Problem. Unter Excel 2007 funktioniert dies
> tadellos. Mit Excel 2003 (oder älter) stolpert das Makro über diese Zeile:
>
> S = Mid(S, 1, Len(S) - 1)
>
> Wie kann ich dies lösen, dass dieses Makro sowohl unter Excel 2007 als auch
> einer älteren Version läuft?
Drehe deine Arbeitsweise um:
Erstelle deine Anwendung in der ältesten Version in der sie letztlich auch
laufen soll, dann treten diese Probleme nicht auf.
Du hast, wenn die Mappe in einer älteren Version geöffnet wird, einen
gebrochenen Verweis in der Mappe (prüfe dies unter der älteren Version im
VBA-Editor unter Extras/Verweise auf 'nicht gefunden'). Lösche diesen nicht
gefundenen Verweis, dann sollte die Mappe auch in den älteren Version
laufen, ausser der Verweis ging auf eine Bibliohek, deren Inhalt Du
benötigst.
Dann bist Du beim Thema 'early binding'/'late binding' angelangt, das immer
dann auftritt, wenn Mappen unter verschiedenen Excel-Versionen laufen
sollen. Dazu gibt es im Netz und auch dieser NG hier viele Beispiele und
Erklärungen.
Mit freundlichen Grüssen
Thomas Ramel (@Laptop)
--
- MVP für Microsoft-Excel -
[Win XP Pro SP-2 / xl2000 SP-3]
> Eine Frage hätte ich trotzdem noch. Sobald ich das Tabellenblatt schütze,
> kommt der Debugger in der Zeile mit dem String
>
> .Add Type:=xlValidateList, Formula1:=S
>
> Hier mein angepasstes Makro:
>
> YMax = Range("B" & Rows.Count).End(xlUp).Row
Nur nebenbei: YMax brauchst Du doch bei *Deinem* Makro nicht mehr
> 'Gültigkeitsbereich von C1 festlegen <-- gemeint: E10
> With Range("E10")
> With .Validation
> .Delete
> .Add Type:=xlValidateList, Formula1:=S
> .IgnoreBlank = True
> .InCellDropdown = True
> End With
> End With
>
>
> Warum ist das so?
Weiß ich nicht; jedenfalls kannst Du eine Gültigkeit - auch manuell - nur
im ungeschützen Blatt einbauen. Du musst den Schutz erst aufheben, dann die
Gültigkeit einbauen und nachfolgend den Schutz wieder aktivieren
Ich gehe von folgender Situation aus:
E10 ist nicht gesperrt, der Blattschutz ist aktiviert.
Erste Zeile des Makro: ActiveSheet.unprotect
Letzte Zeile: activesheet.protect
Zu Deiner vorhergehenden Frage, dass Dein Makro über
"S = Mid(S, 1, Len(S) - 1)" stolpert: Hast Du das mit Deiner abgewandelten
Form probiert, und stand in B29:C39 überhaupt etwas?
Hallo Andreas,
dein Makro läuft einwandfrei. Mir fiel nur auf, dass es bei
enthaltenen Kommas die Aufteilung nich so druchführt, wie Excel es
sollte. Ist es machbar, dass man das Komma temoprär gegen ein z.B.
Unterstrich ("_") austauscht und bei erfolgter Zuordnung " .Add
Type:=xlValidateList, Formula1:=S " man den Unterstrich wieder durch
ein Komma ersetzt? Ich denke gerade bei Einsatz der Funktion
Gültigkeit bei Kunden-Adressstämmen (Beispiel: Müller AG, 12345 Groß-
Kleinstadt).
Ich hätte es selbst bereits getestet, wenn ich wüsste, wie ich die
Kommas des Variableninhalts von S durch Unterstriche ersetzen könnte.
Eine weitere Frage, die ich mir stelle ist, wieviel Einträge oder
wieviel Zeichen lang darf der Gültigkeitseintrag haben.
Kannst du oder ein anderer Excel-Experte mir weiterhelfen?
Gruß
Walter
> dein Makro läuft einwandfrei. Mir fiel nur auf, dass es bei
> enthaltenen Kommas die Aufteilung nich so druchführt, wie Excel es
> sollte. Ist es machbar, dass man das Komma temoprär gegen ein z.B.
> Unterstrich ("_") austauscht und bei erfolgter Zuordnung " .Add
> Type:=xlValidateList, Formula1:=S " man den Unterstrich wieder durch
> ein Komma ersetzt? Ich denke gerade bei Einsatz der Funktion
> Gültigkeit bei Kunden-Adressstämmen (Beispiel: Müller AG, 12345 Groß-
> Kleinstadt).
Nein, das geht nicht. Man könnte zwar durch ein simples
If Range("A" & Y) = "Ja" Then _
S = S & Replace(Range("B" & Y), ",", "_") & ","
das Komma tauschen, aber das muss dann so zugewiesen werden. Und damit
ist das Komma futsch. Hinterher (nach der Userauswahl) das Komma wieder
reinzumogeln, ging theoretisch wohl auch, das hat aber alles viel zu
viele Haken.
Die bessere Lösung ist die Liste in einen seperaten Bereich z.B. Spalte
AA zu kopieren und dann den Gültigkeitsbereich als Verweis anzugeben.
---schnipp---
Option Compare Text
Sub Setze_Gültigkeit()
'Letzten Eintrag in Spalte A
YMax = Range("A" & Rows.Count).End(xlUp).Row
'Liste aus Spalte B zusammenstellen wenn A = Ja
I = 0
For Y = 1 To YMax
If Range("A" & Y) = "Ja" Then
'Zeile im Zielbereich
I = I + 1
'Zelle nach Spalte AA kopieren
Range("B" & Y).Copy Destination:=Range("AA" & I)
End If
Next
'Gültigkeitsbereich von C1 festlegen
With Range("C1")
With .Validation
.Delete
.Add Type:=xlValidateList, Formula1:="=AA1:AA" & I
.IgnoreBlank = True
.InCellDropdown = True
End With
End With
End Sub
---schnapp---
> Eine weitere Frage, die ich mir stelle ist, wieviel Einträge oder
> wieviel Zeichen lang darf der Gültigkeitseintrag haben.
Mal sehen, also Formula1 ist vom Typ String, in der Hilfe dazu steht:
Es gibt zwei Arten von Zeichenfolgen: Zeichenfolgen variabler Länge und
Zeichenfolgen fester Länge.
Zeichenfolgen variabler Länge können bis zu 2 Milliarden (oder 2^31)
Zeichen enthalten.
Zeichenfolgen fester Länge können 1 bis etwa 64 KB (2^16) Zeichen enthalten.
Ich weiß nicht welcher Typ da nun für Formula1 übergeben werden kann,
aber 2^16 = 65535 Zeichen sollten wohl genug sein.
Andreas.
Andreas, vielen Dank für die Informationen und der vorgeschlagenen
Vorgehensweise.
Gruß Walter
Seit, meiner Meinung nach, kurzem habe ich folgenden Fehler.
Im Bereich B31 bis B41 wähle ich aus ob "Ja" oder "nichts". Bei ja wird
unten stehendes Makro entsprechend berücksichtigt.
Sub Setze_Gültigkeit()
Dim S As String
'Schutz aus
ActiveSheet.Unprotect
'Auswahl der Frankatur
'Letzten Eintrag in Spalte B
YMax = Range("B" & Rows.Count).End(xlUp).Row
S = ""
'Liste aus Spalte C zusammenstellen wenn B = Ja
For Y = 31 To 41
If Range("B" & Y) = "Ja" Then _
S = S & Range("C" & Y) & ","
Next
'Das letzte , löschen
S = Mid(S, 1, Len(S) - 1)
'Gültigkeitsbereich von C1 festlegen
With Range("E10")
With .Validation
.Delete
.Add Type:=xlValidateList, Formula1:=S
.IgnoreBlank = True
.InCellDropdown = True
End With
End With
.
.
.
End Sub
Interessant ist nun, dass in dass unter Excel 2007 von B32 bis B41 alles mit
"Ja" belegt werden kann (B31 ist fix vorbelegt und versteckt) ohe
Fehlermeldung.
Unter Excel 2002 stolpert er aber plötzlich über diese Zeile:
.Add Type:=xlValidateList, Formula1:=S
Ich kann mir das nicht erklären. Egal welche Zellen zwischen B32 und B41
ausgewählt werden. Irgendwann kommt der Debugger und "motzt".
Danach ist Excel oder das File wie blockiert. Wenn ich es schliese ohne zu
speichern und Excel beenden will heisst es dann "Kann Microsoft Excel nicht
beenden". Ich muss es dann mit dem Taskmanager abschiessen.
Hast Du oder sonstwer in dieser Community da ev. eine Idee wo ich da suchen
muss?
Gruss Harri
Danke für Deinen Hinweis. Ich stehe hier jedoch noch an einem Punkt an.
"Thomas Ramel" wrote:
> Du hast, wenn die Mappe in einer älteren Version geöffnet wird, einen
> gebrochenen Verweis in der Mappe (prüfe dies unter der älteren Version im
> VBA-Editor unter Extras/Verweise auf 'nicht gefunden'). Lösche diesen nicht
> gefundenen Verweis, dann sollte die Mappe auch in den älteren Version
> laufen, ausser der Verweis ging auf eine Bibliohek, deren Inhalt Du
> benötigst.
> Dann bist Du beim Thema 'early binding'/'late binding' angelangt, das immer
> dann auftritt, wenn Mappen unter verschiedenen Excel-Versionen laufen
> sollen. Dazu gibt es im Netz und auch dieser NG hier viele Beispiele und
> Erklärungen.
Was genau meinst Du mit "prüfe dies unter der älteren Version im
VBA-Editor unter Extras/Verweise auf 'nicht gefunden')."?
Wenn ich im VBA Editor über Extras auf die Verweise gehe, dann öffnet sich
ein Fenster mit X-Möglichkeiten um ein Flag zu setzen. Etwas wie 'nicht
gefunden' oder 'not found' finde ich nicht. Würdest Du mir das bitte etwas
näher erläutern? Danke!
Gruss Harri
> Im Bereich B31 bis B41 wähle ich aus ob "Ja" oder "nichts". Bei ja wird
> unten stehendes Makro entsprechend berücksichtigt.
>
> Sub Setze_Gültigkeit()
> Dim S As String
>
> 'Schutz aus
> ActiveSheet.Unprotect
>
> 'Auswahl der Frankatur
> 'Letzten Eintrag in Spalte B
> YMax = Range("B" & Rows.Count).End(xlUp).Row
Die Zeile YMax ist überflüssig, weil Du "for Y = 31 to 41" sagst.
> S = ""
> 'Liste aus Spalte C zusammenstellen wenn B = Ja
> For Y = 31 To 41
> If Range("B" & Y) = "Ja" Then _
> S = S & Range("C" & Y) & ","
> Next
> 'Das letzte , löschen
> S = Mid(S, 1, Len(S) - 1)
>
> 'Gültigkeitsbereich von C1 festlegen
> With Range("E10")
> With .Validation
> .Delete
> .Add Type:=xlValidateList, Formula1:=S
> .IgnoreBlank = True
> .InCellDropdown = True
Ersetze mal testhalber die obigen 4 Zeilen (von .Delete bis hier) durch:
.Modify Type:=xlValidateList, Formula1:=S
> End With
> End With
> .
Wo ist der Code? Wenn Du eine Sub postest, dann bitte immer komplett.
Der Fehler könnte hier liegen.
> .
> .
> End Sub
> Unter Excel 2002 stolpert er aber plötzlich über diese Zeile:
> .Add Type:=xlValidateList, Formula1:=S
>
> Ich kann mir das nicht erklären. Egal welche Zellen zwischen B32 und B41
> ausgewählt werden. Irgendwann kommt der Debugger und "motzt".
D.h. es läuft einige Male einwandfrei? Merkwürdig, ich kann das unter
meinem XL2002 SP3 so etliche 1000mal laufen lassen ohen Probleme:
Sub Test()
For I = 1 To 1000
Setze_Gültigkeit
Next
End Sub
> Hast Du oder sonstwer in dieser Community da ev. eine Idee wo ich da suchen
> muss?
Nö. Probier mal obigen Änderungen, wenn's noch nicht geht, dann poste
die Sub bitte komplett.
Andreas.
Danke für's rasche Feedback. Leider hat mir das auch nicht geholfen. Jetzt
stolpert das Makro über:
.Modify Type:=xlValidateList, Formula1:=S
Ich muss wohl sondt noch wo einen Fehler haben in der ganzen Geschichte,
dass es unter Excel 2002 nicht (mehr?) läuft.
Werde sicherlich noch das eine oder andere versuchen. Trotzdem bin ich für
weitere Tipps dankbar. Was ist der Punkt von Thomas Ramel? Habe das nicht
ganz verstanden.
Gruss Harri
Sub Setze_Gültigkeit()
Dim S As String
'Schutz aus
ActiveSheet.Unprotect
'Auswahl der Frankatur
'Letzten Eintrag in Spalte B
'YMax = Range("B" & Rows.Count).End(xlUp).Row
S = ""
'Liste aus Spalte C zusammenstellen wenn B = Ja
For Y = 31 To 41
If Range("B" & Y) = "Ja" Then _
S = S & Range("C" & Y) & ","
Next
'Das letzte , löschen
S = Mid(S, 1, Len(S) - 1)
'Gültigkeitsbereich von C1 festlegen
With Range("E10")
With .Validation
.Delete
.Add Type:=xlValidateList, Formula1:=S
.IgnoreBlank = True
.InCellDropdown = True
End With
End With
'Auswahl der Textart1
Dim T1 As String
'YMax = Range("H" & Rows.Count).End(xlUp).Row
T1 = ""
For Y = 31 To 36
If Range("H" & Y) = "Ja" Then _
T1 = T1 & Range("I" & Y) & ","
Next
P = Mid(T1, 1, Len(T1) - 1)
With Range("E12")
With .Validation
.Delete
.Add Type:=xlValidateList, Formula1:=T1
.IgnoreBlank = True
.InCellDropdown = True
End With
End With
'Auswahl der Textart2
Dim T2 As String
'YMax = Range("H" & Rows.Count).End(xlUp).Row
T2 = ""
For Y = 31 To 36
If Range("H" & Y) = "Ja" Then _
T2 = T2 & Range("I" & Y) & ","
Next
T2 = Mid(T2, 1, Len(T2) - 1)
With Range("E15")
With .Validation
.Delete
.Add Type:=xlValidateList, Formula1:=T2
.IgnoreBlank = True
.InCellDropdown = True
End With
End With
'Auswahl Verpackung European-Logistics
Dim VPEL As String
'YMax = Range("B" & Rows.Count).End(xlUp).Row
VPEL = ""
For Y = 47 To 60
If Range("B" & Y) = "Ja" Then _
VPEL = VPEL & Range("C" & Y) & ","
Next
VPEL = Mid(VPEL, 1, Len(VPEL) - 1)
With Range("E18")
With .Validation
.Delete
.Add Type:=xlValidateList, Formula1:=VPEL
.IgnoreBlank = True
.InCellDropdown = True
End With
End With
'Auswahl Verpackung Gefahrengut
Dim VPG As String
'YMax = Range("H" & Rows.Count).End(xlUp).Row
VPG = ""
For Y = 47 To 62
If Range("H" & Y) = "Ja" Then _
VPG = VPG & Range("I" & Y) & ","
Next
VPG = Mid(VPG, 1, Len(VPG) - 1)
With Range("E22")
With .Validation
.Delete
.Add Type:=xlValidateList, Formula1:=VPG
.IgnoreBlank = True
.InCellDropdown = True
End With
End With
'Schutz ein
ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
False
End Sub
> Ich muss wohl sondt noch wo einen Fehler haben in der ganzen Geschichte,
> dass es unter Excel 2002 nicht (mehr?) läuft.
Ich denke auch, bei mir XL2002 läuft Dein eben gepostetes Makro ohne
Probleme!
> Werde sicherlich noch das eine oder andere versuchen. Trotzdem bin ich für
> weitere Tipps dankbar. Was ist der Punkt von Thomas Ramel? Habe das nicht
> ganz verstanden.
Hat hiermit IMHO nichts zu tun, aber trotzdem:
Öffne das File mit XL2002, geh in den VBA-Editor, klick auf
Extras\Verweise und schau ob da etwas wie "Nicht Gefunden" steht und
falls ja, dann mach den Haken links davor raus.
Andreas.
Harri Märki schrieb am 12.02.2009
In welcher Excel-Version hast Du das denn geprüft?
Wenn Du das in deiner machst kannst Du kaum etwas finden.
Öffne die Datei unter einer Excel-Version die Probleme macht und prüfe dann
*dort* die VBA-Verweise.
Genau dasselbe hat dir ja auch Andreas geraten.....