Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
952to956
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
952to956
952to956
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Neues Arbeitsblatt erstellen, falls nicht vorhande

Neues Arbeitsblatt erstellen, falls nicht vorhande
19.02.2008 12:30:00
J.
Hey
Ich habe hier schon einen Code, der mit Hilfe einer Liste von Begriffen ein neues Arbeitsblatt mit passendem Namen erstellt.
Nun ist es aber so, dass zu der ursprünglichen Liste noch Begriffe dazu gekommen sind, ich aber mit Hilfe des Makros keine neuen Arbeitsblätter mehr erstellen kann , weil manche Namen ja schon bestehen.
Hier ist mal der Code

Sub NeuesBlattundName()
Dim rngC As Range
With Sheets(1)
For Each rngC In .Range(.Cells(2, 1), .Cells(Rows.Count, 1).End(xlUp))
rngC.EntireRow.Copy Worksheets.Add.Cells(1, 1)
ActiveSheet.Name = CheckSheetName(ActiveSheet.Cells(1, 1))
Next
End With
End Sub



Function CheckSheetName(strName As String) As String
Dim strNotAllowed As Variant
Dim n As Integer
'Im Tabellennamen nicht zulässige Zeichen
strNotAllowed = Array(":", "\", "/", "?", "*", "[", "]")
'unerlaubte Zeichen durch nichts ersetzen
For n = 0 To UBound(strNotAllowed)
strName = Replace(strName, strNotAllowed(n), "")
Next
'Namen auf 31 Zeichen begrenzen
CheckSheetName = Left(strName, 31)
End Function


Was muss ich nun ändern, damit die Bereits vorhandenen Sachen bestehen bleiben, und nur von neuen Listeneinträgen, neue Arbeitsblätter erstellt werden?
Und kann man ein Makro schreiben, durch das sich ein Suchformular öffnet, mit dem man nach einem im Arbeitsblattnamen vorhandenen Textstück suchen kann?
Es ist nämlich teilweise recht mühsam in über 100 Arbeitsblättern das passende zu suchen.

AW: Neues Arbeitsblatt erstellen, falls nicht vorh
19.02.2008 12:50:00
Rudi
Hallo,
1.

Sub NeuesBlattundName()
Dim rngC As Range, wks As Worksheet
With Sheets(1)
For Each rngC In .Range(.Cells(2, 1), .Cells(Rows.Count, 1).End(xlUp))
On Error Resume Next
Set wks = Worksheets(rngC)
On Error GoTo 0
If wks Is Nothing Then
rngC.EntireRow.Copy Worksheets.Add.Cells(1, 1)
ActiveSheet.Name = CheckSheetName(ActiveSheet.Cells(1, 1))
End If
Set wks = Nothing
Next
End With
End Sub


2. als Ansatz


Sub SheetSuchen()
Dim wks As Worksheet, vntWks As Variant
vntWks = InputBox("Name?")
If Len(Trim(vntWks)) > 0 Then
For Each wks In Worksheets
If wks.Name Like "*" & vntWks & "*" Then
wks.Activate
Exit For
End If
Next
End If
End Sub


Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

Anzeige
AW: Neues Arbeitsblatt erstellen, falls nicht vorh
19.02.2008 13:23:00
J.
Hi
Das funktioniert leider nicht.
Bei dem neuen Code erhalte ich den Laufzeitfehler 1004 und der markiert mir folgende Zeile
ActiveSheet.Name = CheckSheetName(ActiveSheet.Cells(1, 1))
und kann man es beim zweiten Code so einstellen, dass Groß und Kleinschreibung egal sind?

AW: Neues Arbeitsblatt erstellen, falls nicht vorh
19.02.2008 13:48:00
Rudi
Hallo,
ist die Liste auch Blatt 1?

Sub NeuesBlattundName()
Dim rngC As Range, wks As Worksheet
With Sheets(1)
For Each rngC In .Range(.Cells(2, 1), .Cells(Rows.Count, 1).End(xlUp))
On Error Resume Next
Set wks = Worksheets(rngC.Value)
On Error GoTo 0
If wks Is Nothing Then
rngC.EntireRow.Copy Worksheets.Add(after:=Sheets(Sheets.Count)).Cells(1, 1)
ActiveSheet.Name = CheckSheetName(ActiveSheet.Cells(1, 1))
End If
Set wks = Nothing
Next
End With
End Sub


2.If lcase(wks.Name) Like "*" & lcase(vntWks) & "*" Then
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

Anzeige
AW: Neues Arbeitsblatt erstellen, falls nicht vorh
19.02.2008 13:51:57
J.
Ja die Liste befindet sich auf Blatt eins, heisst aber anders.
Und wo genau muss ich denn das was du unten geschrieben hast in meinen Code einfügen?

AW: Neues Arbeitsblatt erstellen, falls nicht vorh
19.02.2008 14:01:00
Rudi
Hallo,

Und wo genau muss ich denn das was du unten geschrieben hast in meinen Code einfügen?


anstelle der Originalbedingung.
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

AW: Neues Arbeitsblatt erstellen, falls nicht vorh
19.02.2008 14:07:00
J.
Habe die Bedingung geändert, musste danach aber vntWks definieren, ich hoffe mal das stimmt so.
vntWks As Worksheet
Leider bekomme ich jetzt immer noch eine Fehlermeldung (Laufzeitfehler 91) wenn ich das Makro starte.
Die folgende Zeile wird dann gelb hinterlegt
If LCase(wks.Name) Like "*" & LCase(vntWks) & "*" Then

Anzeige
AW: Neues Arbeitsblatt erstellen, falls nicht vorh
19.02.2008 14:14:00
Rudi
Hallo,

ich hoffe mal das stimmt so.


Nein!
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

AW: Neues Arbeitsblatt erstellen, falls nicht vorh
19.02.2008 14:23:15
J.
Und wie muss ich das dann ändern, damit das klappt?
Es funktioniert nämlich auch nicht als string oder integer

AW: Neues Arbeitsblatt erstellen, falls nicht vorh
19.02.2008 14:36:46
Rudi
Hallo,
du sollst einfach nur die eine Zeile gegen die andere austauschen. Sonst nichts!

Sub SheetSuchen()
Dim wks As Worksheet, vntWks As Variant
vntWks = InputBox("Name?")
If Len(Trim(vntWks)) > 0 Then
For Each wks In Worksheets
If LCase(wks.Name) Like "*" & LCase(vntWks) & "*" Then
wks.Activate
Exit For
End If
Next
End If
End Sub


Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

Anzeige
AW: Neues Arbeitsblatt erstellen, falls nicht vorh
19.02.2008 14:40:10
J.
Das
vntWks As Variant
stand aber vorher nicht dabei.
aber jetzt klappt es
besten dank

AW: Neues Arbeitsblatt erstellen, falls nicht vorh
19.02.2008 15:07:16
J.
Oh ich hab mich wohl verguckt, dachte das wäre der Lösungsansatz für das erste Problem, bei dem ein neues Arbeitsblatt erstellt wird. Das war aber die Lösung zu dem anderen Problem.
Also die Suchfunktion klappt prima, nur das Problem dass ich eine Fehlermeldung beim starten des anderen Makros bekomme, weil der Arbeitsblattname bereits vorhanden ist, kann ich nicht lösen.

Anzeige
AW: Neues Arbeitsblatt erstellen, falls nicht vorh
19.02.2008 15:27:07
Rudi
Hallo,
dafür ist der unter 1. gepostete Code da.
Verstehst du eigentlich ungefähr, was abgeht?
Auch wenn man Code nicht schreiben kann, sollte man ihn doch zumindest Sinn entnehmend lesen können.
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

AW: Neues Arbeitsblatt erstellen, falls nicht vorh
19.02.2008 15:35:36
J.
Ich verstehe schon was abgeht, nur erhalte ich leider bei diesem Code den Laufzeitfehler 1004!

AW: Neues Arbeitsblatt erstellen, falls nicht vorh
19.02.2008 15:42:00
Rudi
Hallo,
kleine Korrektur:

Sub NeuesBlattundName()
Dim rngC As Range, wks As Worksheet
With Sheets(1)
For Each rngC In .Range(.Cells(2, 1), .Cells(Rows.Count, 1).End(xlUp))
On Error Resume Next
Set wks = Worksheets(rngC.Value)
On Error GoTo 0
If wks Is Nothing Then
rngC.EntireRow.Copy Worksheets.Add(after:=Sheets(Sheets.Count)).Cells(1, 1)
ActiveSheet.Name = CheckSheetName(ActiveSheet.Cells(1, 1))
End If
Set wks = Nothing
Next
End With
End Sub


Gruß
Rudi

Anzeige
AW: Neues Arbeitsblatt erstellen, falls nicht vorh
19.02.2008 15:49:41
J.
Hallo
es kommt immer noch Fehlermeldung 1004
diese Zeile wird erneut markiert
ActiveSheet.Name = CheckSheetName(ActiveSheet.Cells(1, 1))
kann es evtl daran liegen, dass ich das Dokument geöffnet habe und mich in der Liste in Zelle A1 befinde?

AW: Neues Arbeitsblatt erstellen, falls nicht vorh
19.02.2008 16:00:31
Rudi
Hallo,
was soll das heißen?

dass ich das Dokument geöffnet habe und mich in der Liste in Zelle A1 befinde


Bei mir geht's 1a
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

AW: Neues Arbeitsblatt erstellen, falls nicht vorh
19.02.2008 16:06:58
J.
Also ich meinte damit einfach nur ob es etwas ausmacht, das mir das erste Tabellenblatt angezeigt wird und das die zelle a1 markiert ist.
Wenn ich alle arbeitsblätter lösche und das dann laufen lasse, klappt es.
Aber wenn ich jetzt an meiner Liste ganz unten noch einen Begriff hinzufüge, und das makro erneut laufen lasse, erhalte ich eben diesen fehler 1004. Dieses Makro ist aber absolut wichtig, denn ich kann nicht jedes Tabellenblatt , dass dazu kommt, per hand hinzufügen.
Anzeige

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige