Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
344to348
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
344to348
344to348
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Wo ist der Fehler???

Wo ist der Fehler???
04.12.2003 14:43:02
andi
Hallöchen,

habe ein kleines Problem. Mein Programm will nicht so wie ich das will.

Habe in einer Arbeitsmappe unter andrem das Tabellenblatt "leer". Dies ist die leere Vorlage.

Und das Tabellenblatt "Hilfstabelle". Hier stehen die Namen aller Klienten. Hinter den aktuellen Klienten steht in Spalte 6 (Das ist F) ein ja. (Hinter den verstorbenen ein "nein")

Jetzt möchte ich ein Makro schreiben, dass für jeden Klienten ein Tabellenblatt erstellt. Der Name des Tabellenblattes soll der Name des Klienten sein. Dazu müßte die Vorlage "leer" immer wieder kopiert werden und dann umbenannt in den Namen des Klienten. Aber nur wenn in Spalte F ein "ja" steht. Das neue Tabellenblatt soll dann ans Ende gestellt werden, weil vorne ne ganze Menge Tabellenblätter sind die für Auswertungen und ähnliches gebraucht werden.

So sieht das bei mir aus:


Sub TabellenblätterErstellen()
Dim x As Integer
Dim Name As String
Dim bytZeile As Byte
For bytZeile = 2 To 100
Worksheets("Hilfstabelle").Select
Cells(bytZeile, 6).Select
If ActiveCell.Value = "ja" Then
x = Worksheets.Count
Sheets("leer").Select
Sheets("leer").Copy After:=Sheets(x)
Sheets("leer (2)").Select
Sheets("leer (2)").Name = Sheets("Hilfstabelle").Cells(bytZeile, 3).Value
End If
Next bytZeile
End Sub


In meinem Programm erstellt er immer nur eine Kopie von "leer", benennt aber nicht um.

Habe ich irgendwo einen Denkfehler?

25
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wo ist der Fehler???
04.12.2003 14:59:04
WernerB.
Hallo Andi,

versuche es mal so (ungetestet):

Sub TabellenblätterErstellen()
Dim Name As String
Dim laR As Long
Dim bytZeile As Byte
laR = Cells(Rows.Count, 6).End(xlUp).Row
For bytZeile = 2 To laR
If Worksheets("Hilfstabelle").Cells(bytZeile, 6).Value = "ja" Then
Sheets("leer").Copy After:=Sheets(Worksheets.Count)
Sheets(Worksheets.Count).Name = Sheets("Hilfstabelle").Cells(bytZeile, 3).Value
End If
Next bytZeile
End Sub

Viel Erfolg wünscht
WernerB.

P.S.: Das Forum lebt auch von den Rückmeldungen der Fragesteller an die Antworter (siehe Forums-FAQ).
Anzeige
Passiert dasselbe....
04.12.2003 15:04:41
andi
...."leer" wird einmal kopiert zu "leer(2)" und nicht umbenannt und das Programm ist damit zu ende.

Trotzdem Danke.

andi
AW: Passiert dasselbe....
04.12.2003 15:11:17
WernerB.
Hallo Andi,

Excel kann einen Blattnamen innerhalb einer Mappe nur einmal vergeben.
Kann es sein, dass die Namen in Spalte "C" mehrfach vorkommen bzw. schon ein Blatt mit diesem Namen existiert?

Gruß WernerB.
Leider nein....
04.12.2003 15:16:54
andi
..... bis zum Buchstaben P in der achtundzwanzigsten Reihe gibt es alle Namen nur einmal.

Normalerweise macht das aber nichts. Dann würde das Blatt zu Name(2).

Vielleicht hilft das weiter:
Die Schleife wird erst gar nicht durchlaufen. Bei Einzelschrittmodus läuft er einmal duch die Schleife und nichts passiert da in Spalte F ein "nein" steht. Beim zweiten Durchlauf geht er bis zum Umbenennen und dann hört das Programm auf.

andi
Anzeige
AW: Leider nein....
04.12.2003 15:28:46
WernerB.
Hallo Andi,

Deiner Behauptung "Normalerweise macht das aber nichts. Dann würde das Blatt zu Name(2)." möchte ich widersprechen.
Mit dieser Codezeile wird das letzte Tabellenblatt umbenannt:

Sheets(Worksheets.Count).Name = Sheets("Hilfstabelle").Cells(bytZeile, 3).Value

Der neue Name wird aus der der Zelle 'Cells(bytZeile, 3' generiert.
Das kann u.a. dann nicht funktionieren, wenn es bereits ein Blatt mit dieser Bezeichnung gibt, die Zelle leer ist oder Zeichen enthält, die bei der Blattbezeichnung nicht verwendet werden dürfen.

Mehr fällt mir dazu leider nicht ein.

Gruß WernerB.
Anzeige
aha...
04.12.2003 15:32:45
andi
.....die Zelle in Zeile zwei war leer. Habe die ganze Zeile entfernt. Hat auch nichts gebracht.

andi
AW: aha...
04.12.2003 15:36:24
WernerB.
Hallo Andi,

es geht um die erste Zeile, wo in Spalte "F" ein "ja" steht. Was steht in dieser Zeile in der Spalte "C"?

Gruß WernerB.
da steht ein name...
04.12.2003 15:43:39
andi
Hallo Werner,

da steht ein Name.......bzw. da steht eine Verknüpfung zu einer anderen Tabelle mit Wenn und Sverweis.

andi
AW: da steht ein name...
04.12.2003 15:56:45
WernerB.
Hallo Andi,

dieser Name scheint sich nicht mit den Regeln für Blattbezeichnungen zu vertragen (s.o.), möglicherweise ist er auch zu lang.

Gruß WeernerB.
AW: da steht ein name...
04.12.2003 16:01:03
FCH
Hi Werner,

also wenn Andi nicht noch irgendwo eine Fehlerbehandlung eingearbeitet hat, müsste er doch in diesen Fällen auf einen Laufzeitfehler laufen.

Gruß
FCH
Anzeige
AW: Wo ist der Fehler???
04.12.2003 15:00:07
Nayus
Hi,
neue neuen Blätter heißen wahrscheinlich nicht "leer (2)".
Einfach anstatt des Namens, den Index angeben. So sollte es gehen.


Sub TabellenblätterErstellen()
Dim x As Integer
Dim Name As String
Dim bytZeile As Byte
For bytZeile = 2 To 100
Worksheets("Hilfstabelle").Select
Cells(bytZeile, 6).Select
If ActiveCell.Value = "ja" Then
x = Worksheets.Count
Sheets("leer").Select
Sheets("leer").Copy After:=Sheets(x)
Sheets(Worksheets.Count).Select
Sheets(Worksheets.Count).Name = Sheets("Hilfstabelle").Cells(bytZeile, 3).Value
End If
Next bytZeile
End Sub


Gruß,
Nayus
Anzeige
geht auch nicht, s.o.
04.12.2003 15:08:20
andi
...wie bei Werner

Trotzdem Danke

andi
AW: Da ;-)
04.12.2003 15:04:44
Nike
Hi,
einfach ein bischen straffen ohne select usw...


Sub TabellenblätterErstellen()
Dim x As Integer
Dim Name As String
Dim bytZeile As Byte
For bytZeile = 2 To 100
If Worksheets("Hilfstabelle").Cells(bytZeile, 6).Value = "ja" Then
Sheets("leer").Copy After:=Sheets(Worksheets.Count)
Sheets(Worksheets.Count).Name = Sheets("Hilfstabelle").Cells(bytZeile, 3).Value
End If
Next
End Sub


Bye

Nike
Auch nicht.....
04.12.2003 15:12:02
andi
....wie bei den beiden oberen Hilfen. Es erscheint nur "leer(2)". Das Programm endet dann.

Trotzdem Danke!

andi
Anzeige
AW: dann.....
04.12.2003 15:16:00
Nike
Hi,
dann sag mal was hier drinnen steht:
Sheets("Hilfstabelle").Cells(bytZeile, 3).Value
also, in deiner Hilfstabelle in Spalte 3 auf Höhe der Zeile...

Bye

Nike
folgendes...
04.12.2003 15:22:19
andi
...steht da in Spalte 3:

Zeile 1 ist irrelevant da Überschriften. For..Next beginnt bei 2
Zeile 2 ist leer. Macht aber nichts. Im Einzelschrittmodus läuft er einmal durch.
Zeile 3 steht ein Name mit B.... Im Einzelschrittmodus hört das Programm beim Umbenennen auf.

Irgendwelche Ideen?

Danke
andi
AW: hmm...
04.12.2003 15:27:45
Nike
Hi,

poste mal die Datei, dann sag ich was dazu ;-)

Bye

Nike
Anzeige
Datenschutz
04.12.2003 15:46:55
andi
Hi Nike,

darf leider nicht, von wegen Datenschutz und so. Das sind Bürodaten und die beim Amtsgericht verstehen da keinen Spaß.

Gruß
andi
AW: Datenschutz - schon klar - Anonymisierung...
05.12.2003 08:31:12
Nike
Hi,
ich wollte ja auch nicht die "Originaldaten"
es geht ja nur um die Logik.
Also einfach Werte verändern und Namen verfälschen
und unnötiges Löschen, aber es funkt ja inzwischen...

Bye

Nike
Ergänzung zu: Wo ist der Fehler???
04.12.2003 15:28:44
andi
Hallo Leute,

danke für eure Hilfe. Da es nicht klappt, kann es daran liegen, dass das "ja" nicht direkt in dieser Zelle steht?
Es ist eine Verknüpfung aus einer anderen Tabelle: Wenn dieunddie Zelle leer ist, dann Sverweis in demunddem Blatt, sonst garnischt.

???
andi
Anzeige
AW: Ergänzung zu: Wo ist der Fehler???
04.12.2003 15:31:30
WernerB.
Hallo Andi,

das "ja" wird doch erkannt, sonst würde das Makro kein Blatt kopieren ...

Gruß WernerB.
AW: Ergänzung zu: Wo ist der Fehler???
04.12.2003 15:44:42
FCH
Hallö,

wenn sich der SVWERWEIS Das "ja" aus anderen Zellen holt, schau doch da mal noxh, ob wirklci "ja" drinsteht und nicht eventl. ein Leerzeichen da rein geraten ist.

Gruß
FCH
gute Idee...leider
04.12.2003 15:50:16
andi
Hallo FCH,

die Idee war gut. Habe nachgesehen. Kein Leerzeichen.

Danke
andi
AW: gute Idee...leider
04.12.2003 15:56:43
FCH
Hi Andi,

nimm mal den Code von Nike und schreib die "jas" in Spalte F mal händisch rein. Es kann eigentlich nur das dieser Spalte liegen.

Gruß
FCH
Anzeige
es läuft!!!
04.12.2003 16:23:10
andi
Hallo,

danke an alle, das Programm in der zweiten Version von läuft jetzt. Fragt micht bitte nicht warum.

Habe folgendes gemacht:
1.Überall den Blattschutz entfernt. Kann mir aber nicht vorstellen, das es daran lag.
2.Die Datei geschlossen und nochmal geöffnet.
3.Wie vorgeschlagen per Hand ein ja eingegeben. - Nur in den ersten drei Zeilen.

Und plötzlich lief es. Sogar meine Version.

Habe die drei ja wieder entfernt-es läuft immer noch.

Bezüglich der Frage nach dem Laufzeitfehler:
Nein, wie beschrieben hat das Programm einfach aufgehört als wär es fertig.

Dank an alle
andi

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige