Registriert seit: 07.11.2017
Version(en): 2016
Hi LuckyJoe
Ich habe noch eine weitere Idee die ich gerne einbauen würde.
Nach kurzem Arbeiten mit dem Code habe ich bemerkt das es etwas unübersichtlich ist, daher würde ich gerne die "Original" Spalte die Kopiert wird einfärben und die Kopierten in der Ursprünglichen Var. Kopieren.
Ist das möglich?
Ich habe sehr viele Beiträge gefunden zur Formatierung, jedoch weis ich leider nicht wie ich die Originalen Zeilen nach dem Kopieren wiedererkennen kann..
Hast du mir da auch einen Lösungsansatz?
Registriert seit: 26.07.2017
Version(en): 365
Hi,
was meinst du mit "Original" Spalte? Die wird doch nicht verändert. Wenn du die "Original"-Zellen meinst, dann ersetze die For...Next-Schleife durch
Code:
For i = letzteZeile To 1 Step -1
If Cells(i, 3).Value = Bauteil Then
With Rows(i)
.Copy
.Resize(NeueZeilen).Insert Shift:=xlDown
Cells(i, 3).Interior.ColorIndex = 35
Cells(i, 3).Font.ColorIndex = 3
Cells(i, 3).Font.Bold = True
End With
End If
Next i
Suche dir von den drei Codezeilen die aus, die du haben willst. Schau in der Hilfe nach, welche Farbwerte sonst verwendet werden können.
Herzliche Grüße aus dem Rheinland
Jörg
[Windows 10, Microsoft 365]
Registriert seit: 07.11.2017
Version(en): 2016
Hi schon wieder :)
Mir ist gerade eben ein Geistesblitz gekommen und ich habe es geschafft:
Vielen Dank trotzdem dass du dir noch einmal die mühe gemacht hast.
Code:
Sub Leerezeile()
Dim i As Long
Dim Anfrage As Variant
Dim Anfrage2 As Variant
Dim Bauteil As String
Dim Anzahl As Integer
Dim ErsteZeile As String
Dim LetzteZeile As String
Dim AktiveZeile As Range
'Application.ScreenUpdating = False 'Bearbeitungsschritte unsichtbar
Anfrage = InputBox("Bitte Bauteil aus Spalte C und Anzahl neuer Zeilen eingeben, getrennt durch /:")
Anfrage2 = InputBox("Bitte Von-Bis Zeile angeben, getrennt durch /:")
Anfrage = Split(Anfrage, "/")
Bauteil = Anfrage(0) ' 1. Teil vor dem '#'
Anzahl = Anfrage(1) ' 2. Teil nach dem '#'
Anfrage2 = Split(Anfrage2, "/")
ErsteZeile = Anfrage2(0) ' 1. Teil vor dem '#'
LetzteZeile = Anfrage2(1) ' 2. Teil nach dem '#'
For i = LetzteZeile To ErsteZeile Step -1
If Cells(i, 3).Value = Bauteil Then
Set AktiveZeile = ActiveCell
With Rows(i)
.Copy
.Resize(Anzahl).Insert Shift:=xlDown
End With
AktiveZeile.Select
If AktiveZeile = selectet Then
Rows(i).Font.ColorIndex = 23
End If
End If
Next i
'Application.ScreenUpdating = True 'Bearbeitungsschritte wieder sichtbar
End Sub
Registriert seit: 26.07.2017
Version(en): 365
Kleiner Tipp: verzichte wenn möglich auf die (in der Regel vom Makrorekorder vorgeschlagenen) (unnötigen) Konstruktionen mit "Select". Dein Programmcode wird dadurch nur unnötig aufgebläht und die Abarbeitung enorm verlangsamt.
Herzliche Grüße aus dem Rheinland
Jörg
[Windows 10, Microsoft 365]
Registriert seit: 07.11.2017
Version(en): 2016
Danke für den Tipp, wie kann denn der Code aussehen wenn ich Select weg lasse?
Mir ist gerade noch einen Fehler aufgefallen:
Wenn die Ausrichtung des Textes vorher bearbeitet wurde funktioniert das einfärben nicht
Kennst du ein gutes Tutorial o.ä. das ich mir zu diesem Thema anschauen kann? Oder kannst du mir sagen an was das liegt und wie man das beheben kann?
Vielen Dank für die Geduld :)
Registriert seit: 26.07.2017
Version(en): 365
Schau dir mein Beispiel unter #12 an, da funktioniert das ohne "Select", auch unabhängig von der Textformatierung oder Ausrichtung.
Google mal nach Tutorials und Excel-VBA, da findest du eine ganze Menge.
Herzliche Grüße aus dem Rheinland
Jörg
[Windows 10, Microsoft 365]
Registriert seit: 07.11.2017
Version(en): 2016
Habe es angepasst
Dankeschön :)