Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1948to1952
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

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

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

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige