online 1
gast (50)

/ Forum / Skripte(PHP,ASP,Perl...)

Skripte(PHP,ASP,Perl...)Skripte(PHP,ASP,Perl...)

Fragevon Flo07 vom 14.03.2019, 15:44 Options

Makro ausführen in allen Tabellenblättern

Hallo zusammen, habe nachfolgend aufgeführtes Makro in Excel (Version 2003), welches für mehrere Tabellen hergenommen wird. In den einzelnen Tabellen befinden sich mehrere (teilweise über 100) Arbeitsblätter (Name der Tabellenblätter u. a. Artikelbezeichnungen wie „Gewürze, Därme, Kartonagen, Folien, Etiketten, Beutel, Becher-Deckel“ und Artikel-Nr. wie "51000, 51002, 5123, 7153,…."). Wenn ich das nachfolgende Makro ausführe, wird es nur im derzeit aktuellen Arbeitsblatt durchgeführt. Muss ich jetzt für die Definition des Bereichs „Sheets(Array("Kartonagen","Därme",….,"51000",51002...)).Select“ jedes Tabellenblatt angeben oder geht’s auch kürzer, so dass einfach alle Tabellenblätter in der jeweiligen Tabelle angesprochen werden? Mein Makro lautet bisher:

Option Explicit

Sub Aktualisieren()
Dim Bereich As Range
Dim VergleichsBereich As Range
Dim Zelle As Range
Dim I As Long
Set Bereich = ActiveSheet.Range("D6:D999")
Set VergleichsBereich = ActiveSheet.Range("F1")

For Each Zelle In Bereich

If Zelle.Value <> VergleichsBereich.Value And _
TypeName(Zelle.Value) <> "String" And _
TypeName(Zelle.Value) <> "Empty" Then
For I = 0 To -3 Step -1
Zelle.Offset(0, I).ClearContents
Next I
End If
Next Zelle

Set Bereich = Nothing
Set VergleichsBereich = Nothing
End Sub

Wäre super, wenn mir jemand helfen könnte!

Mit freundlichen Grüßen

Flo07


Antwort schreiben

Antwort 1 von coros vom 15.03.2019, 12:59 Options

Hallo Flo,

ich weiß jetzt nicht, ob ich Dich richtig verstanden habe, aber nachfolgends Makro sollte nacheinander in allen Tabellenblättern, die in der aktuelle Arbeitsmappe sind, ausgeführt werden.

[b]Option Explicit

Sub Aktualisieren()
Dim Bereich As Range
Dim VergleichsBereich As Range
Dim Zelle As Range
Dim I As Long, iTabelle As Integer

For iTabelle = 1 To Worksheets.Count

Set Bereich = Sheet(iTabelle).Range("D6:D999")
Set VergleichsBereich = Sheet(iTabelle).Range("F1")

For Each Zelle In Bereich

If Zelle.Value <> VergleichsBereich.Value And _
TypeName(Zelle.Value) <> "String" And _
TypeName(Zelle.Value) <> "Empty" Then
For I = 0 To -3 Step -1
Zelle.Offset(0, I).ClearContents
Next I
End If
Next Zelle

Set Bereich = Nothing
Set VergleichsBereich = Nothing
Next
End Sub[/b]


Ich hoffe, Du meintest das so. Wenn nicht, melde Dich.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 2 von Flo07 vom 17.04.2019, 16:30 Options

Hi zusammen, brauch dringend eure Hilfe! Habe in meine UserForm1 einen Befehlsbutton namens „Artikel einlagern“ eingefügt. Wenn nun dieser Button gedrückt wird, soll folgendes geschehen. Eine neue Userform mit den Abfragen-Punkten „Artikel-Nr.“, „Einlagerungs-Datum“, „Menge“ und „Anzahl der Positionen“ soll geöffnet werden (soll jeweils über Textfeld befüllbar sein). Bei der Eingabe der Artikel-Nr. im entsprechenden Feld soll das Makro diesen in allen geöffneten Arbeitsmappen suchen bis es die gesuchte Artikel-Nr. gefunden hat. (Habe zum Suchen schon ein Makro, dass evtl. in die Lösung mit eingebaut werden könnte!) Von diesem Punkt aus, soll in die erste leere Zeile (bzw. wenn Spalte A leer ist (in den Spalten E, F, G befinden sich, wenn keine Einlagerung mehr vorhanden is, Formeln)also ist daher die Zeile nicht komplett leer) gegangen werden.Anschließend soll gem. des Eintrages in „Anzahl der Positionen“ bis zur ersten leeren Zeile gegangen werden und dann dementsprechend viele Zeilen eingefügt werden (die vorhanden Formeln in der ersten freien Zeile (Wenn noch Einlagerungen vorhanden dann befinden sich die Formeln in der darüber liegendenZeile) sollen übernommen werden). Der Eintrag in „Einlagerungs-Datum“ soll dann in allen Zeilen in Spalte B und bei „Menge“ in allen Zeilen in Spalte C übernommen werden, sobald der Benutzer seine Eingaben in den Textfeldern gemacht und den Button "Einlagern" gedrückt hat. Ist ziemlich kompliziert, oder? Wenn das jemand hinkriegen sollte, zücke ich meinen imaginären Hut vor Hochachtung! Wäre euch für eure Hilfe sehr dankbar!

Hier mein Such-Makro:









Public Sub Suchen()
Dim WB As Workbook
Dim strInbox As String
Dim zelle As Range
Dim intWks As Integer
Dim Wahl As String
Dim FirstAddress
Dim bln As Boolean


strInbox = InputBox("ARTIKELSUCHE")
If strInbox = "" Then
Exit Sub
End If
For Each WB In Workbooks
WB.Activate
For intWks = 1 To ActiveWorkbook.Sheets.Count
With Worksheets(intWks).UsedRange
Set zelle = .Find(strInbox, LookIn:=xlValues)
If Not zelle Is Nothing Then
FirstAddress = zelle.Address
bln = True
Do
Worksheets(intWks).Select
zelle.Select
Wahl = _
MsgBox("[ " & strInbox & " ] gefunden in: " & vbCr _
& vbCr & "Mappe: " & WB.Name _
& vbCr & "Tabelle: " & Worksheets(intWks).Name _
& vbCr & " Zelle: " & zelle.Address(0, 0) _
& vbCr & vbCr & "Weitersuchen?", vbYesNo)
If Wahl = vbNo Then
Set zelle = Nothing
Exit Sub
End If
Set zelle = .FindNext(zelle)
Loop While Not zelle Is Nothing And zelle.Address <> FirstAddress
End If
End With
Next intWks
Next WB

If bln = False Then
MsgBox "Der Suchbegriff [" & strInbox & "] wurde nicht gefunden."
End If
Set zelle = Nothing
Workbooks.Activate
End Sub





Vielen Dank schon mal für euer Bemühen!

Grüße

Flo07

Ähnliche Themen

inTabelle die freien Zellen löschen
dieter2000  22.12.2007 - 95 Hits - 1 Antwort

zeilen per makro ausblenden
wundi123  10.01.2008 - 38 Hits - 2 Antworten

makro zum benennen von tabellenblättern
wundi123  12.02.2008 - 37 Hits - 7 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Mon Jan 26 01:23:17 2026