Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen

"Schreibgeschütztes" Dropdwn erzeugen

Betrifft: "Schreibgeschütztes" Dropdwn erzeugen von: Marcus Kempf
Geschrieben am: 10.11.2014 09:16:08

Wie allseits bekannt, können Dropdownliste, die mit Hilfe der Datengültigkeitsprüfung - Liste erstellt sind leider durch Kopieren oder ziehen einer angrenzenden Zelle überschrieben werden.

Gibt es eine Möglichkeit dies zu ändern?

Kann man z.B. mit VBA dropdowns erstellen, die nicht überschreibbar sind?

Ein Beispiel des Problem habe ich angefügt.

https://www.herber.de/bbs/user/93646.xlsm

  

Betrifft: AW: "Schreibgeschütztes" Dropdwn erzeugen von: {Boris}
Geschrieben am: 10.11.2014 10:16:31

Hi Marcus,

mit Blattschutz lässt sich schon mal nix mehr "ziehen". Allerdings kann man die Dropdown-Zelle immer noch "kaputt kopieren".
Du könntest auf ein Steuerelement (ComboBox) ausweichen.

VG, Boris


  

Betrifft: AW: "Schreibgeschütztes" Dropdwn erzeugen von: Marcus Kempf
Geschrieben am: 10.11.2014 10:19:34

Mit dem Gedanken habe ich auch schon gespielt.

Gibt es hier auch die Möglichkeit des indirekten Listenadressierens?

Können diese Felder fix einer jeweiligen Zelle zugeordnet werden und sind sie durch die normalen Excelfunktionen (z.B. Summe) auswertbar?


  

Betrifft: Verständnisfrage von: {Boris}
Geschrieben am: 10.11.2014 10:25:01

Hi Marcus,

Gibt es hier auch die Möglichkeit des indirekten Listenadressierens?

Was genau meinst Du damit?

ComboBoxen haben eine Zellverknüpfung (LinkedCell) - die darf zwar auch nicht schreibgeschützt sein, aber platziere sie einfach direkt "unter" dem Steuerelement - also dass die Box die Zelle verdeckt.
Dann kommt man nicht so schnell drauf, da irgendwas zu "zerschießen".

Wenn`s aber ganz DAU-sicher sein soll, dann kommst Du über eine komplette VBA-Steuerung (Stichwort: Userform o.ä.) nicht rum.

VG, Boris


  

Betrifft: AW: Verständnisfrage von: Marcus Kempf
Geschrieben am: 10.11.2014 10:31:30

Mit dem indriekten Listenadressieren meine ich das bei der Datengültigkeitsprüfung in den mir vorliegenden Liste Folgendes als Quellbereich hinterlegt ist.

=indirekt(C$43)

Es wird also in Abhängigkeit der Zelle z.B. C43 die jeweilige Liste zur Auswahl gestellt.

Ich habe in meiner eigentlichen Datei einen ganzen Ar... voll dieser Listen, diese alle durch Kombinationsfelder zu ersetzen ist für mich einfach nicht praktikabel.

Ich habe die Datei um die es eigentlich geht mal mit angehangen, vielleicht wird dann einiges etwas klarer.

https://www.herber.de/bbs/user/93649.xlsm


  

Betrifft: indirekter ListFillRange von: {Boris}
Geschrieben am: 10.11.2014 10:42:18

Hi Marcús,

=indirekt(C$43)

Wenn man dafür wiederum einen Namen vergibt, kann man diesen auch in der CoboBox hinterlegen.
Aber das erscheint mir alles gerade sehr aufwändig.
Ich plädiere dafür, dass Du die Nutzer der Datei eindringlichst impfst, was das Handling angeht.
Alles andere beutet für Dich sehr viel Mehraufwand.

VG; Boris


  

Betrifft: AW: indirekter ListFillRange von: Marcus Kempf
Geschrieben am: 10.11.2014 10:57:38

Hallo Boris,

diesen Mehraufwand werde ich wohl leider betrieben müssen, da dass Handling der Datei zum Fehlbedienen verleitet.

Grade zum Beipiel im Krankheitsfall wird einfach über wochen hinweg einfach "runtergezogen", weil es bequemer ist und schon ist die Prüfung dahin.

Hast Du einen Ansatz für mich, wie eine VBA-Lösung aussehen könnte?
Gibt es für die Validation keinen Parameter der eine Änderung sperrt?

Eine Frage blieb auch bis jetzt offen, die Steuerelemente direkt an Zelle "Heften" funktioniert nicht?


  

Betrifft: wandernde Combobox von: Rudi Maintaire
Geschrieben am: 10.11.2014 15:53:23

Hallo,
füge eine Combobox ein (Combobox1).

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Dim rngJahr As Range
  Set rngJahr = Intersect(Range("A1"), Target)
  If Not rngJahr Is Nothing Then varJahr = Range("A1").Value
  ComboBox1.Visible = False
  If Target.Count = 1 Then
    Select Case Target.Row
      Case 43 To 435
        If Target.Column > 4 Then
          If Cells(36, Target.Column) <> "" Then
            With ComboBox1
              .ListFillRange = Cells(Target.Row, 3)
              .LinkedCell = Target.Address
              .Top = Target.Top
              .Left = Target.Offset(, 1).Left - .Width
              .Width = 18
              .Height = 18
              .Visible = True
            End With
          End If
        End If
    End Select
  End If
  
End Sub

Gruß
Rudi


  

Betrifft: AW: wandernde Combobox von: Marcus Kempf
Geschrieben am: 12.11.2014 08:16:52

Hallo Rudi,

ich habe eine Combobox1 eingefügt, jedoch passiert bei einer Änderung des Jahres in Zelle A1 nichts, meine Datenprüfungsliste bleibt bestehen.

Eine Frage gleich noch, ist ein indirektes Adressieren nach dem Muster "=indirekt(C$43)" hier auch möglich, damit die Combobox je nach Wert in der entsprechenden Zelle mit einer bestimmten und nicht mit einer fixen Liste gefüllt wird?

Danke im Voraus Marcus.


  

Betrifft: AW: wandernde Combobox von: Marcus Kempf
Geschrieben am: 12.11.2014 09:30:42

Hallo nochmal Rudi,

kannst du mir das Ganze so erweitern, dass die Combobox nicht wandert, sondern permanent in allen betroffenen Zellen (Wert in Zeile 37 vorhanden) verfügbar ist?
Dann sollte das nämlich auch mit dem sperren der Zellen klappen, also so dass diese nur noch über die Combobox editiert werden können oder? Gerade versucht, leider nicht möglich, vielleicht hast Du eine andere Idee?

Bei mir funktioniert das Ganze auch nur, wenn ich die Combobox zunächst einmal händisch auf sichtbar schalte, hast Du eine Idee, wieso das so ist?

Die indirekte Adressierung habe ich auch noch nicht ganz hinbekommen.
Ich habe eine Zelle benamt und dieser eine Datengültigkeitsliste mit indirekter Adressierung zugeführt.
Wenn ich auf diese benamte Zelle verweise, kann ich jedoch immer nur den aktuell im Dropdown angewählten Wert in der Combobox auswählen.

Ich habe das Ganze mal dran gehangen.

https://www.herber.de/bbs/user/93692.xlsm


  

Betrifft: AW: wandernde Combobox von: Marcus Kempf
Geschrieben am: 12.11.2014 10:18:17

Verzeihung :-( ich hatte direkt versucht mich auf meine "indirekt"-Lösung zu konzentrieren...

Danke funktioniert super.

Nun wäre nur noch zu klären, wie ich verhindere, dass die Zellen per Paste, per Hand oder per ziehen beschrieben werden können :-)

Kann man hier eine Art Validationlist verknüpfen?


 

Beiträge aus den Excel-Beispielen zum Thema ""Schreibgeschütztes" Dropdwn erzeugen"