Zeile an bestimmte Stelle (nach parameter) einfügen
Hallo!
Folgendes:
Ich möchte bei Excel im groben und ganzen nur eine Zeile einfügen.
Allerdings an eine bestimmte Stelle. Ich habe eine Liste von Namen
Beispiel (versuche mal Excel nachzustellen^^ Punkte (.....) sollen nur die "Spalten" von einander Trennen.)
A..................................B
Mustermann..............wichtige Daten
Mustermann..............fast wichtig
Mustermann..............lol
Musterfrau..................informativ
Musterfrau..................mir fällt nix mehr ein
Mustersonstiges.......ähm... ja!
Mustersonstiges.......reicht auch wieder
Mustersonstiges.......endlich feddisch...
Jetzt brauche ich einen Button der eine leere Zeile z.B. genau zwischen dem letzten Musterfrau und dem ersten Mustersonstiges einfügt, oder halt zwischen Mustermann und Musterfrau.
C.....................................................................................D
leeres Feld zum eintippen des Parameters..........Autoform als Knopf
(also wenn ich hier z.B. Mustermann
eintippe soll die leere Zeile nach dem
letzten Mustermann erscheinen, bei
Musterfrau nach dem letzten Musterfrau.)
Kann man das irgendwie bewerkstelligen? Danke schonmal für die Hilfe.
GREEETZ
Touljo
Antwort schreiben
Antwort 1 von nighty vom 19.06.2021, 00:18 Options
hi Touljo :-)
probier mal :-)
gruss nighty
Option Explicit
Sub Einfuegen()
Dim SpalteA() As Variant
Dim Zelle As Long
SpalteA() = Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row)
For Zelle = UBound(SpalteA()) To 2 Step -1
If UCase(SpalteA(Zelle, 1)) = UCase(Cells(1, 1)) Then
Rows(Zelle + 2).Insert Shift:=xlDown
Exit For
End If
Next Zelle
End Sub
Antwort 2 von nighty vom 19.06.2021, 00:25 Options
hi Touljo :-)
besser so :-)
gruss nighty
Option Explicit
Sub Einfuegen()
Dim SpalteA() As Variant
Dim Zelle As Long
SpalteA() = Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row)
SuchZelle = Cells(1, 1)
For Zelle = UBound(SpalteA()) To 2 Step -1
If UCase(SpalteA(Zelle, 1)) = UCase(SuchZelle) Then
Rows(Zelle + 2).Insert Shift:=xlDown
Exit For
End If
Next Zelle
End Sub
Antwort 3 von nighty vom 19.06.2021, 00:27 Options
hi Touljo :-)
Dim SuchZelle As String
dann noch einfuegen
gruss nighty
Antwort 4 von Touljo vom 24.08.2021, 13:39 Options
Hi nighty!
Sorry für die verspätete antwort. War 3 Wochen lang im urlaub...^^
Also irgendwie fügt der ne Zeile ein, aber mir fehlt der Begriff zum eintippen und das er die Zeile direkt alphabetisch passend einbaut...
Kenne mich mit dieser Art VBA nicht aus. Habe nur erfahrung mit einfachen Dingen wie
Status = Shell
Sheets("name").Select
Range(Cells(7, 3), Cells(7, 3)).Select
ActiveSheet.Paste
usw.
Das heir sind paar viele Dinge auf einmal^^ Wäre lieb wenn du ne kleine nErklärung schreiben könntest, was wofür gut ist.
Aber danke schonmal.
Gruß
Touljo
Antwort 5 von nighty vom 24.08.2021, 19:56 Options
hi all ^^
fehlt der Begriff zum eintippen ?
gruss nighty
Option Explicit
Sub Einfuegen()
Dim SpalteA() As Variant
Dim Zelle As Long
SpalteA() = Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row)
SuchZelle = Cells(1, 1) For Zelle = UBound(SpalteA()) To 2 Step -1
If UCase(SpalteA(Zelle, 1)) = UCase(SuchZelle) Then
Rows(Zelle + 2).Insert Shift:=xlDown
Exit For
End If
Next Zelle
End Sub
Antwort 6 von nighty vom 24.08.2021, 22:02 Options
hi all ^^
ein paar kommentare :-))
gruss nighty
Option Explicit
Sub Einfuegen()
Dim SpalteA() As Variant 'array deklarierung
Dim Zelle As Long 'variable der for next schleife wird deklariert
SpalteA() = Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row) 'ermittlung der letzten genutzten zeile in spalte A
For Zelle = UBound(SpalteA()) To 2 Step -1 'ermitteltes ende bis 2 zeile,da erste die eingabezelle des suchbegriffes ist
If UCase(SpalteA(Zelle, 1)) = UCase(Cells(1, 1)) Then 'bei uebereinstimmung
Rows(Zelle + 2).Insert Shift:=xlDown 'einfuegen einer leerzeile bei fund
Exit For 'verlassen der schleife
End If 'ende vergleich
Next Zelle 'naechste zelle bzw for next
End Sub
Antwort 7 von nighty vom 24.08.2021, 22:06 Options
hi all ^^
glatt die haelfte vom kommentar vergessen ^^
gruss nighty
SpalteA() = Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row) 'ermittlung der letzten genutzten zeile in spalte A und arrayzuweisung
gruss nighty
Antwort 8 von Touljo vom 25.08.2021, 09:34 Options
Danke Nighty ;)
Das scheint eine echt komplizierte Sache zu sein für jemanden der seine VBA Erfahrungen im Selbststudium sammelt...^^
Ich werde mich damit mal auseinander setzen und probieren und testen.
Im Moment habe ich ein neues Projekt am laufen.
Als kleinen Bonus würde ich gern, wenn sich meine Userform öffnet, dass dort eine Uhr läuft. (hh:mm:ss)
Ich habe zwar eine Uhrzeit anzeigen können, aber sie läuft nicht weiter und startet nur bei klick auf das label feld...
Vielleicht kannst du mir auch hier helfen^^
Gruß Touljo
Antwort 9 von nighty vom 26.08.2021, 16:02 Options
hi Touljo ^^
zu eins
ein makro das einfacher zu verstehen ist ,koennte ich zwar machen,aber das waere zu langsam in der laufzeit :-)
zu zwei
die liebe uhrzeit ^^
rate ich aus dem selben grunde einfach mal ab
der wiederholte aufruf eines makros ist nicht akzeptabel
oder als notloesung
die api function waere eine alternative,die aber wieder versionsbedingt angepasst werden muss,um das zu verhindern, google mal und probiere einfach mal mehrere varianten aus,da findet sich einiges im netzt,auch hier wuerde ich auf sekunden lieber verzichten (die liebe laufzeit *hrhhrrr*),also wenn, dann nur stunden und minuten anzeige :-)
gruss nighty