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
788to792
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
788to792
788to792
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Frage noch?

Frage noch?
04.08.2006 15:16:36
Jeanette
Hallo,
hier mein Code:
Option Explicit

Private Sub ComboBox1_Change()
If bolEntry = False Then
Sheets(ComboBox1.Value).Select
End If
End Sub


Private Sub CommandButton1_Click()
Leer
End Sub


Private Sub CommandButton2_Click()
Leer01
End Sub


Private Sub ComboBox2_Change()
If bolEntry = False Then
If MsgBox("Bist Du sicher das Du das ABl vom '" & ComboBox2 & "' löschen willst ?", vbYesNo, " Nachfrage löschen !") = vbYes Then
Application.DisplayAlerts = False
ThisWorkbook.Worksheets(ComboBox2.Text).Delete
Application.DisplayAlerts = True
fcnCBLaden
End If
End If
End Sub


Private Sub Worksheet_Activate()
Dim i As Integer
bolEntry = True
With Sheets(1).ComboBox1
.Clear
For i = 1 To Worksheets.Count - 3
.AddItem Worksheets(i).Name
Next
.ListIndex = 0
End With
bolEntry = False
End Sub

Sub Leer()
Dim StrName As String
Dim wks As Worksheet
Dim i As Integer
StrName = InputBox("Neuer Name?")
If prcPruefeName(StrName) = False Then
MsgBox "Der Name " & StrName & " ist bereits vergeben oder er enthält unzulässige Zeichen !", vbCritical
Exit Sub
End If
If StrName <> "" Then
Sheets("Leer").Copy After:=Sheets(1)
Set wks = ActiveSheet
wks.Name = StrName
Call prcSortieren(wks)
End If
End Sub
Sub Leer01()
Dim StrName As String
Dim wks As Worksheet
Dim i As Integer
StrName = InputBox("Neuer Name?")
If prcPruefeName(StrName) = False Then
MsgBox "Der Name " & StrName & " ist bereits vergeben oder er enthält unzulässige Zeichen !", vbCritical
Exit Sub
End If
If StrName <> "" Then
Sheets("Leer 01").Copy After:=Sheets(1)
Set wks = ActiveSheet
wks.Name = StrName
Call prcSortieren(wks)
End If
End Sub
Sub prcSortieren(wks As Worksheet)
Dim i As Integer
For i = 2 To Worksheets.Count - 1
If UCase(Sheets(i).Name) > UCase(wks.Name) Then
wks.Move before:=Sheets(i)
Exit Sub
End If
Next
wks.Move before:=Sheets(Sheets.Count - 1)
End Sub
Function prcPruefeName(strBlattName As String) As Boolean
Dim notAllowed As Variant
Dim wksSheets As Worksheet
Dim intIndex As Integer
'Im Tabellennamen nicht zulässige Zeichen
notAllowed = Array(":", "\", "/", "?", "*", "[", "]")
'Prüfen ob unerlaubte Zeichen vorhanden
For intIndex = 0 To UBound(notAllowed)
If InStr(1, strBlattName, notAllowed(intIndex)) > 0 Then
prcPruefeName = False
Exit Function
End If
Next
For Each wksSheets In ThisWorkbook.Worksheets
If UCase(wksSheets.Name) = UCase(strBlattName) Then
prcPruefeName = False
Exit Function
End If
Next wksSheets
prcPruefeName = True
End Function
Dazu habe ich ein Frage: Die Kombobox zum direkten Auswahl der Blätter aktualisiert sich sofort nach dem ein Blatt eingefügt bzw. gelöscht wird.
Die Kombobox zum löschen der Blättermacht das aber nicht, ist das so normal, oder gehört da wo im Code etwas geändert, wenn ja, wie sieht das dann aus?
Recht herzlichen Dank allen.
LG Jeanette

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Noch ein Fehler !!!
04.08.2006 15:35:40
Jeanette
Hallo nochmals,
hab da dank Heiko noch einen Fehler gefunden:

Function fcnCBLaden()
Dim i As Integer
bolEntry = True
With Sheets(1).ComboBox1
.Clear
For i = 1 To Worksheets.Count - 3
.AddItem Worksheets(i).Name
Next
.ListIndex = 0
End With
With Sheets(1).ComboBox2
.Clear
For i = 1 To Worksheets.Count - 3
.AddItem Worksheets(i).Name
Next
.ListIndex = 0
End With
bolEntry = False
End Function

Dieser Code gehört zum obigen Post dazu. Wenn ich nun ein Blatt einfüge welches an die letzte Stelle sollte, geht es nicht an die letzte Stelle sondern zwischen "Leer" und "Leer 01".
Das hat zur Folge, das das Blatt in meiner Kombobox gar nicht angezeigt wird, kann mir da jemand den Code so ändern, dass das auch noch funktioniert?
Danke an alle die Helfen.
Gruss Jeanette
Anzeige
AW: Frage noch?
04.08.2006 15:40:04
Andi
Hi,
so wie das aussieht, wird die ComboBox1 hier befüllt:

Private Sub Worksheet_Activate()
Dim i As Integer
bolEntry = True
With Sheets(1).ComboBox1
.Clear
For i = 1 To Worksheets.Count - 3
.AddItem Worksheets(i).Name
Next
.ListIndex = 0
End With
bolEntry = False
End Sub

Erweitere das Ereignis einfach analog um die ComboBox2, ich könnte mir vorstellen, dass es dann geht; ich muss aber gestehen, dass ich gerade keine Lust hatte, Deine 5 Pfund Code, von dem das meiste wohl für das konkrete Problem ohne Belang ist, durchzuackern. Wenn mein Vorschalg also nicht zum Ziel führt, dann lade vielleicht mal Deine Mappe hoch, dann kann sich jemand, der die Datei ned kennt, a bisserl besser zurecht finden. Und stell in dem Fall die Frage auf 'noch offen', weil ich nimmer lang am Rechner bin, und andere dann eher drauf aufmerksam werden.
Schönen Gruß,
Andi
Anzeige
AW: Frage noch?
04.08.2006 15:43:35
Jeanette
Hallo,
danke für Deine Antwort, damit kann ich jedoch nichts anfangen, bin leider VBA mässig sehr sehr schlecht.
Die Mappe kann ich nicht hochladen, da sie sehr gross ist. Ich vermute das Problem in dem Bereich, wo das Blatt leer bzw. Leer 01 kopiert und dann Alphabetisch eingereiht wird, hab da schon rumprobiert, komme aber nicht dahinter was bei der Sortierfunktion falsch ist.
Lasse die Frage deshalb noch offen.
Gruss Jeanette
AW: Frage noch?
04.08.2006 19:23:42
Erich G.
Hallo Jeanette,
probiers mal damit:
https://www.herber.de/bbs/user/35583.xls
(So eine Beispielmappe hättest du auch hochladen können...)
Die Sortierung der Blätter wird nicht mehr gebraucht,
ein neues Blatt wird gleich an der richtigen Stelle eingefügt.
Dazu wird nur eine Routine benötigt ("Kopie"), die mit Parameter "Leer" oder "Leer 01" aufgerufen wird.
Die erste Tabelle (mit Comboboxen und Buttons) soll - vermute ich -
nicht in den Comboboxen mit aufgelistet werden.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Frage noch?
04.08.2006 19:36:39
Jeanette
Hallo Erich,
ich danke Dir für Deine Mühe. Mir wäre es aber lieber, wenn jemand meinen Code so umgestalten kann, dass ich ihn nur mehr kopieren und einfügen müsste. Grund ist der, ich mache nun seit Tagen nichts anderes aus verschiedenen Codes, welche ich hier erhalte, diese umzugestalten und zu Probieren ob es klappt.
Bei Deiner Variante ist schon wieder alles anders als bei meinem Code. Nun müsste ich wieder Stundenlang daran rumbasteln bis es geht, und ich habe mitlerweile die Freude daran verloren da ich mich mit VBA überhaupt nicht auskenne, ich hoffe Du verstehst mein Problem.
Sollte es nicht möglich sein meinen Code so zu gestalten das der Fehler mit dem Sortieren behoben wird, dann sagt es mir bitte, dann lasse ich es so wie es nun ist.
Danke Dir Erich für Deine Mühe.
LG Jeanette
Anzeige
AW: Frage noch?
04.08.2006 20:24:18
Erich G.
Hallo Jeanette,
meine Frage:
Funzt der Code in der Mappe, die ich hochgeladen habe, wie Du Dir das vorgestellt hast?
Wenn ja, dann habe ich doch eigentlich das getan, was Du wünschst - Deinen Code so umgestaltet,
dass Du ihn aus meiner Mappe in Deine kopieren kannst.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: Frage noch?
04.08.2006 21:37:21
Jeanette
Hallo,
ja, so wie in deiner beispielmappe funktioniert es. Meine Datei ist aber so umfangreich das ich es nicht schaffe deinen code einzubauen, wenn ich was ändere, kommen nur mehr fehlermeldungen.
Ausserdem verwende ich keine Commandbuttons um blätter anzulegen, sondern mache das mit einer schaltfläche und einem Makro.
Den code, welchen ich gepsotet habe, ist nur ein bruchteil von dem ganzen code. Und bis jetzt, konnte mir immer geholfen am beispiel dieses codes.
Stelle die frage wieder auf offe, vielleicht findet sich da doch noch wer, der mir das ganze so bereitstellen kann, das es nicht mehr so kompliziert ist.
LG Jeanette
Anzeige
AW: Frage noch?
04.08.2006 23:15:27
Erich G.
Hallo Jeanette,
wenn Du den von Dir geposteten Code (im Code der Tabelle und in einem Modul)
durch den entsprechenden Code aus meiner Mappe ersetzt, sollte das funzen.
Etwas gewundert habe ich mich über Deine Bemerkung, Du hättest in deiner Mappe keine CommandButtons.
Wozu gehören dann Deine beiden Makros CommandButton1_Click() und CommandButton2_Click() ?
Ich lasse den Thread offen.
Grüße von Erich aus Kamp-Lintfort
AW: Frage noch?
04.08.2006 19:28:00
Erich G.
Hallo nochmal.
Zu deiner ersten Frage:
Die Combobox1 hat sich nach deinem Code nicht selbst aktualisiert.
Bei Erstellung eines neuen Blatts wird dieses aktiv.
Wenn du dann die erste Tabelle wieder aktivierst, wird die Aktualisierung (jetzt beider Comboboxen) aufgerufen.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Frage noch?
05.08.2006 12:08:56
Jeanette
Hallo Erich,
danke das du noch immer mir hilfst. Tsja, wie soll ich sagen, die beiden codes für die commandbuttons sind wahrscheinlich umsonst da, es wird daher kommen das ich mich nicht wirklich auskenne und irgendwann hats so halbwegs gepasst, da habe ich es gelassen, sicher ist sicher.
Ich habe, wie schon gesagt 2 Schaltflächen denen ich diese Codes zuweise:

Sub Leer()
Dim StrName As String
Dim wks As Worksheet
Dim i As Integer
StrName = InputBox("Neuer Name?")
If prcPruefeName(StrName) = False Then
MsgBox "Der Name " & StrName & " ist bereits vergeben oder er enthält unzulässige Zeichen !", vbCritical
Exit Sub
End If
If StrName <> "" Then
Sheets("Leer").Copy After:=Sheets(1)
Set wks = ActiveSheet
wks.Name = StrName
Call prcSortieren(wks)
End If
End Sub


Sub Leer01()
Dim StrName As String
Dim wks As Worksheet
Dim i As Integer
StrName = InputBox("Neuer Name?")
If prcPruefeName(StrName) = False Then
MsgBox "Der Name " & StrName & " ist bereits vergeben oder er enthält unzulässige Zeichen !", vbCritical
Exit Sub
End If
If StrName <> "" Then
Sheets("Leer 01").Copy After:=Sheets(1)
Set wks = ActiveSheet
wks.Name = StrName
Call prcSortieren(wks)
End If
End Sub

Und mit diese Codes gehts ja auch, ausser die kleinen fehler die ich noch gefunden habe.
Und mit deinem Code geht dann gar nichts mehr weil ich ja keine Commandbuttons habe, und an meine Schaltflächen auch nicht sagen kann, sie sollen deinen Code verwenden.
LG Jeanette
Anzeige
AW: Frage noch?
05.08.2006 17:12:02
schauan
Hallöchen,
das mit dem code für die Schaltflächen ist gar nicht so schwer. Wenn Du Dir den code anzeigen lässt dann kommt automatisch der code dieser Schaltfläche.
Button einfügen, code anzeigen:

Private Sub CommandButton1_Click()
End Sub

Je nachdem ob der Button der erste oder 10te oder welcher auch immer steht da eine Nummer CommandButton1 oder CommandButton10 oder...
Da schreibst Du dann das Leer oder Leer01 rein und fertig. So ein code darf nur nicht 2 x den gleichen Namen haben. Wenn Deine Buttons 1 und 2 sind kannst Du den code von Erich komplett übernehmen und dieses leere Makro weglöschen. Haben sie eine andere Nummer musst Du den code nur so anpassen.

Hoffe geholfen zu haben
Grüße von André aus Gera - Excel-97-2003

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige