Clever-Excel-Forum

Normale Version: Sheet Namen Generieren VBA
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Schönen Guten Abend Liebe Excel Profis,

ich komme wieder mal nicht weiter und es bedarf eurer Weisheit.
Ich möchte mit einer Userform Ordersätze für Diverse Verschiedene Standorte Generieren.
Über zwei Komboboxen wird über kombo 1 = der Standortname per dropdown ausgesucht
                                                 kombo 2 = der Jeweilige Lieferant für das betreffende Objekt gesucht.
Mit einem Klick auf einem Command Button Soll den eine Sheet Vorlage Kopiert werden und mit den beiden Komboboxen zusammengeführt den Namen des jeweiligen Sheets ergeben.
Die Zu kopierende Vorlage heißt " Bestellscheine_Vorlage", Nach der Generierung der Vorlage wird der Name des Sheets noch in eine Separate Datenbank gespeichert für die weitere Verarbeitung.

Der Code Funktioniert Soweit sehr gut. Nur Zwei Probleme Habe ich noch, wo ich nicht weiter komme:
1: Ich Möchte Das Bei der Generierten Kopie noch zwei Dinge mit Rein kopiert werde und Zwar die Daten Aus den Komboboxen.
     KomboBox1 = Variabler  Sheetname in C1
     KomboBox2 = Variabler  Sheetname in C2
     Ich weiß halt nicht wie ich alles in einem Code bekomme?
2: Die Namen Zusammengeführt Aus CB1 und CB2 kann unter Umständen einen Sehr langen Sheetnamen ergeben, was mir bei ein paar versuchen einen Fehler raus warf wegen zulange Zeichenkette.
    Gibt es eine Möglichkeit die Zeichenkette auf irgendeinen Max wert zu begrenzen im Namen ? 
    
Ich hoffe, das ich mein Problem relativ gut schildern konnte und bin Sicher das Ihr mir helfen könnt,  unten stehend ist mein Code für all das da. Besten Dank
Code:
Private Sub CommandButton1_Click()
 
  Dim BlattName$
  BlattName = Me.ComboBox1.Value & "_" & Me.ComboBox2.Value
    Sheets("Bestellschein_Vorlage").Copy After:=Sheets(Sheets.Count)
If BlattName > "" Then ActiveSheet.Name = BlattName
    ActiveSheet.Name = BlattName
Sheets("Datenbank").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Value = BlattName
Sheets.Value = BlattName.Range("C1") = ComboBox1.Value

End Sub

Private Sub UserForm_Activate()
    ComboBox1.List = Sheets("DatenBank_Lieferanschrift").Range("A2:A20").Value
        ComboBox2.List = Sheets("Datenbank_Lieferant").Range("A2:A35").Value
End Sub
Hallo,

zu 2. könnte so gehen:

Code:
Private Sub CommandButton1_Click()

  Dim BlattName$
  BlattName = Me.ComboBox1.Value & "_" & Me.ComboBox2.Value
  If Len(BlattName) > 100 Then blatname = Left(BlattName, 100) 'wenn Zeichenkette größer hunder, dann nur 100 lang
    Sheets("Bestellschein_Vorlage").Copy After:=Sheets(Sheets.Count)
If BlattName > "" Then ActiveSheet.Name = BlattName
    ActiveSheet.Name = BlattName
Sheets("Datenbank").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Value = BlattName
'Sheets.Value = BlattName.Range("C1") = ComboBox1.Value

End Sub

1. habe ich leider nicht verstanden.
Hallöchen,

falls Du das it der Zeile versucht hast
Sheets.Value = BlattName.Range("C1") = ComboBox1.Value
dann geht das nicht ..

So wird ein Schuh draus:
Sheets(BlattName).Range("C1") = ComboBox1.Value
wobei Du an der Stelle nach wie vor im Blatt Blattname bist und entsprechend
Range("C1") = ComboBox1.Value
ausreichen würde.

Die Aufgabe ist bestimmt falsch rum gestellt -
nicht
KomboBox1 = Variabler Sheetname in C1
KomboBox2 = Variabler Sheetname in C2
sondern besser
in C1 = KomboBox1 = vorderer Teil von Variabler Sheetname
in C2 = KomboBox2 = hinterer Teil von Variabler Sheetname
und geht sicher noch besser zu beschreiben Smile
)
Tausend Dank an Euch beiden!

Alles Klappt wir geschmiert Danke!