atenüberprüfungsfeld beim start mit einer leeren Zeile anzeigen lassen
#1
hallo,

Ich stelle gerade ein Bauteilkatalog zusammen. da viele Infos voneinander abhängig sind habe ich das mit dem Namensmanager -> Datenüberprüfung -> indirekt(a1) gelöst.

Ich möchte nun das beim Start der Tabelle alle Dropdownfelder der Datenüberprüfung leer ist. Aus dem Grund das nicht alle Bauteile zum Beispiel 8 Schichten haben, sondern nur 3. 5 der Dropdownfelder sollten dann leer sein.

Über den Namensmanager habe leider keine leeren Zeilen miteingerahmt. sondern nur den Inhalt. Es sind wirklich viele und es wäre mega aufwändig das nachzuholen.

Es sind quasi 3 Spalten die voneinander abhängig sind. Spalte A kann ich leer auswählen aber für Spalte B und C ist der Aufwand einfach mega groß.

Leider kann man bei der Datenüberprüfung mit keiner WENN abfage arbeiten.

Als ich die Dropdownfelder erstellt habe waren sie ja am anfang auch leer. Deswegen meine Hoffnung das es möglich ist.

Aus dem Netz habe ich diese VBA Formel:

Private Sub Workbook_Open()
    Range("A1:A20").ClearContents
End Sub



Jetzt habe ich leider keine Ahnung von VBA. habs mal so rein kopiert aber er zeigt mir beim debuggen den Fehler an: Fehler beim Kompilieren:

Mehrdeutiger Name: Wokbook_Open



Hoffe man kann mir weiter helfen.
Liebe Grüße
Top
#2
Hallo,

Zitat:Jetzt habe ich leider keine Ahnung von VBA. habs mal so rein kopiert aber er zeigt mir beim debuggen den Fehler an: Fehler beim Kompilieren:

Mehrdeutiger Name: Wokbook_Open

bedeutet, daß ein Makro dieses Namens mindestens zwei mal vorhanden ist.
Das heißt, Du mußt einem dieser Makros einen anderen Nanen geben oder beide zusammenführen.
Auch eineiige Zwillinge haben ja unterschiedliche Vornamen  :05:


Zitat:Aus dem Netz habe ich diese VBA Formel:

Private Sub Workbook_Open()
    Range("A1:A20").ClearContents
End Sub

wohin hast Du das Makro kopiert?
es heißt:
Private Sub Workbook_Open()
und gehört damit nicht in ein Allgemeines Modul sondern in das Klassenmodul "Diese Arbeitsmappe".
Und hier solltest Du dann auch das zweite Private Sub Workbook_Open() Makro finden.
Top
#3
Zitat:wohin hast Du das Makro kopiert?

Ich gehe auf die betreffende Tabelle. Drück Alt und f11. gehe dann links bei der auswahl auf die gewünschte Tabelle "Bauteilauswahl" , rechtklick und auf Code anzeigen.

Ok das mit den Namen ergibt Sinn. Nur was davon beinhaltet den Namen?

Private Sub Workbook2_Open()
    Range("B1:B20").ClearContents
End Sub


Private Sub Workbook3_Open()
    Range("C1:C20").ClearContents
End Sub


wäre das so richtig?

Und ist das Makro damit aktiviert wenn ich die Excel tabelle richtig abspeichere?

Ist die Formel überhaupt richtig? sind dann die Dropdownzeilen leer? ( natürlich aber nicht der Inhalt )
Top
#4
Hallo,

Zitat:Ok das mit den Namen ergibt Sinn. Nur was davon beinhaltet den Namen?

... na, die Überschrift, was denn sonst wohl?
Top
#5
Also nicht so wie oben geschrieben?

Private Sub2 Workbook_Open()
    Range("B1:B20").ClearContents
End Sub


Private Sub3 Workbook_Open()
    Range("C1:C20").ClearContents
End Sub


ist das so besser? was ist denn die Überschrift?
Top
#6
Hallo,

Zitat:Private Sub Workbook2_Open()
    Range("B1:B20").ClearContents
End Sub


Private Sub Workbook3_Open()
    Range("C1:C20").ClearContents
End Sub


wäre das so richtig?



Zitat:Private Sub Workbook_Open()
Range("B1:B20").ClearContents
Range("C1:C20").ClearContents
End Sub

ob das richtig ist, das kann ich Dir nicht sagen. Dafür gibt es zu viele Unbekannte.

Was ich dir sagen kann ist, daß Du wie ich oben gezeigt habe, auf diese Weise die Makros zu einem machen kannst.
In diesem Makro werden jeweils beim Start der Datei die Werte in den beiden definierten Zellbereichen gelöscht.
Etwas anderes passiert nicht.

Ach ja, Du kannst die Makros nicht einfach durchnummerieren. So wie Du das gemacht hast, fühlt sich keines der beiden
zuständig. Wie heißt es bei Highländer so schön "es kann nur Einen geben".
Top
#7
Auch Hallo,

da gehört noch das Worksheet dazu

Code:
Private Sub Workbook_Open()
With Worksheets("..........")
  .Range("B1:C20").ClearContents
End with
End Sub

Die Punkte bitte durch den Tabellennamen ersetzen.
Gruß Stefan
Win 10 / Office 2016
[-] Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:
  • seyan1408
Top
#8
Code:
Private Sub Workbook_Open()
With Worksheets("Bauteilauswahl")
  .Range("B1:C20").ClearContents
.Range("C1:c20").ClearContents
End with
End Sub

So kann ich das schreiben? Und soll das in ein neu erstelles Modul. Oder wie oben beschrieben. Drück Alt und f11. gehe dann links bei der auswahl auf die gewünschte Tabelle "Bauteilauswahl" , rechtklick und auf Code anzeigen.
Top
#9
Hallo,

... aber lesen kannst Du doch, oder?

ich habe oben im Beitrag #2 schon geschrieben, wo sowas hingehört

Zitat:Private Sub Workbook_Open()
Top
#10
Hallo,

der Code gehört in das Klasenmodul DieseArbeitsmappe und gestartet wird er wenn du die Mappe öffnest.

Module und VBAProject
Gruß Stefan
Win 10 / Office 2016
[-] Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:
  • seyan1408
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste