Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1544to1548
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
Neuer Datensatz in nächste leere Zeile
27.02.2017 00:17:38
Kay
Einen schönen guten Abend.
ich würde euch gerne mal eine ausgangssitution schildern an der ich nun irgendwie nicht weiter komme.
Zwei arbeitsblätter, das eine dient als eingabe maske, die dort eingetragen daten sollen in eine tabelle ( intelligente) in arbeitsblatt 2 per buttom übertragen werden. das problem was sich ergibt ist, da ich das ganze per copy paste über den makrorecorder in excel gemacht habe das er immer die daten in B2-W2 schreibt. ein neuer datensatz sollte aber dann in B3-W3 stehen. Die spalte A enthält eine Formel =A6&" "&A7 diese sollte dann durch die intellegente Tabell in den darunter liegenden zellen weitergeführt werden da ich dieses feld in einem weitern arbeitsblatt als dropdown ansteuere. wie bekomme ich das hin das neue datensätze immer in der nächsten leeren zeile geschrieben werden?
Ich habe schon einige codes die ich im internet gefunden habe durch probiert, der einzigste der irgendwas gemacht hat ist der in der vorletzten zeile in dem dokument steht was ich mit anhänge, damit wird zumindest schon mal die nächste freie zeile markiert, aber das wars auch, schreiben tut er es trotzdem in die erste. ich glaube das mein anfang schon etwas falsch ist, mein buttom ist ein nur eine form die das makro hat zugewiesen bekommen.
ich bin echt für jede hilfe dankbar sonst bekomme ich echt noch mehr graue haare.
Danke für eure hilfe
Userbild

27
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Neuer Datensatz in nächste leere Zeile
27.02.2017 07:05:53
MCO
Guten Morgen!
Zunächst einmal folgendes:
Wenn du deinen Code hier postest, dann bitte nicht als Screenshot sonder einfach reinkopieren. Damit müssen dann nicht alle weider bei Null anfangen und das nachbauen, was du eh schon hast. Noch besser wäre es, die Datei hochzuladen. Dann gilt es allerdings auf Datensicherheit zu achten, also Personennamen, Beträge, Geschäftsdaten etc zu ersetzen / entfernen / anonymisieren.
Zum Thema:
Die copy-Funktion kann man ganz schön zusammenfassen:
z.B.

Range("B14").Copy Range("B26")

mehr Hilfe dazu gibts es in VBA oben recht, Stichwort "copy"
Vor range kannst du auch jeweils noch das Sheet angeben.
Statt die Bereiche einzeln zu kopieren kannst du auch Bereichsweise kopieren
Einfügen mußt du nach wie vor nur in 1 Zelle
z.B.

Range("B14:H14").Copy Range("B26")

Letzte beschriebene Zeile ermitteln
Wenn du mal mit den Cursor-Tasten+STRG ein bissl spielst, wirst du feststellen dass du hinter dem ende der letzten Zeile nach unten zur letzten Zeile im Blatt kommst, nach oben dann wieder zur letzten benutzten Zeile. Diese Funktion sieht in VBA dann so aus
letzte_Zeile = range("B" & rows.count).End(xlUp).Row

Die nächste Zeile ist also

letzte_Zeile +1

Die Copy-Funktion wäre dann

Sheets("Mitarbeiter anlegen").Range("B14:H14").Copy Sheets("Gesamtübersicht").Range("B" &  _
letzte_Zeile +1)

Vorrausgesetzt natürlich, dass Deine Spalte "B" auch immer beschrieben ist.
Viel Erfolg!
Gruß, MCO
Anzeige
AW: Neuer Datensatz in nächste leere Zeile
27.02.2017 09:15:40
Werner
Hallo Kay,
wenn deine Zellen, die du kopieren willst, so gleichmässig verteilt sind wie es sich in deinem Teilauszug darstellt, dann könnte man da mit einer Schleife drüber,
Ich habe es jetzt mal für die Zellen gemacht, die in deinem schönen Bildchen zu sehen sind. Es sind ja wohl aber noch ein paar mehr. Dazu kann ich aber nichts sagen, weil dein Bildchen nicht mehr Infos bietet. Zu dem Bildchen selbst, hat dir ja mein Vorredner schon was geschrieben.
Sub Schaltfläche1_Klicken()
Dim loLetzte As Long
Dim z As Long, i As Long, j As Long
j = 2
With Sheets("Gesamtübersicht")
loLetzte = .Range("B:B").Cells.Find("*", searchdirection:=xlPrevious).Row + 1
End With
With Sheets("Mitarbeiter anlegen")
For z = 22 To 25 Step 3
For i = 9 To 13 Step 2
Sheets("Gesamtübersicht").Cells(loLetzte, j) = .Cells(z, i)
j = j + 1
Next i
Next z
End With
End Sub
Gruß Werner
Anzeige
AW: Neuer Datensatz in nächste leere Zeile
27.02.2017 09:46:11
Kay
Einen schönen guten Morgen,danke für die schnelle antworten.
Hier ist jetzt einmal der gesamte code:
Sub Makro1()
' Makro1 Makro
Range("I4").Select
Selection.Copy
Sheets("Gesamtübersicht").Select
Range("B2").Select
ActiveSheet.Paste
Sheets("Mitarbeiter anlegen").Select
Range("I7:K7").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Gesamtübersicht").Select
Range("C2:E2").Select
ActiveSheet.Paste
Sheets("Mitarbeiter anlegen").Select
Range("I10").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Gesamtübersicht").Select
Range("F2").Select
ActiveSheet.Paste
Sheets("Mitarbeiter anlegen").Select
Range("K10").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Gesamtübersicht").Select
Range("G2").Select
ActiveSheet.Paste
Sheets("Mitarbeiter anlegen").Select
Range("M10").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Gesamtübersicht").Select
Range("H2").Select
ActiveSheet.Paste
Sheets("Mitarbeiter anlegen").Select
Range("I13").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Gesamtübersicht").Select
Range("I2").Select
ActiveSheet.Paste
Sheets("Mitarbeiter anlegen").Select
Range("K13").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Gesamtübersicht").Select
Range("J2").Select
ActiveSheet.Paste
Sheets("Mitarbeiter anlegen").Select
Range("M13").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Gesamtübersicht").Select
Range("K2").Select
ActiveSheet.Paste
Sheets("Mitarbeiter anlegen").Select
Range("I16").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Gesamtübersicht").Select
Range("L2").Select
ActiveSheet.Paste
Sheets("Mitarbeiter anlegen").Select
Range("K16").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Gesamtübersicht").Select
Range("M2").Select
ActiveSheet.Paste
Sheets("Mitarbeiter anlegen").Select
Range("M16").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Gesamtübersicht").Select
Range("N2").Select
ActiveSheet.Paste
Sheets("Mitarbeiter anlegen").Select
Range("I19").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Gesamtübersicht").Select
Range("O2").Select
ActiveSheet.Paste
Sheets("Mitarbeiter anlegen").Select
Range("K19").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Gesamtübersicht").Select
Range("P2").Select
ActiveSheet.Paste
Sheets("Mitarbeiter anlegen").Select
Range("M19").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Gesamtübersicht").Select
Range("Q2").Select
ActiveSheet.Paste
Sheets("Mitarbeiter anlegen").Select
Range("I22").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Gesamtübersicht").Select
Range("R2").Select
ActiveSheet.Paste
Sheets("Mitarbeiter anlegen").Select
Range("K22").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Gesamtübersicht").Select
Range("S2").Select
ActiveSheet.Paste
Sheets("Mitarbeiter anlegen").Select
Range("M22").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Gesamtübersicht").Select
Range("T2").Select
ActiveSheet.Paste
Sheets("Mitarbeiter anlegen").Select
Range("I25").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Gesamtübersicht").Select
Range("U2").Select
ActiveSheet.Paste
Sheets("Mitarbeiter anlegen").Select
Range("K25").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Gesamtübersicht").Select
Range("V2").Select
ActiveSheet.Paste
Sheets("Mitarbeiter anlegen").Select
Range("M25").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Gesamtübersicht").Select
Range("W2").Select
ActiveSheet.Paste
Range("b2").Offset(1, 0).Select
Sheets("Mitarbeiter anlegen").Select
End Sub
irgendwie ist der anfang schon mal ganz falsch, das denke ich mal kommt daher weil ich nicht diese activx steuerelemte als buttom genutzt habe, da sollte ich vielleicht mal anfangen oder kann ich das einfach oben in mein script reinschreiben.
das ist die eingabe maske, und die einzelen werte sollen dann neben einander stehen.
Userbild

Anzeige
AW: Neuer Datensatz in nächste leere Zeile
27.02.2017 11:08:53
Werner
Hallo Kay,
Makro in ein allgemeines Modul.
Rechtsklick auf deinen Speichern-Button - Makro zuweisen - diese Makro dem Button zuweisen
Public Sub Daten_Speichern()
Dim loLetzte As Long
Dim z As Long, i As Long, j As Long
j = 6
With Sheets("Gesamtübersicht")
loLetzte = .Range("B:B").Cells.Find("*", searchdirection:=xlPrevious).Row + 1
End With
With Sheets("Mitarbeiter anlegen")
Sheets("Gesamtübersicht").Cells(loLetzte, 2) = .Range("I4")
.Range("I7:K7").Copy Sheets("Gesamtübersicht").Cells(loLetzte, 3)
For z = 10 To 25 Step 3
For i = 9 To 13 Step 2
Sheets("Gesamtübersicht").Cells(loLetzte, j) = .Cells(z, i)
j = j + 1
Next i
Next z
End With
End Sub
Gruß Werner
Anzeige
AW: Neuer Datensatz in nächste leere Zeile
27.02.2017 12:18:29
Werner
Hallo Kay,
hab noch nen Fehler drin
.Range("I7:K7").Copy Sheets("Gesamtübersicht").Cells(loLetzte, 3)
die 3 bitte in eine 2 ändern
.Range("I7:K7").Copy Sheets("Gesamtübersicht").Cells(loLetzte, 2)
Gruß Werner
AW: Neuer Datensatz in nächste leere Zeile
27.02.2017 14:55:21
Kay
Super, bis auf I4 nimmt er alles. Welchen Wert sollte ich verändern das I4 auch noch rüber geht
AW: Neuer Datensatz in nächste leere Zeile
27.02.2017 19:52:29
Werner
Hallo Kay,
sorry, mein Fehler. Ich hatte beim Testen im Blatt Mitarbeiter anlegen in der Zelle I4 keinen Wert eingetragen und dir deshalb das mit der Änderung geschickt.
Bitte hier aus der 3 wieder eine 2 machen.
.Range("I7:K7").Copy Sheets("Gesamtübersicht").Cells(loLetzte, 3)
Gruß Werner
Anzeige
AW: Neuer Datensatz in nächste leere Zeile
27.02.2017 20:55:40
Kay
Klappt super jetzt geht das so wie ich es brauch.da ich nun schon bei der nächsten EingabeMaske bin und Tabelle und auch und diese genauso funktionieren soll, interessiert es mich mit welchen befehlen in diesen Codec den die einzelnen Zellen in der Maske angesteuert werden
AW: Neuer Datensatz in nächste leere Zeile
27.02.2017 22:43:33
Werner
Hallo Kay,
hier mit ein paar Kommentaren. Die Variablennamen habe ich mal umbenannt, dann wird es hoffentlich auch klarer.
Public Sub Daten_Speichern()
Dim loLetzte As Long
Dim Zeile As Long, Spalte As Long, Spaltenzähler As Long
'## Variable für die Spalte im Blatt Gesamtübersicht
'## in die die Werte eingefügt werden
'## beim Start der Wert 6 = Spalte F
Spaltenzähler = 6
With Sheets("Gesamtübersicht")
'## Ermitteln der letzten belegten Zelle in Spalte B +1 =erste freie Zelle
loLetzte = .Range("B:B").Cells.Find("*", searchdirection:=xlPrevious).Row + 1
End With
With Sheets("Mitarbeiter anlegen")
'## Wert aus I4 in Zelle erste freie Zeile Spalte 2 (B)
'## I4 bezieht sich auf Mitarbeiter anlegen, da der Code in einer
'## With - End With Klammer steht wird die Zelle/Range mit dem Punkt
'## vor dem Range eindeutig zum Tabellenblatt referenziert
'## der Punkt ist wichtig
Sheets("Gesamtübersicht").Cells(loLetzte, 2) = .Range("I4")
'## Kopieren Bereich I7:K7 nach Gesamtübersicht
'## Zelle erste freie Zeile Spalte 3 (C)
.Range("I7:K7").Copy Sheets("Gesamtübersicht").Cells(loLetzte, 3)
'## äußere Schleife über die Zeilen von Zeile 10 bis Zeile 25
'## nach jedem Durchlauf wird der Zähler um 3 hochgesetzt
'## also Zeile 10, Zeile 13, Zeile 16 ....
For Zeile = 10 To 25 Step 3
'## innere Schleife über die Spalten von 9 (I) bis 13 (M)
'## nach jedem Durchlauf wird der Zäher um 2 hochgesetzt
'## also 9 (I), 11 (K), 13 (M)
For Spalte = 9 To 13 Step 2
'## erst wird die innere Schleife (Spalten) komplett durchlaufen und die Werte
'## aus den entsprechenden Zellen übertragen
Sheets("Gesamtübersicht").Cells(loLetzte, Spaltenzähler) = .Cells(Zeile, Spalte)
'## nach jedem Durchlauf wird der Spaltenzähler
'## um 1 hochgezählt. so dass im Zielblatt die
'## nächste Spalte angesprochen wird
Spaltenzähler = Spaltenzähler + 1
'## nächste Spalte
Next Spalte
'## nächste Zeile
Next Zeile
End With
End Sub
Gruß Werner
Anzeige
AW: Neuer Datensatz in nächste leere Zeile
28.02.2017 21:49:21
Kay
Also das mit der inneren schleife und äussern damit legt man also die spalten und zeilen fest,und wenn man einzelne zellen hat wie i4 was also nicht in einer wiederkehrend reihenfolge ist dann mit range. steht also z immer für zeile, i für spalte und j für den anfangsspalte in der die schleife im zielblatt übertragen wird. ist das vom sinn her richtig?
Ich habe hier mal was für die neue maske bei der ich gerade bin.
Sub CommandButton1_Click()
Dim loLetzte As Long
Dim z As Long, i As Long, j As Long
j = 9
With Sheets("gesamt zeit")
loLetzte = .Range("A:A").Cells.Find("*", searchdirection:=xlPrevious).Row + 1
End With
With Sheets("Arbeitszeitenmaske")
Sheets("gesamt zeit").Cells(loLetzte, 1) = .Range("I4")
.Range("I7").Copy Sheets("gesamt zeit").Cells(loLetzte, 2)
.Range("J7").Copy Sheets("gesamt zeit").Cells(loLetzte, 3)
.Range("H10").Copy Sheets("gesamt zeit").Cells(loLetzte, 4)
.Range("I10").Copy Sheets("gesamt zeit").Cells(loLetzte, 5)
.Range("J10").Copy Sheets("gesamt zeit").Cells(loLetzte, 6)
.Range("K10").Copy Sheets("gesamt zeit").Cells(loLetzte, 7)
.Range("K12").Copy Sheets("gesamt zeit").Cells(loLetzte, 8)
For z = 19 To 29 Step 2
For i = 10 To 13 Step 1
Sheets("gesamte zeit").Cells(loLetzte, j) = .Cells(z, i)
j = j + 1
Next i
Next z
End With
End Sub
der obere teil soll wie im unteren bild gezeigt die werte übernehmen und die schleife soll bei montag bei der uhrzeit beginnen
Userbild
j=9 sollte die anfang spalte montag im zieltaabelle zeigen
Userbild
Anzeige
AW: Neuer Datensatz in nächste leere Zeile
01.03.2017 11:43:30
Werner
Hallo Kay,
ob i die Zeile, die Spalte oder sonst etwas sein soll bleibt dir überlassen. i ist der Name einer Variablen, die du deklarierst. Welchen Namen du dafür verwendest bleibt dir überlassen. Du solltest nur vermeiden einer Variablen den Namen eines VBA-Schlüsselwortes zu geben, das kann zu Problemen führen. So ist z.B. Worksheets ein VBA-Schlüsselwort, das solltest du dann nicht als Variablennamen verwenden.
Benutze mal den Code so wie ich ihn hier einstelle. Da habe ich die Variablennamen geändert. So ist der Code für dich dann auch einfacher zu lesen.
Das mit der äußeren und inneren Schleife so wie du es in deinem Code hattest stimmt so. Das ist aber natürlich nicht fix. Das musst du an deine jeweiligen Bedürfnisse anpassen.
In deinem jetzigen Fall willst du Zeilenweise (äußere Schleife) die einzelnen Spalten (innere Schleife) kopieren/zuweisen. Das heißt, du musst mit er ersten Zeile beginnen (äußere Schleife) und dann in dieser Zeile die erste Spalte bearbeiten, dann die zweite Spalte ... Die Schleifen müssen also so angelegt sein, dass in der inneren Schleife die verschiedenen Spalten abgearbeitet werden und erst dann über die äußere Schleife zur nächsten Zeile gegangen wird.
Wolltest du die Daten Zeilenweise für mehrere Spalten abarbeiten, dann müsstest du die äußere mit der inneren Schleife tauschen. Bedeutet: Äußere Schleife läuft über die Spalten, in der inneren Schleife werden dann die einzelnen Zeilen der Spalte abgearbeitet, dann wird über die äußere Schleife zur nächsten Spalte gewechselt.
Dein Makro habe ich dann noch geändert. Zusammenhängende Zellbereiche sollten auch zusammen bearbeitet werden und nicht, so wie du es hattest, die Zellen einzeln.
Range("A1").Copy irgendwohin
braucht genauso lange wie
Range("A1:AA1000").Copy irgendwohin
obwohl im ersten Fall eine einzige Zelle kopiert wird, im zweiten ein großer Zellbereich.
Zudem habe ich in deinem Fall auf Copy verzichtet und die Zellwerte direkt zugewiesen
Range("A1").Value = Sheets("IrgendeinBlatt").Range("C30").value
anstatt
Sheets("IrgeneinBlatt").Range("C30").Copy Range("A1")
Die direkte Zuweisung ist auch wesentlich schneller als das Kopieren. Bei der direktez Zuweisung muss man nur darauf achten, das Quellbereich und Zielbereich gleich groß sind.
Option Explicit
Sub CommandButton1_Click()
Dim loLetzte As Long
Dim Zeile As Long, Spalte As Long, Spaltenzähler As Long
Spaltenzähler = 9
With Sheets("gesamt zeit")
loLetzte = .Range("A:A").Cells.Find("*", searchdirection:=xlPrevious).Row + 1
End With
With Sheets("Arbeitszeitenmaske")
Sheets("gesamt zeit").Range("A" & loLetzte) = .Range("I4")
Sheets("gesamt zeit").Range("B" & loLetzte & ":C" & loLetzte) = .Range(.Cells(7, 9), . _
Cells(7, 10)).Value
Sheets("gesamt zeit").Range("D" & loLetzte & ":G" & loLetzte) = .Range(.Cells(10, 8), . _
Cells(10, 11)).Value
Sheets("gesamt zeit").Range("H" & loLetzte) = .Cells(12, 11).Value
For Zeile = 19 To 29 Step 2
For Spalte = 10 To 13 Step 1
Sheets("gesamt zeit").Cells(loLetzte, Spaltenzähler) = .Cells(Zeile, Spalte)
Spaltenzähler = Spaltenzähler + 1
Next Spalte
Next Zeile
End With
End Sub
Gruß Werner
Anzeige
AW: Neuer Datensatz in nächste leere Zeile
01.03.2017 18:05:29
Kay
Also ich habe das mal so übernommen, aber fumktionieren tut es noch nicht.wird nichts üertragen.
Userbild
frage mich gerade auch wo dieser strich oben herkommt unter dem explicit dingsda.
Also ich glaube das mit den schleifen habe ich soweit verstanden, äussere schleife kann den bezug auf zeilen oder spalten haben und die innere schleife. auch kommt immer darauf an was ich will.
"I4" soll in spalte A das passt auch, das mit cells 7,9 und 7,10 und darunter diese sachen sind noch etwas schleierhaft, und das mit den variablen. wenn ich jetzt sage z steht für zeile woher weis das der codec den?
Anzeige
AW: Neuer Datensatz in nächste leere Zeile
01.03.2017 21:08:21
Werner
Hallo Kay,
mach mal bei den zwei Codezeilen den Zeilenumbruch raus. Den hat die Forensoftware eingefügt.
Sheets("gesamt zeit").Range("B" & loLetzte & ":C" & loLetzte) = .Range(.Cells(7, 9), . _
Cells(7, 10)).Value
Sheets("gesamt zeit").Range("D" & loLetzte & ":G" & loLetzte) = .Range(.Cells(10, 8), . _
Cells(10, 11)).Value

Sollte so aussehen
Sheets("gesamt zeit").Range("B" & loLetzte & ":C" & loLetzte) = .Range(.Cells(7, 9), .Cells(7, 10)).Value
Sheets("gesamt zeit").Range("D" & loLetzte & ":G" & loLetzte) = .Range(.Cells(10, 8), .Cells(10,11)).Value
Zu den Variablen:
Eine Variable ist ein Container in den du was reinpacken kannst. Dafür gibt es verschiedene Containertypen. Den Typ mußt du der Variablen zuweisen denn nur du weißt was du da reinpacken willst.
Mit Dim Zeile AS Long weißt du der Variablen Zeile den Typ Long zu. Long-Werte sind Ganzzahlen im Zahlenbereich von -2.147.483.648 bis 2.147.483.647. Da kannst du dann aber auch nur Ganzzahlig rein packen, Gleitkommazahlen oder Text passt da nicht rein.
Lass mal folgendes Makro laufen:
Sub Test()
Dim Zeile As Long 'Variable deklarieren
Zeile = "Hallo Kay" 'der Variablen einen Wert zuweisen
MsgBox Zeile 'Inhalt der Variablen in einer MessageBox ausgeben
End Sub
Hier wird versucht in einen Container für Ganzzahlen einen Text (String) zu packen. Lass den Code mal laufen und schau was passiert.
Jetzt ändere mal im Code
Dim Zeile As Long
Um in
Dim Zeile As String
Lass das Makro jetzt nochmal laufen.
Zur Frage woher der Code weiß, dass Zeile die Variable für die Zeilennummer ist? Das weiß der Code nicht sondern du. Und du musst auch dafür sorgen, dass die Variable an der richtigen Stelle im Code eingesetzt wird.
Gruß Werner
AW: Neuer Datensatz in nächste leere Zeile
01.03.2017 21:23:25
Kay
Das mit dem Zeilenumbruch dachte ich mir auch schon, wenn das in einer Zeile steht dann werden die Zeilen rot also beide.
Das Makro werde ich morgen mal durchlaufen lassen.bin gespannt was passiert danke für deine hilfe
AW: Neuer Datensatz in nächste leere Zeile
01.03.2017 21:23:31
Kay
Das mit dem Zeilenumbruch dachte ich mir auch schon, wenn das in einer Zeile steht dann werden die Zeilen rot also beide.
Das Makro werde ich morgen mal durchlaufen lassen.bin gespannt was passiert danke für deine hilfe
AW: Neuer Datensatz in nächste leere Zeile
02.03.2017 08:39:55
Kay
Userbild
Ich denke mal so meinst du das mit dem Zeileenumbruch, da kommt dann immer die meldung mit syntaxfehler, was bedeutet das
AW: Neuer Datensatz in nächste leere Zeile
02.03.2017 10:10:08
Kay
Also die roten zeilen sind weg und die fehlermeldung auch, dieser unterstrich hat noch gestört, aber es passiert nichts. vielleicht dieses option explicit das hatten wir in dem anderen codec nicht?
AW: Neuer Datensatz in nächste leere Zeile
02.03.2017 11:15:02
Werner
Hallo Kay,
wie startest du denn das Makro? Ich hatte das Makro direkt in einem CommandButton.
Ändere mal den Kopf des Makros von
Sub CommandButton1_Click()
auf
Sub Daten_Kopieren()
dann mit Rechtsklick auf deinen Button das Makro diesem Button zuweisen. Das Makro gehört in ein allgemeines Modul.
Gruß Werner
AW: Neuer Datensatz in nächste leere Zeile
02.03.2017 11:40:33
Kay
der buttom ist ein commandbuttom
AW: Neuer Datensatz in nächste leere Zeile
02.03.2017 12:11:31
Kay
also der buttom ist so ein command Buttom zumindest steht das so auf diesen drauf, habe jetzt die arbeitsblätte umbenaat, die zellen geprüft, egal was es passiert nichts noch nicht mal was faslches
Userbild
da ist der wurm drin aber wo
AW: Neuer Datensatz in nächste leere Zeile
02.03.2017 12:40:41
Werner
Hallo Kay,
dann hast du einen Button aus den ActiveX Steuerelementen. Nimm mal einen Button aus den Formularsteuerelementen (das ist gleich das erste Icon oben links) platzier den auf deinem Blatt - Rechtsklick auf den Button - Makro zuweisen - das Makro auswählen - fertig.
Und noch ein Hinweis, mit deinen hochgeladenen Bildern kann kein Mensch etwas anfangen.
Wenn es nicht klappt, dann lad mal eine Beispielmappe hoch. Es reicht eine Mappe mit den beiden betroffenen Blättern, jeweils mit ein paar Daten zum testen. Aber bitte eine Mappe ohne jegliche Makros, sonst kann ich die Datei nicht herunterladen.
Gruß Werner
AW: Neuer Datensatz in nächste leere Zeile
02.03.2017 18:10:58
Kay
Habe einmal die datei hochgeladen, ich verzweifle sonst noch daran, kein plan wieso das nicht geht.
https://www.herber.de/bbs/user/111905.xlsm
AW: Neuer Datensatz in nächste leere Zeile
02.03.2017 18:31:40
Werner
Hallo Kay,
du solltest die Beiträge schon lesen.
Wenn es nicht klappt, dann lad mal eine Beispielmappe hoch. Es reicht eine Mappe mit den beiden betroffenen Blättern, jeweils mit ein paar Daten zum testen. Aber bitte eine Mappe ohne jegliche Makros, sonst kann ich die Datei nicht herunterladen.
Gruß Werner
AW: Neuer Datensatz in nächste leere Zeile
03.03.2017 05:57:45
Werner
Hallo Kay,
das Makro macht schon was es soll. Du solltest aber mal in deinem Zielblatt "Gesamtzeit" ab Zeile 97 den ganzen Datenmüll löschen der sich da angesammelt hat.
Das Makro ermittelt nämlich tapfer die erste freie Zeile in Spalte A (und zwar von unten nach oben). Und da dort dein Datenmüll bis irgendwo in Zeile 206 oder so vorhanden ist, fügt das Makro ordnungsgemäß die übertragenen Daten da unten an.
Mal eine bescheidene Frage: Warum legst du dir für deine Dateneingabe eigentlich einzelne Tabellenblätter an und benutzt dazu nicht verschiedene UserFormen?
Gruß Werner
AW: Neuer Datensatz in nächste leere Zeile
03.03.2017 08:43:51
Kay
Ach du sch... wo kommt das her? habe ich weg gemacht und es klappt. klasse ein paar anpassungen noch. von den userforms habe ich schon gesehen aber welcher vorteil ergibt sich daraus?
AW: Neuer Datensatz in nächste leere Zeile
03.03.2017 09:40:52
Werner
Hallo Kay,
als erstes bräuchtest du nicht zig verschiedene Blätter. Ein Blatt mit diversen Schaltflächen um die unterschiedlichen UserFormen aufzurufen würde reichen. Wäre dann alles zentral über ein Tabellenblatt.
Zudem hast du da mehr Möglichkeiten sicherzustellen, dass die eingegebenen Daten auch stimmen. z.B. kann dafür gesorgt werden, dass bestimmte Felder ausgefüllt sein müssen, dass die Eingabe im richtigen Format (Zahlenformat, Zeitformat u.ä.) erfolgt.
Aber wenn du dir jetzt schon die Mühe mit deinen Tabellenblättern gemacht hast. So kannst du das natürlich auch händeln.
Gruß Werner

7 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige