Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Aufführen eines Makros auf mehreren Blättern

Aufführen eines Makros auf mehreren Blättern
01.11.2023 14:05:25
Lukas_VBA
Hallo zusammen,

ich sitze mehr oder weniger gerade an meinem ersten großem VBA-Projekt und komme gerade einfach nicht weiter.
In einer recht umfangreichen Arbeitsmappe möchte ich ein Makro auf verschiedenen Arbeitsblättern anwenden lassen. Dafür habe ich bereits in diesem Forum eine Möglichkeit gefunden und integriert, dennoch agiert er nicht so wie er soll anstatt des Makro auf den verschiedenen Arbeitsblättern anzuwenden, arbeitet er nur auf dem mir eingeblendetem Arbeitsblatt.



Option Explicit

Sub Preiserhöhung()

Dim wksSheet As Worksheet
Dim LastRow As Long
Dim i As Long
Dim LastColumn As Long
Dim LastColumn_A As Long
Dim LastColumn_Buchstabe As String


For Each wksSheet In ThisWorkbook.Worksheets

Select Case wksSheet.Name
Case "Leerschränke allg. Verwendung", "Leerschränke|-säulen"
With wksSheet

'Spalte vor Spalte E einfügen
Columns("E:E").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove

'Spalte F in Spalte E kopieren
Columns("F:F").Select
Selection.Copy
Columns("E:E").Select
ActiveSheet.Paste
Application.CutCopyMode = False

'Spalte F umbenennen mit aktuellem Datum
Range("F1").Select
ActiveCell.FormulaR1C1 = Date

'Letzte Spalte finden
LastColumn = wksSheet.Cells(, wksSheet.Columns.Count).End(xlToLeft).Column

'Zwischenrechnung
LastColumn_A = LastColumn - 5

'Alte Preise ausblenden
Columns(6).Resize(, LastColumn_A).EntireColumn.Select
Selection.EntireColumn.Hidden = True

' Letzte Zeile in der Spalte A finden
LastRow = wksSheet.Cells(wksSheet.Rows.Count, "A").End(xlUp).Row

' Schleife durch die Zeilen
For i = 2 To LastRow ' Wir beginnen bei Zeile 2, da Zeile 1 normalerweise die Überschriften enthält
If wksSheet.Cells(i, 4).Value = 1 Then
' Wenn "Preiskategorie" gleich 1 ist, fügen Sie 1 zum Wert in "Preis" hinzu
wksSheet.Cells(i, 5).Value = wksSheet.Cells(i, 5).Value * 2
ElseIf wksSheet.Cells(i, 4).Value = 2 Then
' Wenn "Preiskategorie" gleich 2 ist, fügen Sie 2 zum Wert in "Preis" hinzu
wksSheet.Cells(i, 5).Value = wksSheet.Cells(i, 5).Value * 2
End If

Next i

End With
Case Else

End Select

Next wksSheet

End Sub


Ich würde mich freuen wenn jemand der mehr Ahnung von dem Thema hat, mir weiterhelfen könnte.
Vielen Dank und mit freundlichen Grüßen
Lukas
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Aufführen eines Makros auf mehreren Blättern
01.11.2023 14:46:37
GerdL
Hallo Lukas,

kein Select, überall Verweispunkte auf wksSheet, sollte der Code in den beiden Tabellenblättern laufen.
Sub Preiserhöhung()


Dim wksSheet As Worksheet
Dim LastRow As Long
Dim i As Long
Dim LastColumn As Long
Dim LastColumn_A As Long
Dim LastColumn_Buchstabe As String 'wird nicht verwendet


For Each wksSheet In ThisWorkbook.Worksheets

Select Case wksSheet.Name
Case "Leerschränke allg. Verwendung", "Leerschränke|-säulen"

With wksSheet

'Spalte vor Spalte E einfügen
.Columns(5).Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove

'Spalte F in Spalte E kopieren
.Columns(6).Copy
.Columns(5).PasteSpecial xlPasteAll
Application.CutCopyMode = False

'Spalte F umbenennen mit aktuellem Datum
.Range("F1") = Date

'Letzte Spalte finden
LastColumn = .Cells(, .Columns.Count).End(xlToLeft).Column 'XXXX in welcher Zeile

'Zwischenrechnung
LastColumn_A = LastColumn - 5

'Alte Preise ausblenden
.Columns(6).Resize(, LastColumn_A).EntireColumn.Hidden = True

' Letzte Zeile in der Spalte A finden
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row

' Schleife durch die Zeilen
For i = 2 To LastRow ' Wir beginnen bei Zeile 2, da Zeile 1 normalerweise die Überschriften enthält
If .Cells(i, 4).Value = 1 Then
' Wenn "Preiskategorie" gleich 1 ist, fügen Sie 1 zum Wert in "Preis" hinzu
.Cells(i, 5).Value = .Cells(i, 5).Value * 2
ElseIf .Cells(i, 4).Value = 2 Then
' Wenn "Preiskategorie" gleich 2 ist, fügen Sie 2 zum Wert in "Preis" hinzu
.Cells(i, 5).Value = .Cells(i, 5).Value * 2
End If

Next i

End With

Case Else
'XXXX Mach nix, wenn das Blatt andes benamt ist.
End Select

Next wksSheet

End Sub




Gruß Gerd
Anzeige
AW: Aufführen eines Makros auf mehreren Blättern
01.11.2023 14:52:56
Lukas_VBA
Hallo Gerd,

vielen lieben Dank es hat funktioniert.

Freundliche Grüße
Lukas
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige