Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CheckBox
BildScreenshot zu CheckBox CheckBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen

Userform ausgeben | Herbers Excel-Forum


Betrifft: Userform ausgeben von: Martin
Geschrieben am: 21.01.2010 10:06:06

Morgen Leute,

hab gestern schonmal nen Thread aufgemacht. Hier jetzt nochmal frisch mit Beispieldatei

https://www.herber.de/bbs/user/67376.xls

gut ich versuchs mal etwas detaillierter zu beschreiben:

ich hab eine große liste, die in mehrere blöcke unterteilt ist. zwischen diesen blöcken gibt es immer wieder leerzeilen und anschließend dann eben die blockübersicht mit überschrift

meine intention ist es eine art "Neuen Eintrag verfassen" button einzubinden.
nach betätigen des buttons öffnet sich dann das userform mit mehreren Comboboxen und textboxen.

die erste Combobox ist mit der suchfunktion verknüpft (alle Überschriften der Blöcke erfasst). d.h. hier bestimmte ich, wo der neue eintrag zu stehen hat. die anderen boxen sind dann eben dazu da die zeile zu ändern. sobald der Button "eintrag erstellen" getätigt wird soll dann folgendes ablaufen:

-Tabellenblock, in der der neue Eintrag eingefügt werden soll wird gesucht
-neue Zeile wird erstellt (kopieren und einfügen)
- die restlichen combo- und textboxen ändern die werte der neu erstellten Zeile ab -- diesen punkt bekomme ich nicht hin....userform passt soweit und alles nur eben nicht, die angabe wo die Werte des Userforms eingefügt werden...

war das soweit verständlich?

viele grüße

martin

  

Betrifft: Unsinn von: Rudi Maintaire
Geschrieben am: 21.01.2010 12:45:19

Hallo,
sorry, aber die Form ist unsinnig.
demnächst bist du wieder hier und willst irgendwelche Auswertungen machen.
Halte dich an datenbankartige Strukturen. 'Schön' ausgeben kannst du es dann immer noch.

Gruß
Rudi


  

Betrifft: AW: Unsinn von: Martin
Geschrieben am: 21.01.2010 13:42:03

hallo,

wieso ist es unsinn? ich verändere ja anschließend nichts mehr...geht mir erstmal darum, ob es überhaupt umsetzbar ist und wenn dann wie?

wie würden diese datenbankartigen strukturen denn aussehen?

Danke für Eure Hilfe

gruß martin


  

Betrifft: AW: Userform ausgeben von: fcs
Geschrieben am: 21.01.2010 13:56:18

Hallo Martin,

mit den folgenden Anpassungen für das Erstellen-Makro wird die neue Zeile vor der 1. Leerzeile eingefügt die unterhalb der Titelzeile in der Spalte C gefunden wird.

Gruß
Franz

Private Sub CommandButton2_Click()

    Dim c As Range
    Dim Zeile As Long
    Dim SuchWert As String
    
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    SuchWert = CB_Projektart.Value
    If Me.TB_Name = "" Then
      MsgBox "Es idt keine Name für das Projekt eingegeben"
      Exit Sub
    End If

    With Worksheets("Übersicht")
        'Datenblock und nachfolgende Leerzeile suchen
        Set c = .Range("C:C").Find(SuchWert, LookIn:=xlValues, LookAt:=xlWhole)
        
        If Not c Is Nothing Then
            Zeile = c.Row
        'Quercheck ob 1. Zeile vom Block
            Do Until .Cells(Zeile, 2).Value = "Aufwand" And .Cells(Zeile, 3).Value = SuchWert
              Zeile = Zeile + 1
              If Zeile > .Cells.SpecialCells(xlCellTypeLastCell).Row Then
                MsgBox "Zeile Aufwand - Thema nicht gefunden", vbInformation + vbOKOnly, _
                    "Neues Projekt erstellen"
                Exit Sub
              End If
            Loop
        'Leerzeile nach Block suchen
            Do Until .Cells(Zeile, 3).Value = ""
              Zeile = Zeile + 1
              If Zeile > .Cells.SpecialCells(xlCellTypeLastCell).Row Then
                MsgBox "Leerzeile nach Thema nicht gefunden", vbInformation + vbOKOnly, _
                    "Neues Projekt erstellen"
                Exit Sub
              End If
            Loop
        'Neue Zeile einfügen
            .Rows(Zeile).Insert Shift:=xlDown
            With .Rows(Zeile)
                'Daten/Formate der Zeile oberhalb kopieren
                .Rows.Offset(-1, 0).Copy Destination:=.Range("A1")
                'Daten in Spalten A bis O der Zeile löschen
                .Range("A1:O1").ClearContents
            End With
        'Eingabe-Werte eintragen
            .Cells(Zeile, 1) = Me.CB_Prio
            .Cells(Zeile, 2) = Me.CB_Aufwand
            .Cells(Zeile, 3) = Me.TB_Name
            .Cells(Zeile, 4) = Me.CB_Leitung
            .Cells(Zeile, 5) = Me.CB_Unterstützung
'            .Cells(Zeile, 6) = Me.cbS1
'            .Cells(Zeile, 7) = Me.cbS2
'            .Cells(Zeile, 8) = Me.cbS3
'            .Cells(Zeile, 9) = Me.cbS4
            .Cells(Zeile, 11) = Me.ComboBox4
            .Cells(Zeile, 12) = Me.ComboBox9
            .Cells(Zeile, 13) = Me.ComboBox7
            .Cells(Zeile, 14) = Me.ComboBox8
            .Cells(Zeile, 15) = Me.TB_Kommentar
        End If
    End With
    Application.ScreenUpdating = True
    Application.EnableEvents = True
    Unload UserForm1

End Sub



  

Betrifft: AW: Userform ausgeben von: Martin
Geschrieben am: 21.01.2010 14:51:52

Hallo Franz,

vielen Dank für deine Hilfe. Kann die einzelnen schritte dank deiner beschreibung sehr gut nachvollziehen.
Leider funktioniert es allerdings noch nicht reibungslos.

Zum einen funktioniert das erzeugen und befüllen der neuen zeilen, nur wenn ich Thema 4 auswähle. Dies könnte meiner meinung daran liegen, dass der vielleicht code versucht, die erste leere zeile nach dem block anzuwählen und in den spalten D und E ja immer kreuze sind wegen der filterfunktion(wobei er ja eigentlich die spalte c nur durchsucht?!?)

das wäre der fehler, den ich mir erklären könnte, allerdings konnte ich ihn nicht beheben und beim rauslöschen der kreuze tut sich auch absolut nichts. keine fehlermeldung, aber auch kein einfügen neuer zeilen

zum anderen kann ich über das angeben des Status nicht die Ampel steuern. Einen fehler hab ich bereits selbst gefunden. man kopiert ja die daten und formatierung der zeile und löscht anschließend den inhalt.
mit .Range("A1:O1").ClearContents löscht man ja aber die ganze zeile.

habe es jetzt so umgebaut:
.Range("A1:f1").ClearContents
.Range("j1:O1").ClearContents

jetzt müsste die ampel ja eigentlich noch vorhanden sein und mit hilfe der bedingten formatierung auf die statusangabe zugreifen können....leider jedoch fehlanzeige...

ich hoffe ihr könnt mir helfen!

viele grüße martin


  

Betrifft: ..sorry fc für einmischen... von: robert
Geschrieben am: 21.01.2010 16:22:03

hi,

hab mir erlaubt diese datei anzuschauen, sollte jetzt funktionieren

gruß
robert

https://www.herber.de/bbs/user/67392.xls


  

Betrifft: sorry, sollte fcs heissen :-) owT-Gruß von: robert
Geschrieben am: 21.01.2010 16:27:27




  

Betrifft: AW: sorry, sollte fcs heissen :-) owT-Gruß von: Martin
Geschrieben am: 21.01.2010 17:38:27

Danke Leute,

hab alles hinbekommen. Ist echt klasse geworden. Ich danke euch vielmals

gruß martin


Beiträge aus den Excel-Beispielen zum Thema "Userform ausgeben"