513 Aufrufe
Gefragt in Tabellenkalkulation von volli0 Einsteiger_in (41 Punkte)
Guten Morgen,

vielleicht kann mir hier jemand von Euch helfen, ich komme einfach nicht weiter.

Ich habe ein Userform, in dem verschiedene Label bereits durch einen Code mit Inhalten versehen werden. Jetzt möchte ich diese Inhalte gerne in die Tabelle selbst übernehmen, und das am liebsten auch hintereinander, sprich er soll Label12 und Label13 zusammenziehen und in eine Zelle schreiben.

Bislang habe ich folgenden Code:

Private Sub CommandButton3_Click()
    Dim strgWas As String
    Dim rgWohin As Long
        rgWohin = Sheets("IMO-erstellen").Range("A18:A24").Row + 1
        strgWas = Me.Label59 & """ me.label60"
End Sub

Mein Problem ist, er läuft nicht, kann mir jemand helfen woran das liegt ?

Danke vorab

Marco

17 Antworten

0 Punkte
Beantwortet von steffen2 Experte (6.4k Punkte)
teste mal das:

strgWas = Me.Label59 & " beliebiger.Text "  & Me.Label60
0 Punkte
Beantwortet von volli0 Einsteiger_in (41 Punkte)
Moin Steffen,

danke für die Antwort, nur leider übernimmt er die daten nicht ins sheet.

Gruß

Marco
0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)
Hallo Marco,

du weist zwar den Inhalt einer Variable zu, schreibst diese Variable aber nicht in das Arbeitsblatt.

Und was willst du mit dem Befehl

 rgWohin = Sheets("IMO-erstellen").Range("A18:A24").Row + 1

erreichen. Das ergibt immer 19?

Gruß

M.O.
0 Punkte
Beantwortet von volli0 Einsteiger_in (41 Punkte)
Hi,

ich möchte mit rgwohin erreichen, das der Inhalt der Label ab A18 eingetragen werden, und mit jedem neuen übermitteln der daten in die jeweils nächste freie zeile.

Gruß

Marco
+1 Punkt
Beantwortet von m-o Profi (22.7k Punkte)
Bearbeitet von m-o

Hallo Marco,

versuche es mal so:

Private Sub CommandButton3_Click()
    
Dim lngWohin As Long

With Worksheets("IMO-erstellen")

 'letzte beschriebene Zelle in Spalte A ermitteln und um 1 erhöhen für nächste freie Zelle
 lngWohin = .Cells(Rows.Count, 1).End(xlUp).Row + 1
 'Prüfen, ob die Einfügezelle mindestens 18 ist, ansonsten entsprechend ändern
 If lngWohin < 18 Then lngWohin = 18
 'Daten ins Blatt eintragen
 .Cells(lngWohin, 1) = Me.Label59 & Me.Label60

End With
End Sub

Gruß

M.O.

0 Punkte
Beantwortet von volli0 Einsteiger_in (41 Punkte)
Wenn ich mal so sagen darf m.o.

Du bist mein Held :-) Danke funktioniert!

kann man das noch so anpassen, das zwischen dem einzelnen labeln ein leerzeichen ist ?
0 Punkte
Beantwortet von steffen2 Experte (6.4k Punkte)
schau dir meine Antwort oben an. Da findest du genau die Antwort auf diese Frage
0 Punkte
Beantwortet von volli0 Einsteiger_in (41 Punkte)
Ich sag ja ihr seit meine Helden, muss ich ja schreiben

Vielen Dank, hast mir mein Tagesgeschäft einfacher gemacht :-)

Danke

Marco
0 Punkte
Beantwortet von volli0 Einsteiger_in (41 Punkte)
Moin,

Jetzt muss ich doch nochmal was fragen.

Er übermittelt ja genau ab Zeile 18 wie es sein soll.

Nun habe ich aber ein Dokument, bei dem ab Zeile 40 wieder was in der Tabelle geschrieben steht. Sobald dieses der Fall ist, übermittelt er die Daten nicht mehr.

Kann ich es einstellen, das er nur die Zeilen 18-39 betrachtet ?
+1 Punkt
Beantwortet von m-o Profi (22.7k Punkte)

Hallo,

das kannst du z.B. so machen:

Private Sub CommandButton3_Click()
Dim lngZeile

With Worksheets("IMO-erstellen")

 'leere Zeile zwischen 18 und 39 finden
 For lngZeile = 18 To 39
    If IsEmpty(.Cells(lngZeile, 1)) Then
      'Daten ins Blatt eintragen
      .Cells(lngZeile, 1) = Me.Label59 & " " & Me.Label60
      'Makro verlassen
      Exit Sub
    End If
 Next lngZeile
End With

'keine leere Zeile gefunden, dann Fehlermeldung ausgeben
MsgBox "Achtung! Zwischen Zeile 18 und 39 wurden keine leere Zeilen gefunden! Es wurden keine Daten übernommen!", 16, "Fehler"

End Sub

Gruß

M.O.

...