PDA

Vollständige Version anzeigen : überprüfen ob Arbeitsblatt bereits existiert


michael_buller
06.05.2009, 05:01
Hi Leute,

ich habe eine Art Datenbank in Excel erstellt, jedes item hat ein eigenes Arbeitsblatt mit dem name "type_detail1_detail2_detail3", der durch comboboxen erstellt wird.
Wenn ich ein neues item anlegen will, soll das Macro überprüfen, ob es bereits ein Arbeitsblatt mit dem namen der Comboboxen.values gibt.

bitte um Hilfe :D - danke

achja, weitere frage ;)

ist es möglich beim AutoFilter die Auswahlen (Top10), (Benutzerdefiniert) auszublenden ??? ;) danke auch hierfür :D

PS: das board hier ist super !!!

jinx
06.05.2009, 05:09
Moin, Michael,

zwei unterschiedliche Vorgehen: einmal eine Schleife über alle Arbetisblätter und einmal per Fehlerbehandlung:

Dim wks As Worksheet
For Each wks In Worksheets
If wks.Name = "NeueTabelle" Then Exit Sub
Next wks
Worksheets.Add
'weiterer Code
On Error GoTo err_end
Worksheets("NeueTabelle").Activate
'weiterer Code

Exit Sub

err_end:
MsgBox "Tabelle nicht angelegt"
Meines Wissens nicht, aber dafür könnte man einen Blattschutz einsetzen und die Auswahl des Autofilters nur per VBA/UserForm zulassen.

michael_buller
06.05.2009, 05:21
hmm, das mit dem Blattschutz hört sich interessant an, wie mache ich das denn ??? :D

die überlegung einer on error schleife hatte ich auch, wusste aber nicht wie ich sie umsetzen sollte :D danke ;););) - wie verhält sich die macrodurchlaufzeit bei sehr vielen arbeitsblättern, dauert es ein paar sekunden oder kann es auch mal mehrere minuten oder so dauern, dass sollte es wenn es geht nicht =D

danke

jinx
06.05.2009, 05:26
Moin, Michael,

Menü Extras / Schutz, per VBA ActiveSheet.Protect - kann mit und ohne Passwort gesetzt werden.

Was verstehst Du unter sehr vielen Arbeitsblättern (10, 100?)? Da würde mir nämlich eher der Sinn nach dem Einsatz mehrerer Mappen und der Nutzung eines Archives kommen. Umgehen könnte man dies durch den Einsatz eines Inhaltsverzeichnisses/einer Übersicht und dem Einsatz einer Tabellenfunktion auf dieser Tabelle, z.B. SVerweis...

michael_buller
06.05.2009, 05:33
Also ich sag mal 100+ Seiten, aber das Problem ist, dass ich bereits ein Inhaltsverzeichnis habe aber auch eigene Arbeitsblätter für die "history" von waren ein- und ausgang ...

ich probier es mal aus und naja ^^ ich bin nur trainee :D - wenn es net so schnell ist wird man das auch überleben

jinx
06.05.2009, 05:40
Moin, Michael,

mir reicht die Geschwindigkeit aus (liegt vielleicht an meinen in der Zahl der Tabellen etwas kleiner ausgefallenen Arbeitsmappen). Da ich nicht weiß, wie Dein Inhaltsverzeichnis erstellt bzw. aktualisiert wird, würde ich dann eher zur Variante Fehlerbehandlung greifen, vielleicht auch in der Art von

On Error Resume Next
Worksheets("NeueTabelle").Activate
If Err <> 0 Then
Worksheets.Add
Err.Clear
End If
On Error GoTo 0

michael_buller
06.05.2009, 06:44
genau sowas habe ich gesucht, ist ja auch eigentlich recht simpel, bin aber net drauf gekommen :D danke :) das hilft mir enorm weiter :D

michael_buller
06.05.2009, 07:56
Dim dername As String
dername = cbx_type.value & "_" & cbx_standard.value

On Error Resume Next
Worksheets(dername).Activate
If Err <> 0 Then
Worksheets.Add
Err.Clear
End If
On Error GoTo 0


Das klappt nicht ^^ - ich möchte halt, dass der prüft, ob das Worksheet - dessen Name sich aus den combobox values ergibt - vorhanden ist oder nicht, aber so wie ich das gelöst habe klappt das nicht :(

hast du ne idee ??

DANKE :D


ACHJA !!! wenn ich dername = " cbx_type.value & "_" & cbx_standard.value " mache gibt es nen Fehler :(

michael_buller
06.05.2009, 08:14
also das würde gehen

dername = cbx_type.value ...

sheets(" & dername & ")


aber wenn ich die err <> 0 abfrage ergibt dies immer <> 0, also schreibt das macro immer ein neues sheet, egal ob es das schon gibt :( --- was muss ich machen

michael_buller
06.05.2009, 08:37
Also, das eigentliche problem besteht darin, die values aus den ComboBoxen zusammen zu fassen und diesen dann als Sheetnamen zu nehmen - wie mache ich das ?!!!

DANKE im voraus

michael_buller
06.05.2009, 08:50
Hi Leute,

sorry, dass ich hier so "rumspamme" aber ich weiss nicht, wie ich meine Beiträge löschen kann.

Ich habe es nun gelöst, es klappt mit

Sheets(cbx_type.value & "_" & cbx_standard.value)

nur falls es jmd. nochmal braucht

Mein Fehler war die falsche Eingleiderung der Error Abfrage :( ...



Da man ja aus fehler lernt weiss ich jetzt wie es geht ;)

Gruß aus Malaysia