VBA Excel: Neue Spalte beschriften (mittels UserForm)
#1
Code:
Dim kostenstelle As String
Dim tempspalte As Range

Private Sub CommandButton1_Click()
       Call spalteeinfuegen
       Call nameneinfuegen

End Sub

Sub spalteeinfuegen()
       Set cl = Worksheets("Tabelle1").Range("1:1").Find(kostenstelle) 'Suche der Kostenstelle in der Tabelle1
       If Not cl Is Nothing Then cl.EntireColumn.Insert Shift:=xlToLeft 'Einfügen der Tabelle auf der linken Seite und Abbruch falls er den Eintrag nicht findet
End Sub
Sub nameneinfuegen()
   Set cl = Worksheets("Tabelle1").Range("1:1").Find("")
   Sheets("Tabelle1").Range("1:1").Value = UserForm1.TextBox1.Value
End Sub

Private Sub OptionButton1_Click()
kostenstelle = "10713 Geschulte MA"
End Sub

Private Sub OptionButton10_Click()
kostenstelle = "10892 Geschulte MA"
End Sub

Private Sub OptionButton11_Click()
kostenstelle = "10894 Geschulte MA"
End Sub

Private Sub OptionButton2_Click()
kostenstelle = "10714 Geschulte MA"
End Sub

Private Sub OptionButton3_Click()
kostenstelle = "10726 Geschulte MA"
End Sub

Private Sub OptionButton4_Click()
kostenstelle = "10727 Geschulte MA"
End Sub

Private Sub OptionButton5_Click()
kostenstelle = "10741 Geschulte MA"
End Sub

Private Sub OptionButton6_Click()
kostenstelle = "10888 Geschulte MA"
End Sub

Private Sub OptionButton7_Click()
kostenstelle = "10837 Geschulte MA"
End Sub

Private Sub OptionButton8_Click()
kostenstelle = "10666 Geschulte MA"
End Sub

Private Sub OptionButton9_Click()
kostenstelle = "10853 Geschulte MA"
End Sub

Private Sub UserForm_Click()

End Sub
Hi zusammen Blush

Ich habe folgenen stupiden, aber funktionierenden Code. Mittels einer User Form fügt es eine neue Spalte ein und dies jeweils der zugeordneten Kostenstelle (Gruppe). Ich möchte nun mit der neuen Spalte auch in der ersten Zeile den Namen aus der TextBox einfügen. Das Problem ist das sich die Spalten jeweils aufs neue ändern, so dass ich die Benennung irgendwie mit der neuen Spalte kombinieren muss. Nur wie mach ich das?

Ich wäre froh, wenn mir jemand ein zwei Tipps geben könnte, da ich mich nur langsam daran taste.

Bereits jetzt besten Dank!


Angehängte Dateien Thumbnail(s)
   

.xlsm   Schulungsdokumentation_v6.xlsm (Größe: 95,95 KB / Downloads: 4)
Top
#2
Hallo,

am einfachsten dürfte es sein denn unteren Code leicht aendern und auf das Makro "Name einfügen zu verzichten"  
Der Suchlauf nach c1 hat ja dıe richtıge Zelle gefunden! Nach dem Insert Column + 1, einfach über Cells() einfügen!

mfg  Gast 123

Code:
Sub spalteeinfuegen()
       Set cl = Worksheets("Tabelle1").Range("1:1").Find(kostenstelle) 'Suche der Kostenstelle in der Tabelle1
       If Not cl Is Nothing Then
          cl.EntireColumn.Insert Shift:=xlToLeft 'Einfügen der Tabelle auf der linken Seite und Abbruch falls er den Eintrag nicht findet
          Cells(c1.Column + 1, 1) = UserForm1.TextBox1.Text
       End If
End Sub
[-] Folgende(r) 1 Nutzer sagt Danke an Gast 123 für diesen Beitrag:
  • Moby2018
Top
#3
Nachtrag:   Pardpn, korrekter weise natürlich:

Worksheets("Tabelle1").Cells(c1.Column + 1, 1) = UserForm1.TextBox1.Text

mfg  Gast 123
Top
#4
Code:
Cells(c1.Column + 1, 1)
Danke für die Antwort. Der Code funktioniert bei mir leider nicht. Ich hab noch die UserForm1 auf UserForm4 gewechselt. Aber der Fehler liegt wohl woanders.

Weshalb nimmst du Cells(c1.Column + 1, 1) müsste das nicht mit der Such-Einfügen-Funktion gekoppelt sein? :92:


Bzw ich überleg mir die neu eingefügte Spalte zu aktivieren und den Text dann in die aktive Spalte einzufügen oder ein anderer Ansatz wäre den gleichen Code (wie um die Spalte einzufügen) zu wiederholen und anstatt eine ganze Spalte füge ich nur in der ersten Zeile den Text aus der TextBox ein. :92: :69:
Top
#5
Code:
Dim kostenstelle As String
Dim tempspalte As Range

Private Sub CommandButton1_Click()
       Call spalteeinfuegen
       Call aktivate
       Call nameneinfuegen

End Sub


Sub spalteeinfuegen()
       Set cl = Worksheets("Tabelle1").Range("1:1").Find(kostenstelle) 'Suche der Kostenstelle in der Tabelle1
       If Not cl Is Nothing Then cl.EntireColumn.Insert Shift:=xlToLeft 'Einfügen der Tabelle auf der linken Seite und Abbruch falls er den Eintrag nicht findet
End Sub
Sub aktivate()
Set cl = Worksheets("Tabelle1").Range("1:1").Find(kostenstelle) 'Suche der Kostenstelle in der Tabelle1
       If Not cl Is Nothing Then cl.EntireColumn.Activate Shift:=xlToLeft 'Aktivieren der eingefügten Spalte Abbruch falls er den Eintrag nicht findet
End Sub
Sub nameneinfuegen()
   Set cl = Worksheets("Tabelle1").Range("1:1").Find(AktiveCell) 'Suche der aktiven/aktivierten Spalte/Zelle
    If Not cl Is Nothing Then Worksheets(ActiveCell).Insert = UserForm4.TextBox1.Text 'Einfügen des Textes aus dem TextBox4
  
End Sub
Irgendwie so, aber das Shift:=xlToLeft ist ja auch nicht ganz korrekt und beim Namen einfügen hab ich immer noch nicht die genaue Zelle...
Top
#6
Code:
Dim kostenstelle As String
Dim tempspalte As Range

Private Sub CommandButton1_Click()
       Call spalteeinfuegen
       'Call konfigurieren

End Sub

Sub spalteeinfuegen()
       Set zelle_kostenstelle = Worksheets("Tabelle1").Range("1:1").Find(kostenstelle) 'Suche der Kostenstelle in der Tabelle1
       If Not zelle_kostenstelle Is Nothing Then
          zelle_kostenstelle.EntireColumn.Insert Shift:=xlToLeft 'Einfügen der Tabelle auf der linken Seite und Abbruch falls er den Eintrag nicht findet
          Worksheets("Tabelle1").Cells(1, zelle_kostenstelle.Column - 1) = UserForm4.TextBox1.Text
          'Worksheets("Tabelle1").Cells ("D2")
       End If
End Sub

'Sub konfigurieren()
'Dim aktuellecheckbox(1 To 24) As Single

'aktuellecheckbox(1) = OptionButton1.Value
'aktuellecheckbox(2) = OptionButton2.Value
'aktuellecheckbox(3) = OptionButton3.Value
'aktuellecheckbox(4) = OptionButton4.Value
'aktuellecheckbox(5) = OptionButton5.Value

'For i = 1 To 24
  ' If aktuellecheckbox(i) = True Then
  ' Worksheets("Tabelle1").Cells(i + 1, zelle_kostenstelle.Column - 1) = 1
  ' Else
  ' Worksheets("Tabelle1").Cells(i + 1, zelle_kostenstelle.Column - 1) = 0
  ' Next i
'End Sub

Ok habe es noch für meine Bedürfnisse angepasst und funktioniert jetzt super! Danke!
Jetzt mach ich mich daran Werte mit OptionButtons einzufügen....
Top
#7
Hallo,

Sorry das ich mich erst jetzt melde, und merke gerade einen dummen Fehler in:  Cells(c1.Column +1, 1)  !!!
Cells(1, c1.Column +1)  ist natürlich richtig!  Habe dummerweise in der Eile Zeilen und Spalten vertauscht!! 

Die Antwort ist hier, in deinem Code:
Set cl = Worksheets("Tabelle1").Range("1:1").Find(kostenstelle)
Da wird ja mit Find bereit die Kostenstelle gefunden!  Die Set Variable kennt die Adresse, und die Spalte als Zahl.
Man sollte nur nicht Zeilen und Spalten im Code vertauschen!   Ich hoffe ich konnte weiterhelfen!!

mfg  Gast 123
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste