Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1800to1804
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
Inhaltsverzeichnis

Automatisch Rahmen erstellen

Automatisch Rahmen erstellen
28.12.2020 11:06:46
Ulrich
Hallo,
ich habe eine Frage.
Mit folgendem Code übertrage ich Daten aus einem Tabellenblatt in in eine Übersichtsliste.
Nach Start des Makro "To Do uebertragen" werden erst alle Daten gelöscht und dann neu eingelesen.
Jetzt hätte ich gerne, das
1. die neu eingelesenen Daten einen Rahmen bekommen (innen und Außen)
(beim Neustart des Makro sollten dieser Rahmen auch wieder gelöscht werden, mit den Daten)
2. in Spalte A ab Zeile 6 mit den neu eingelesenen Daten eine fortlaufende Nummer generiert wird.
Kann mir hierbei jemand helfen?
Danke vorab
Gruß Ulli
Sub To_Do_Uebertragen()
Dim i, j As Integer
Worksheets("Übertrag to do").Unprotect Password:=""
j = 6
With Worksheets("Übertrag to do").Range("B6:F45")
.Value = ""
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With
With Worksheets("Übertrag to do").Range("B6:F45").Font
.Name = "Arial"
.Size = 10
.Bold = False
.ColorIndex = 0
End With
Worksheets("Übertrag to do").Range("C6:C45").HorizontalAlignment = xlGeneral
Worksheets("Übertrag to do").Range("B6:B45").Font.Bold = True
For i = 7 To 300 Step 1
If Worksheets("G-Muster").Rows(i).Hidden = False Then
If Not Worksheets("G-Muster").Cells(i, 10).Value = "" Then
Worksheets("Übertrag to do").Cells(j, 2).Value =
Worksheets("G-Muster ").Cells(i, 1).Value
Worksheets("Übertrag to do").Cells(j, 3).Value =
Worksheets("G-Muster ").Cells(i, 7).Value
Worksheets("Übertrag to do").Cells(j, 4).Value =
Worksheets("G-Muster ").Cells(i, 9).Value
Worksheets("Übertrag to do").Cells(j, 5).Value =
Worksheets("G-Muster ").Cells(i, 10).Value
Worksheets("Übertrag to do").Cells(j, 6).FormulaLocal = "=WENN(G-Muster!K" & i & _
"="""";"""";WENN(G-Muster!L" & i & "="""";"""";""P""))"
With Worksheets("Übertrag to do").Cells(j, 6).Font
.Name = "Wingdings 2"
.Size = 16
.Bold = True
.Color = -16711936
End With
With Worksheets("Übertrag to do").Cells(j, 6)
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With
j = j + 1
End If
End If
Next i
End Sub
Userbild

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Automatisch Rahmen erstellen
28.12.2020 11:11:50
Hajo_Zi
Du bist im falschen Forum. Bildbearbeitung ist ein anderes.
Bilder lade ich mir nicht runter, da Excel damit nichts anfangen kann.
Hochgeladene Bilder können zwar als solche in Excel importiert werden, sind jedoch bei der Lösung von Problemen nicht sehr hilfreich, da man die eigentlichen Daten nicht ohne große und zeitraubende Umwege direkt in die Tabelle übertragen kann.
Ich baue keine Datei nach, die Zeit hat schon jemand investiert.
Schau mal hier
Eine hochgeladene Arbeitsmappe erhöht die Wahrscheinlichkeit, dass Du eine Lösung für Dein Problem erhältst.
Erstelle folglich bitte eine Demomappe, aus der deine Aufgabenstellung klar erkennbar ist und lade diese hoch.
Wenn du an Stelle einer Demomappe deine Originalmappe hochladen willst, diese aber sensible Daten enthält, kannst du diese Daten ändern. Schaue Datei
http://hajo-excel.de/gepackt/fremd/Datei_verschluesseln.zip
Falls Du den Download des Forums nicht benutzen möchtest beachte bitte: von unsicheren Servern file-upload lade ich keine Datei herunter (lt. Einschätzung meines Virenprogramms)
Das ist nur meine Meinung zu dem Thema.

Anzeige
AW: Automatisch Rahmen erstellen
28.12.2020 11:15:56
Ulrich
hallo hajo,
ich glaube deine Mail galt einem anderen Beitrag
Gruß Ulli
AW: Nein
28.12.2020 11:28:02
Ulrich
Das ist doch nur ein Ausschnitt wie die Übersichtstabelle aussieht.
AW: Nein
28.12.2020 11:29:59
Hajo_Zi
ich konnte Dein Makro nicht aiuf Dein Bild anwenden.
Wie mache ich dies?
Gruß Hajo
AW: Nein
28.12.2020 11:53:40
Nepumuk
Hallo Ulli,
teste mal:
Option Explicit

Public Sub To_Do_Uebertragen()
    
    Dim i As Long, j As Long
    
    With Worksheets("Übertrag to do")
        
        .Unprotect Password:=""
        
        j = 6
        
        With .Range("B6:F45")
            .Value = ""
            .HorizontalAlignment = xlCenter
            .VerticalAlignment = xlCenter
            .Borders.LineStyle = xlLineStyleNone
            With .Font
                .Name = "Arial"
                .Size = 10
                .Bold = False
                .ColorIndex = 0
            End With
        End With
        .Range("C6:C45").HorizontalAlignment = xlLeft
        .Range("B6:B45").Font.Bold = True
        
        For i = 7 To 300
            If Worksheets("G-Muster").Rows(i).Hidden = False Then
                
                If Not Worksheets("G-Muster").Cells(i, 10).Value = "" Then
                    .Cells(j, 2).Value = Worksheets("G-Muster ").Cells(i, 1).Value
                    .Cells(j, 3).Value = Worksheets("G-Muster ").Cells(i, 7).Value
                    .Cells(j, 4).Value = Worksheets("G-Muster ").Cells(i, 9).Value
                    .Cells(j, 5).Value = Worksheets("G-Muster ").Cells(i, 10).Value
                    .Cells(j, 6).FormulaLocal = "=WENN(G-Muster!K" & i & _
                        "="""";"""";WENN(G-Muster!L" & i & "="""";"""";""P""))"
                    With .Cells(j, 6).Font
                        .Name = "Wingdings 2"
                        .Size = 16
                        .Bold = True
                        .Color = -16711936
                    End With
                    j = j + 1
                End If
            End If
        Next i
        
        With .Range(.Cells(6, 1), .Cells(.Rows.Count, 6).End(xlUp))
            .BorderAround LineStyle:=xlContinuous
            .Borders(xlInsideHorizontal).LineStyle = xlContinuous
            .Borders(xlInsideVertical).LineStyle = xlContinuous
        End With
        
        .Protect
        
    End With
End Sub

Gruß
Nepumuk
Anzeige
AW: Nein
28.12.2020 12:16:42
Ulrich
Hallo Nepumuk,
soweit funktioniert der Code.
Bevor Spalte 5 aktualisiert wird, öffnet der Datei-Explorer?, wenn ich den abbreche läuft der Code weiter.
Eine fortlaufende Nummer in Spalte A wäre noch schön.
Den Range Bereich hatte ich mal bis Zeile 45 gesetzt, besser wäre unbegrenzt.
Danke für deine Hilfe:
Gruß Ulli
AW: Nein
28.12.2020 12:58:00
Nepumuk
Hallo Ulli,
so ok?
Option Explicit

Public Sub To_Do_Uebertragen()
    
    Dim i As Long, j As Long, lngLastRow As Long
    
    With Application
        .Calculation = xlCalculationManual
        .EnableEvents = False
        .ScreenUpdating = False
    End With
    
    With Worksheets("Übertrag to do")
        
        .Unprotect
        
        j = 6
        
        Call .Range(.Cells(6, 1), .Cells(.Rows.Count, 6)).Clear
        
        For i = 7 To 300
            
            If Not Worksheets("G-Muster").Rows(i).Hidden Then
                
                If Not Worksheets("G-Muster").Cells(i, 10).Value = "" Then
                    
                    .Cells(j, 2).Value = Worksheets("G-Muster ").Cells(i, 1).Value
                    .Cells(j, 3).Value = Worksheets("G-Muster ").Cells(i, 7).Value
                    .Cells(j, 4).Value = Worksheets("G-Muster ").Cells(i, 9).Value
                    .Cells(j, 5).Value = Worksheets("G-Muster ").Cells(i, 10).Value
                    .Cells(j, 6).FormulaLocal = "=WENN(G-Muster!K" & i & _
                        "="""";"""";WENN(G-Muster!L" & i & "="""";"""";""P""))"
                    
                    j = j + 1
                    
                End If
            End If
        Next i
        
        lngLastRow = .Cells(.Rows.Count, 2).End(xlUp).Row
        
        With .Range(.Cells(6, 1), .Cells(lngLastRow, 6))
            
            .HorizontalAlignment = xlCenter
            .VerticalAlignment = xlCenter
            
            With .Font
                
                .Name = "Arial"
                .Size = 10
                .Bold = False
                .ColorIndex = 0
                
            End With
        End With
        
        .Range(.Cells(6, 3), .Cells(lngLastRow, 3)).HorizontalAlignment = xlLeft
        .Range(.Cells(6, 2), .Cells(lngLastRow, 2)).Font.Bold = True
        
        With .Range(.Cells(6, 1), .Cells(lngLastRow, 6))
            
            Call .BorderAround(LineStyle:=xlContinuous)
            .Borders(xlInsideHorizontal).LineStyle = xlContinuous
            .Borders(xlInsideVertical).LineStyle = xlContinuous
            
        End With
        
        With .Range(.Cells(6, 6), .Cells(lngLastRow, 6)).Font
            
            .Name = "Wingdings 2"
            .Size = 16
            .Bold = True
            .Color = -16711936
            
        End With
        
        .Cells(6, 1).Value = 1
        
        Call .Range(.Cells(6, 1), .Cells(lngLastRow, 1)).DataSeries( _
            Rowcol:=xlColumns, Type:=xlDataSeriesLinear, Step:=1)
        
        .Protect
        
    End With
    
    With Application
        .Calculation = xlCalculationAutomatic
        .EnableEvents = True
        .ScreenUpdating = True
    End With
End Sub

Gruß
Nepumuk
Anzeige
AW: Nein
28.12.2020 12:30:05
Ulrich
Hallo Nepumuk,
das mit dem Explorer hat sich erledigt, ich hatte einen falschen Blattnamen.
Gruß Ulli
AW: Nein
28.12.2020 12:51:36
Ulrich
Hallo Nepumuk,
mit der fortlaufenden Nummer habe ich mit folgendem Code lösen können.
funktioniert soweit:
Dim k&, Zelle, LR&, RNG As Range
With ActiveSheet
LR = .Cells(.Rows.Count, "B").End(xlUp).Row 'letzte Zeile der Spalte
Set RNG = .Range("B6:B" & LR)
RNG.Offset(0, -1).ClearContents
For Each Zelle In RNG.SpecialCells(xlCellTypeConstants, 1)
Zelle.Offset(0, -1).Value = k + 1
k = k + 1
Next
End With
Gruß Ulli
AW: Nein
28.12.2020 13:06:27
Nepumuk
Hallo Ulli,
ich habe noch das ermitteln der letzten benutzten Zeile im Quellsheet eingebaut und das Formatieren wird nur ausgeführt wenn überhaut Daten übertragen wurden.
Option Explicit

Public Sub To_Do_Uebertragen()
    
    Dim i As Long, j As Long, lngLastRow As Long
    
    With Application
        .Calculation = xlCalculationManual
        .EnableEvents = False
        .ScreenUpdating = False
    End With
    
    With Worksheets("Übertrag to do")
        
        .Unprotect
        
        j = 6
        
        Call .Range(.Cells(6, 1), .Cells(.Rows.Count, 6)).Clear
        
        With Worksheets("G-Muster")
            lngLastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
        End With
        
        For i = 7 To lngLastRow
            
            If Not Worksheets("G-Muster").Rows(i).Hidden Then
                
                If Not Worksheets("G-Muster").Cells(i, 10).Value = "" Then
                    
                    .Cells(j, 2).Value = Worksheets("G-Muster ").Cells(i, 1).Value
                    .Cells(j, 3).Value = Worksheets("G-Muster ").Cells(i, 7).Value
                    .Cells(j, 4).Value = Worksheets("G-Muster ").Cells(i, 9).Value
                    .Cells(j, 5).Value = Worksheets("G-Muster ").Cells(i, 10).Value
                    .Cells(j, 6).FormulaLocal = "=WENN(G-Muster!K" & i & _
                        "="""";"""";WENN(G-Muster!L" & i & "="""";"""";""P""))"
                    
                    j = j + 1
                    
                End If
            End If
        Next i
        
        lngLastRow = .Cells(.Rows.Count, 2).End(xlUp).Row
        
        If lngLastRow > 6 Then
            
            With .Range(.Cells(6, 1), .Cells(lngLastRow, 6))
                
                .HorizontalAlignment = xlCenter
                .VerticalAlignment = xlCenter
                
                With .Font
                    
                    .Name = "Arial"
                    .Size = 10
                    .Bold = False
                    .ColorIndex = 0
                    
                End With
            End With
            
            .Range(.Cells(6, 3), .Cells(lngLastRow, 3)).HorizontalAlignment = xlLeft
            .Range(.Cells(6, 2), .Cells(lngLastRow, 2)).Font.Bold = True
            
            With .Range(.Cells(6, 1), .Cells(lngLastRow, 6))
                
                Call .BorderAround(LineStyle:=xlContinuous)
                .Borders(xlInsideHorizontal).LineStyle = xlContinuous
                .Borders(xlInsideVertical).LineStyle = xlContinuous
                
            End With
            
            With .Range(.Cells(6, 6), .Cells(lngLastRow, 6)).Font
                
                .Name = "Wingdings 2"
                .Size = 16
                .Bold = True
                .Color = -16711936
                
            End With
            
            .Cells(6, 1).Value = 1
            
            Call .Range(.Cells(6, 1), .Cells(lngLastRow, 1)).DataSeries( _
                Rowcol:=xlColumns, Type:=xlDataSeriesLinear, Step:=1)
            
        End If
        
        .Protect
        
    End With
    
    With Application
        .Calculation = xlCalculationAutomatic
        .EnableEvents = True
        .ScreenUpdating = True
    End With
End Sub

Gruß
Nepumuk
Anzeige
AW: Nein
28.12.2020 14:40:53
Ulrich
Hallo Nepumuk,
tadellos!! super ! Danke!
Gruß Ulli
AW: Nein
28.12.2020 15:04:24
Ulrich
Hallo Nepumuk,
noch eine kurze Frage:
Die Daten die in Spalte 2 ab Zeile 6 im sheet " Übertrag to do aus G-Muster" übergeben werden haben folgendes Format: 0"."#0"."0
Kann das mit übergeben werden?
Gruß Ulli
AW: Nein
28.12.2020 15:26:07
Nepumuk
Hallo Ulli,
na dann setzen wir das Format einfach:
Option Explicit

Public Sub To_Do_Uebertragen()
    
    Dim i As Long, j As Long, lngLastRow As Long
    
    With Application
        .Calculation = xlCalculationManual
        .EnableEvents = False
        .ScreenUpdating = False
    End With
    
    With Worksheets("Übertrag to do")
        
        .Unprotect
        
        j = 6
        
        Call .Range(.Cells(6, 1), .Cells(.Rows.Count, 6)).Clear
        
        With Worksheets("G-Muster")
            lngLastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
        End With
        
        For i = 7 To lngLastRow
            
            If Not Worksheets("G-Muster").Rows(i).Hidden Then
                
                If Not Worksheets("G-Muster").Cells(i, 10).Value = "" Then
                    
                    .Cells(j, 2).Value = Worksheets("G-Muster ").Cells(i, 1).Value
                    .Cells(j, 3).Value = Worksheets("G-Muster ").Cells(i, 7).Value
                    .Cells(j, 4).Value = Worksheets("G-Muster ").Cells(i, 9).Value
                    .Cells(j, 5).Value = Worksheets("G-Muster ").Cells(i, 10).Value
                    .Cells(j, 6).FormulaLocal = "=WENN(G-Muster!K" & i & _
                        "="""";"""";WENN(G-Muster!L" & i & "="""";"""";""P""))"
                    
                    j = j + 1
                    
                End If
            End If
        Next i
        
        lngLastRow = .Cells(.Rows.Count, 2).End(xlUp).Row
        
        If lngLastRow > 6 Then
            
            With .Range(.Cells(6, 1), .Cells(lngLastRow, 6))
                
                .HorizontalAlignment = xlCenter
                .VerticalAlignment = xlCenter
                
                With .Font
                    
                    .Name = "Arial"
                    .Size = 10
                    .Bold = False
                    .ColorIndex = 0
                    
                End With
            End With
            
            .Range(.Cells(6, 3), .Cells(lngLastRow, 3)).HorizontalAlignment = xlLeft
            
            With .Range(.Cells(6, 2), .Cells(lngLastRow, 2))
                
                .Font.Bold = True
                .NumberFormat = "0"".""#0"".""0"
                
            End With
            
            With .Range(.Cells(6, 1), .Cells(lngLastRow, 6))
                
                Call .BorderAround(LineStyle:=xlContinuous)
                .Borders(xlInsideHorizontal).LineStyle = xlContinuous
                .Borders(xlInsideVertical).LineStyle = xlContinuous
                
            End With
            
            With .Range(.Cells(6, 6), .Cells(lngLastRow, 6)).Font
                
                .Name = "Wingdings 2"
                .Size = 16
                .Bold = True
                .Color = -16711936
                
            End With
            
            .Cells(6, 1).Value = 1
            
            Call .Range(.Cells(6, 1), .Cells(lngLastRow, 1)).DataSeries( _
                Rowcol:=xlColumns, Type:=xlDataSeriesLinear, Step:=1)
            
        End If
        
        .Protect
        
    End With
    
    With Application
        .Calculation = xlCalculationAutomatic
        .EnableEvents = True
        .ScreenUpdating = True
    End With
End Sub

Gruß
Nepumuk
Anzeige
AW: Nein
28.12.2020 15:46:13
Ulrich
Hallo Nepumuk,
funktioniert wie immer einwandfrei. Danke!
Gruß Ulli

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige