Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1520to1524
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
Leere Zeile einfügen
17.10.2016 09:21:01
Berndt
Hallo Freunde,
folgender kleiner Code fügt mir eine leere Zeile ein:
Private Sub CommandButton2_Click()
' neue Zeile einfügen für Thema
Dim EZ As Long
Application.ScreenUpdating = False
With ActiveSheet
EZ = .UsedRange.Row + .UsedRange.Rows.Count
End With
Rows(EZ).Insert Shift:=xlDown
Rows(EZ - 1).Copy
Rows(EZ).PasteSpecial Paste:=xlPasteFormats
Cells(1, 2).Resize(EZ, 4).Borders(xlInsideHorizontal).LineStyle = xlNone
Cells(1, 2).Resize(EZ, 4).Borders(xlEdgeBottom).LineStyle = 1
Cells(1, 2).Resize(4, 1).Borders(xlEdgeBottom).LineStyle = 1
Cells(1, 2).Resize(5, 4).Borders(xlEdgeBottom).LineStyle = 1
Cells(1, 3).Resize(4, 3).Borders(xlEdgeBottom).LineStyle = 1
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub

-der Code nimmt dabei als Formatvorlage für die neue Zeile, die Zeile obendrüber Rows(EZ - 1).Copy
-wenn allerdings die Zeile obendrüber der Spaltenkopf ist wird die neue Zeile wie der Spaltenkopf formatiert (Mein Spaltenkopf ist fix in B5:E5)
-es sollte also eine Prüfung in den Code rein, ob schon eine Leere Zeile unter den Spaltenkopf eingefügt wurde (dann =Rows(EZ - 1).Copy)
-wenn Nein, dann sollte die neue Zeile per Makro formatiert werden (also nicht pauschal =Rows(EZ - 1).Copy)
-die neue Zeile sollte dann einen Rahmen bekommen (links,rechts,unten)
-in Zelle C sollte eine Datenüberprüfung rein ("x")
-in Zelle D sollte eine datenüberprüfung rein ("Herr A", "Frau B")
Ich würde mich über Hilfe freuen
VG Berndt

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Leere Zeile einfügen
17.10.2016 20:57:54
fcs
Hallo Bernd,
da ist es wieder dein Makro.
Mit den folgenden Anpassungen sollte es wie gewünscht funktionieren.
LG
Franz
Private Sub CommandButton2_Click()
' neue Zeile einfügen für Thema
Dim EZ As Long
Application.ScreenUpdating = False
With ActiveSheet.UsedRange
EZ = .Row + .Rows.Count
End With
If EZ > 6 Then
Rows(EZ).Insert Shift:=xlDown
Rows(EZ - 1).Copy
Rows(EZ).PasteSpecial Paste:=xlPasteFormats
Else
With ActiveSheet
With .Range(.Cells(6, 2), .Cells(6, 5)) 'B6:E6
.Borders(xlEdgeLeft).LineStyle = xlContinuous
.Borders(xlEdgeRight).LineStyle = xlContinuous
.Borders(xlEdgeBottom).LineStyle = xlContinuous
End With
.Range("C6").Validation.Add xlValidateList, Formula1:="',x"
.Range("D6").Validation.Add xlValidateList, Formula1:="Herr A,Frau B"
End With
End If
Cells(1, 2).Resize(EZ, 4).Borders(xlInsideHorizontal).LineStyle = xlNone
Cells(1, 2).Resize(EZ, 4).Borders(xlEdgeBottom).LineStyle = 1
Cells(1, 2).Resize(4, 1).Borders(xlEdgeBottom).LineStyle = 1
Cells(1, 2).Resize(5, 4).Borders(xlEdgeBottom).LineStyle = 1
Cells(1, 3).Resize(4, 3).Borders(xlEdgeBottom).LineStyle = 1
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub

Anzeige
...kleiner Zusatz?
18.10.2016 07:05:53
Berndt
Hallo fcs,
vielen Dank für deine geniale Idee.
Gleich umgesetzt.Funktioniert.
Kann ich statt FrauA, HerrB auch eine intelligente Tabelle ansprechen von denen die Namen genommen werden?
Diese heisst "Verantwortliche" und ist im Sheet "Eingabemaske" zu finden.
VG Berndt
ich lass das Thema mal noch offen
18.10.2016 07:15:37
Berndt
sorry-Vergessen das Thema nochmal offen zu lassen
Unter Nutzung von INDIREKT...
18.10.2016 10:20:11
INDIREKT...
Berndt,
ist das möglich.
D.h. als Formel in der Datenüberprüfung: =INDIREKT("Verantwortliche[#Daten]")
In VBA exemplarisch so:
With ActiveCell.Validation
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=INDIREKT(""Verantwortliche[#Daten]"")"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
LG
Michael
Anzeige
AW: Unter Nutzung von INDIREKT...
18.10.2016 10:48:07
INDIREKT...
Danke für die Info.
Interessant ist für mich ja nur der Bereich:
Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=INDIREKT(""Verantwortliche[#Daten]"")"
ich komm nicht so recht mit den #Daten zurecht. Was müsste ich wo anpassen?
Denn so richtig funktioniert es nicht.
Private Sub CommandButton2_Click()
' neue Zeile einfügen für Thema
Dim EZ As Long
Application.ScreenUpdating = False
With ActiveSheet.UsedRange
EZ = .Row + .Rows.Count
End With
If EZ > 6 Then
Rows(EZ).Insert Shift:=xlDown
Rows(EZ - 1).Copy
Rows(EZ).PasteSpecial Paste:=xlPasteFormats
Else
With ActiveSheet
With .Range(.Cells(6, 2), .Cells(6, 5)) 'B6:E6
.Borders(xlEdgeLeft).LineStyle = xlContinuous
.Borders(xlEdgeRight).LineStyle = xlContinuous
.Borders(xlEdgeBottom).LineStyle = xlContinuous
End With
.Range("C6").Validation.Add xlValidateList, Formula1:="x"
.Range("C6").HorizontalAlignment = xlCenter
.Range("D6").Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop,  _
Operator:= _
xlBetween, Formula1:="=INDIREKT(""Verantwortliche[#Daten]"")"
.Range("D6").HorizontalAlignment = xlCenter
End With
End If
Cells(1, 2).Resize(EZ, 4).Borders(xlInsideHorizontal).LineStyle = xlNone
Cells(1, 2).Resize(EZ, 4).Borders(xlEdgeBottom).LineStyle = 1
Cells(1, 2).Resize(4, 1).Borders(xlEdgeBottom).LineStyle = 1
Cells(1, 2).Resize(5, 4).Borders(xlEdgeBottom).LineStyle = 1
Cells(1, 3).Resize(4, 3).Borders(xlEdgeBottom).LineStyle = 1
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub

Anzeige
Kommt auf Deine formatierte Tabelle an...
18.10.2016 11:17:27
Michael
Berndt,
ich bin vorher bspw. von nur einer Datenspalte ausgegangen. Wenn Deine formatierte Tabelle wirklich eine (mehrzeilige, mehrspaltige) Tabelle ist, dann musst Du anders auf die von Dir gewünschten Informationen für die Datenüberprüfungsliste zugreifen:
Userbild
Datenüberprüfung in A8: =INDIREKT("Verantwortliche[Mitarbeiter]")
In VBA dann analog:
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=INDIREKT(""Verantwortliche[Mitarbeiter]"")"
usw.
LG
Michael
Anzeige

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige