6.6k Aufrufe
Gefragt in Tabellenkalkulation von
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

9 Antworten

0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
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
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
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
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi Touljo :-)

Dim SuchZelle As String

dann noch einfuegen

gruss nighty
0 Punkte
Beantwortet von
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
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
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
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
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
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
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
0 Punkte
Beantwortet von
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
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
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
...