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

Forumthread: VBA mehrere Zellen abfragen (Or)

VBA mehrere Zellen abfragen (Or)
08.06.2021 14:08:11
Marc
Hallo zusammen,
kurze Frage, wie muss denn der korrekte Code heißen wenn ich S40, S44, S48 und S52 abfragen möchte?
S40 oder S44 oder .....
Nur mit der Abfrage von S40 sieht mein Code so aus:
Option Explicit

Sub Anzeige_wechseln()
If Workbooks("SG Kolping Remscheid lll -.xlsm").Worksheets("Spielbericht").Range("S40").Value  "" Then
Workbooks("Spielstandanzeige.xlsm").Worksheets("Anzeige").Range("G11").Value = "S"
End If
If Workbooks("SG Kolping Remscheid lll -.xlsm").Worksheets("Spielbericht").Range("S40").Value = "" Then
Workbooks("Spielstandanzeige.xlsm").Worksheets("Anzeige").Range("G11").Value = "A"
End If
End Sub
Es geht mir um die richtige Schreibweise.
Danke für Eure Hilfe
Gruß Marc
Anzeige

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA mehrere Zellen abfragen (Or)
08.06.2021 14:22:18
Rudi
immer A oder S nach G11 schreiben?

Sub aaaa()
Dim strOUT As String
With Workbooks("SG Kolping Remscheid lll -.xlsm").Worksheets("Spielbericht")
Select Case True
Case .Range("S40")  "", .Range("S44")  "", .Range("S48")  "", .Range("S52")  ""
strOUT = "S"
Case Else: strOUT = "A"
End Select
End With
Workbooks("Spielstandanzeige.xlsm").Worksheets("Anzeige").Range("G11") = strOUT
End Sub
Gruß
Rudi
Anzeige
AW: VBA mehrere Zellen abfragen (Or)
08.06.2021 14:51:07
Marc
Hallo Rudi,
vielen Dank!!!
Funktioniert einwandfrei.
Gruß Marc
P.S. Eigentlich wollte ich nur, dass wenn in dem Arbeitsblatt (SG Kolping Remscheid lll -.xlsm/Spielbericht) in den Zellen S40, S44, S48 oder S52 ein Wert eingetragen wird dann automatisch ein Makro gestartet wird. Wenn die Zellen leer sind/bleiben, dann soll nichts passieren. Geht sowas irgendwie?
Es geht darum, dass auf einem externem Monitor (Spielstandanzeige.xlsm) die Anzeige gewechselt werden soll.
Darf ich Dir dazu evtl. noch einmal schreiben?
Ich möchte allerdings Deine Hilfe keineswegs überstrapazieren.
Gruß Marc
Anzeige
du darfst schreiben ...
08.06.2021 15:51:28
Rudi
... soviel du willst. Dafür ist ein Forum da.
Wenn ich keine Lust habe, antworte ich einfach nicht. ;-)
Gruß
Rudi
AW: du darfst schreiben ...
08.06.2021 16:30:05
Marc
Hallo Rudi,
genau mein Humor :-)
Wie müsste denn dann jetzt das Makro aussehen?
Option Explicit
Sub Anzeige_wechseln()
Dim strOUT As String
With Workbooks("SG Kolping Remscheid lll -.xlsm").Worksheets("Spielbericht")
Select Case True
Case .Range("S40") "", .Range("S44") "", .Range("S48") "", .Range("S52") ""
strOUT = "S"
Case Else: strOUT = "A"
End Select
End With
Workbooks("Spielstandanzeige.xlsm").Worksheets("Anzeige").Range("G11") = strOUT
End Sub Dann müsste doch anstatt strOUT = "S" der Aufruf für das Makro stehen. Aber wie?
Und vor allem wie müsste dann das andere Makro aussehen?
Momentan sieht es so aus:
Option Explicit

Private Sub worksheet_change(ByVal Target As Excel.Range)
Application.ScreenUpdating = False
If Intersect(Target, Range("G11")) Is Nothing Then
Exit Sub
Else
If Target.Value = "S" Then
Range("A1").FormulaR1C1 = _
"='[SG Kolping Remscheid lll -.xlsm]Spielbericht'!R26C41"
Range("A16:F50,H16:M50").ClearContents
With Range("A16:F50,H16:M50")
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = True
End With
Range("A16:F50").FormulaR1C1 = _
"='[SG Kolping Remscheid lll -.xlsm]Spielbericht'!R30C41"
Range("H16:M50").FormulaR1C1 = _
"='[SG Kolping Remscheid lll -.xlsm]Spielbericht'!R30C44"
End If
End If
Application.ScreenUpdating = True
End Sub
Dann müsste ja theoretisch ("G11") und "S" weg.
Ich weiß nur leider nicht wie.
Das erste Makro (von Dir) steht in der Datei "SG Kolping Remscheid lll -" als Modul Spielstandanzeige"
Das zweite Makro steht in der Datei "Spielstandanzeige" im Tabellenblatt "Anzeige".
Ich hoffe das ist richtig so.
Sollte auf Jedenfall automatisch starten sobald in S40 usw. etwas eingegeben wird.
Danke
Gruß Marc
Anzeige
AW: du darfst schreiben ...
08.06.2021 16:59:36
Daniel
Hi
1. wenn ein Makro automatisch starten soll, sobald in eine oder mehrere Zellen auf einem bestimmten Tabellenblatt etwas vom Anwender eingegeben wird, musst du hierfür das

Private Sub worksheet_change(ByVal Target As Excel.Range)
Marko verwenden und zwar immer im Modul desjenigen Tabellenblatts, auf welchem auch die Zellen liegen, die das Makro auslösen sollen.
liegen die Zellen über mehrere Blätter verteilt, so brauchst du für jedes Blatt ein eigenes Makro.
2. willst du hierbei mehrere Zellen überwachen, so geht das, wenn jede der Zelle die gleiche Aktion auslösen soll, für mehrere Zellen am besten so:

Private Sub worksheet_change(ByVal Target As Excel.Range)
If Not Intersect(Target, Range("S40,S44,S48,S52")) Is Nothing Then
hier der Code der ausgeführt werden soll, wenn eine dieser Zellen geändert wurde
end If
End sub
die Variante mit der Aktion im vollständigen IF-Block mit "NOT Intersect () is Nothing" ist hier gegen der Exit-Sub Variante vorziehen, weil du dann das Makro einfacher erweitern kannst, wenn du noch weitere Zellen, hast die Aktionen auslösen sollen, aber jedoch andere.
die könntest du dann durch Anhängen weiterer IF-Blöcke ergänzen.
Arbeitest du mit Exit Sub, so funktioniert das dann nur für eine Variante.
Gruß Daniel
Anzeige
AW: du darfst schreiben ...
08.06.2021 17:47:26
Marc
Hallo Daniel,
soweit prinzipiell verstanden.
ABER:
Der Code bzw. das was geändert werden soll liegt ja in einer anderen Datei und anderen Tabellenblatt.
Wie und wo soll ich das denn dann eintragen? Da wo Du geschrieben hast?
Excel muss doch dann wissen wo und was geändert werden muss.
Also ich bekomme das irgendwie nicht "gebacken".
Der Code liegt ja jetzt direkt im Tabellenblatt.
Hier mal der Code:
Option Explicit

Private Sub worksheet_change(ByVal Target As Excel.Range)
Application.ScreenUpdating = False
If Intersect(Target, Range("G11")) Is Nothing Then
Exit Sub
Else
If Target.Value = "S" Then
Range("A1").FormulaR1C1 = _
"='[SG Kolping Remscheid lll -.xlsm]Spielbericht'!R26C41"
Range("A16:F50,H16:M50").ClearContents
With Range("A16:F50,H16:M50")
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = True
End With
Range("A16:F50").FormulaR1C1 = _
"='[SG Kolping Remscheid lll -.xlsm]Spielbericht'!R30C41"
Range("H16:M50").FormulaR1C1 = _
"='[SG Kolping Remscheid lll -.xlsm]Spielbericht'!R30C44"
End If
End If
Application.ScreenUpdating = True
End Sub
Dann müsste ich ja den ganzen Code abändern, Oder?
Dass das ("G11") und "S" da raus muss ist mir klar.
Nur was ich dann wie und wo eintragen muss verstehe ich leider nicht.
Gruß Marc
Anzeige
AW: du darfst schreiben ...
08.06.2021 18:02:50
Daniel
Wenn du automatisch erkennen willst, dass die Zelle A1 auf dem Tabellenblatt "Tabelle1" von Anwender geändert wurde und dadurch ein Makro ausgelöst werden soll, brauchst du dazu das Change-Eventmakro im Modul des Tabellenblatts "Tabelle1"
alles andere geht nicht. VERSTANDEN?
du kannst nicht von der Mappe2 aus die Mappe1 automatisiert auf Veränderung überwachen.
So eine Überwachung funktioniert nur innerhalb der eigenen Mappe.
Ist wie ein Brandmelder. Den musst du auch in dem Zimmer installieren, das überwacht werden soll.
selbst wenn du einen Brandmelder hast, der bei Alarm nicht nur piept, sondern auch die Feuerwache alamieren soll.
Der Brandmelder muss in deinem Zimmer installiert werden und nicht auf der Feuerwache.
Der Brandmelder kann zwar ein Signal an die Feuerwache funken, wenn er in deinem Zimmer ist, aber er kann nicht den Rauch in deinem Zimmer erkennen, wenn er auf der Brandwache liegt.
hast du uns schon erklärt, was du genau erreichen willst (und war so ausführlich, dass jemand der deine Datei nicht vor sich hat und deine Aufgabenstellung nicht kennt, das auch versteht), wenn nein, solltest du das vielleicht erstmal tun (und zwar ohne daran zu denken, wie das vielleicht programmiert werden kann, sondern einfach: wer macht was und was soll darauf hin passieren)
wenn ja, wo kann ich das nachlesen.
vermeide dabei auch möglichst passiv-konstruktionen wie "Zelle xy ändert sich" oder "Zelle xy wird geändert" weil hier einfach die wichtige Information fehlt, wer oder was die Zellen xy ändert.
Gruß Daniel
Anzeige
AW: du darfst schreiben ...
08.06.2021 18:33:04
Marc
Hallo Daniel,
wenn sich in einer Datei in einem Tabellenblatt in 4 ausgewählten Zellen etwas ändert, dann ist es nicht möglich in einer anderen Datei in einem anderen Tabellenblatt ein Makro zu starten das dort ausgeführt wird und dort Änderungen vornimmt?
Verstehe ich das richtig?
Gruß Marc
Anzeige
AW: du darfst schreiben ...
08.06.2021 19:46:10
Daniel
das ist schon alles möglich.
es ist nur so, dass wenn du automatisch erkennen willst, dass in dem einen Tabellenblatt in der einen Datei eine von 4 möglichen Zellen geändert wurde, dann brauchst du ein Makro dass Modul dieses einen Tabellenblatts in der einen Datei liegt.
dieses Makro kann dann in der anderen Datei Änderungen ausführen oder auch andere Makros, die sich in der anderen Datei befinden ausführen lassen (dann nicht über Call sondern mit Application.Run), aber du brauchst für die Automatische Ausführung immer den "Initialzünder", dh das Change-Eventmarko in der einen Datei in dem einen Tabellenblatt, in dem die Änderungen gemacht werden, die die Änderungen in dem anderen Tabellenblatt auslösen sollen.
Es ist nicht möglich, dass ein Makro, dass in der anderen Datei liegt, von sich aus automatisch startet, wenn in der einen Datei eine Zelle geändert wird.
wie gesagt, dein Makro ist wie ein Rauchmelder. Wenn der Rauchmelder einen Brand in einem Zimmer erkennen soll, dann musst du ihn auch in diesem einen Zimmer installieren und nicht in einem anderen.
Gruß Daniel
Anzeige
AW: du darfst schreiben ...
08.06.2021 20:13:29
Marc
Hallo Daniel,
da bin ich aber beruhigt.
Und wie muss muss jetzt das Makro aussehen das die Änderung ausführt und wo muss es hin und wie lautet der Aufruf dazu?
Ich weiß es leider nicht.
Gruß Marc
AW: du darfst schreiben ...
08.06.2021 20:40:53
Daniel
welche Zelle(n) sollen das Makro auslösen (bitte gebe konkret an Zellladressen, Tabellenblattname, Dateiname)
welche Zelle(n) sollen durch dieses Makros verändert werden (gib bitte wieder Zelladresse, Tabellenblattname und Dateinamen an)
hatten wir dir das nicht alles schon mal erklärt?
vielleicht liest du mit deinen neuen Erkenntnissen im Kopf die anderen Antworten nochmal durch, vielleicht verstehst du sie dann besser.
Gruß Daniel
Anzeige
AW: du darfst schreiben ...
08.06.2021 22:34:22
Marc
Hallo Daniel,
wenn in der Datei "SG Kolping Remscheid lll -.xlsx" / "Spielbericht" die Zellen S40 oder S44 oder S48 oder S52 verändert werden ("")
Dann hätte ich gerne, dass in der Datei "Spielstananzeige.xlsx" / "Anzeige" folgendes passiert:
Lösche A16-F50 und H16-M50
Verbinde mir die Zellen A6-F50 und H16-M50
Dann Zeige mir in A6 an was in "SG Kolping Remscheid lll -.xlsx" / "Spielbericht" AO30 steht
Und zeige mir in H16 an was in "SG Kolping Remscheid lll -.xlsx" / "Spielbericht" AR30 steht
Dann zeige mir In A1 an, was in "SG Kolping Remscheid lll -.xlsx" / "Spielbericht" AO26 steht
Feddich.
Das finde ich zum Beispiel kompliziert Euch zu schreiben.
Ich mache das ja nicht extra schwer für Euch, aber jeder braucht ggf. andere Informationen.
Gruß Marc
Anzeige
AW: du darfst schreiben ...
08.06.2021 22:38:30
Marc
Sorry muss natürlich im 6. Satz A16 heißen
AW: du darfst schreiben ...
08.06.2021 23:24:34
Daniel
naja, erwarte nicht ein vollständiges Makro
Deine Arbeit darfst du schon selber erledigen.
prüfen wir mal, ob du auch verstanden hast, was ich dir geschrieben habe und beantworte einfach folgende Frage:
in welches Modul welcher Datei muss der Code rein:
a) Datei "SG Kolping Remscheid lll -.xlsx" ins Modul der Tabelle "Spielbericht" (Modulname ist normalerweise noch TabelleX, so wie ursprünglich vor er Umbenennung
b) Datei "Spielstananzeige.xlsx" ins Modul der Tabelle "Anzeige"
die nächste inhaltliche Frage wäre:
warum müssen die Zellen A6-F50 verbunden werden?
ändert sich das irgendwann mal? Wenn nein, dann mach das doch einmalig von Hand.
dann muss das nicht in den Code rein.
Alles was stets gleich ist, sollte man nicht per Makro ändern, sondern von Hand machen , damit das Makro nicht unnötig kompliziert wird.
Gruß Daniel
Anzeige
AW: du darfst schreiben ...
09.06.2021 09:50:34
Marc
Hallo Daniel,
wie bitte kommst Du darauf, dass ich ein vollständiges Makro erwarte?
Das habe ich doch schon längst erstellt (siehe Nachricht vom 08.06.2021 14:51:07)
Funktioniert ja auch prima.
Ich bekomme es nur nicht automatisiert.
Händisch bzw. über meinen CommandButton klappt ja alles.
Ein Makro zu erwarten, ohne es selbst versucht zu haben, wäre auch etwas dreist wie ich selber finde. Das wäre ja dann eher eine Auftragsprogrammierung.
Ein Makro geringfügig abzuändern damit es ggf. besser, schneller oder automatisch funktioniert, da hatte ich gedacht dass man hier Hilfe finden kann.
Manchmal hilft so ein kleiner Schubser.
Danke trotzdem für Deine Arbeit/Mühe.
Gruß Marc
Anzeige
AW: du darfst schreiben ...
09.06.2021 11:47:18
Daniel
Also gehe ich mal davon aus, dass dir jetzt klar ist, in welchem Modul das Change-Event_Marko platzieren musst.
ist das einzige was vielleicht noch offen sein könnte die Frage, wie man in einem Makro Zellen anspricht, die auf einem anderen Tabellenblatt in einer anderen Mappe liegen.
Das geschieht durch vollständige Referenzierung, in dem man vor dem Range oder Cells beides noch mit angibt:
  • Workbooks("Dateiname").Sheets("Tabellenblattname").Range("A1").Value = "Hallo Welt"

  • wie du innerhalb einer Formel auf eine andere Mappe referenzierst, weist du ja , wie deine Codes zeigen.
    somit müsstest du das ganze eigentlich ans laufen bringen.
    Gruß Daniel
    Anzeige
    AW: du darfst schreiben ...
    09.06.2021 14:19:21
    Marc
    Hallo Daniel,
    ich habe leider null Plan wo was hin muss und was geändert werden muss.
    Dafür weis ich aber jetzt wie Rauchmelder funktionieren. :-)
    Ich lass das jetzt erst einmal so wie es ist.
    Das Makro läuft ja.
    Vielleicht finde ich ja online noch irgendwo etwas das mich diesbezüglich weiterbringt.
    Gruß Marc
    Anzeige
    Grundwissen, die zweite
    09.06.2021 16:37:42
    Yal
    Hallo Marc,
    ich verfolge seit einigen Thread deine Hilfslosigkeit, die Erkärungen, die Dir gegeben worden sind, zu verstehen. Ich glaube, Du bist auf die Lösung des Problems so fixiert, dass Du die Zusammenhänge nicht erfassen kannst (vor lauter Bäumen den Wald nicht sehen. Kenne ich selber).
    Abstand nehmen, tief einatmen. Zuerst verstehen, dann lösen.
    Alles was in Tabelle1 passiert löst ein "eigene" Ereignis. Diese eigene Ereignisse sind alle in der eigene Codepane aufgelistet (erreichbar am einfachste mit Rechtsklick auf dem Tabellenblatt-Reiter mit "Code anzeigen").
    Dann dort über den Codefenster oben links anstatt "allgemein" "Worksheet" auswählen.
    Auf dieselbe Höhe rechts kommt jetzt in der Dropdown viele Einträge, u.a. Change. Das sind die verfügbare Ereignisse. Schau Dir an, was alles zur Verfügung steht. Diese reagieren alle auf Ereignis die in Tabelle 1 passieren. Diese Schritt hast Du offenbach hinter Dir.
    Solltest Du eine Reaktion haben wollen, wenn etwas auf Tabelle2 passiert, same Procedure, aber im Codepane von Tabelle2.
    Solltest Du eine Reaktion haben wollen, wenn etwas Tabellen unabhängig passiert, dann schaue in der Codepane namens "DieseArbeitsmappe". Es sind andere Ereignis. Z.B. "Before Close". Warum? weil es hier um das Objekt Arbeitsmappe handelt, der die Arbeitsmappe-Ereignis behandelt.
    Im Prinzip, wenn dasselbe passieren soll, wenn in den jeweiligen "G11" passiert, dann kannst Du in den jeweiligen Codepane eine Basis-Behandlung machen und die tatsächlich Behandlung (den Du nicht 10 mal schreiben möchte) in einem Modul ablegen. Es handelt sich in dem Fall um eine normalen Procedure und keine Eregnis.
    Also in Codepane von Tabelle1, wenn G11 und S4x behandelt werden sollen:
    
    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    Select Case Target.Address(False, False)
    Case "G11"
    MeinBehandlungFür_G11 Target
    Case "S40", "S42", "S44"
    MeinBehandlungFür_Sxx Target
    End Select
    End Sub
    
    In Codepane von Tabelle2, wenn nur G11 behandelt werden soll:
    
    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    Select Case Target.Address(False, False)
    Case "G11"
    MeinBehandlungFür_G11 Target
    End Select
    End Sub
    
    usw.
    Wenn diese Procedure (= "Sub" oder "Function". Function ist ein Sub, das ein Ergebnis zurückliefern darf) in einem anderen Datei liegt, dann muss Du den Code mitteilen, wo diese Procedure zu finden sei.
    Im Allgemein beachte folgende Grundwissen:
    https://de.wikibooks.org/wiki/VBA_in_Excel/_G%C3%BCltigkeit_von_Variablen_und_Konstanten
    VG
    Yal
    Anzeige
    ;

    Forumthreads zu verwandten Themen

    Anzeige
    Anzeige
    Anzeige
    Anzeige
    Anzeige

    Infobox / Tutorial

    VBA mehrere Zellen abfragen (Or)


    Schritt-für-Schritt-Anleitung

    Um in Excel VBA mehrere Zellen auf ihren Inhalt zu prüfen, kannst du den folgenden Code verwenden. In diesem Beispiel wird überprüft, ob in den Zellen S40, S44, S48 oder S52 ein Wert vorhanden ist. Wenn einer dieser Werte vorhanden ist, wird "S" in G11 geschrieben; andernfalls "A".

    Sub Anzeige_wechseln()
        Dim strOUT As String
        With Workbooks("SG Kolping Remscheid lll -.xlsm").Worksheets("Spielbericht")
            Select Case True
                Case .Range("S40") <> "", .Range("S44") <> "", .Range("S48") <> "", .Range("S52") <> ""
                    strOUT = "S"
                Case Else
                    strOUT = "A"
            End Select
        End With
        Workbooks("Spielstandanzeige.xlsm").Worksheets("Anzeige").Range("G11") = strOUT
    End Sub

    Um das Makro automatisch auszulösen, wenn sich einer der Werte ändert, musst du das Worksheet_Change-Ereignis verwenden:

    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
        If Not Intersect(Target, Me.Range("S40,S44,S48,S52")) Is Nothing Then
            Call Anzeige_wechseln
        End If
    End Sub

    Häufige Fehler und Lösungen

    1. Fehler: Das Makro wird nicht ausgeführt.

      • Lösung: Stelle sicher, dass das Worksheet_Change-Ereignis im richtigen Modul (Tabellenblatt) implementiert ist.
    2. Fehler: Das Ergebnis in G11 bleibt leer.

      • Lösung: Überprüfe, ob die Zellen S40, S44, S48 und S52 tatsächlich Werte enthalten. Möglicherweise sind sie leer oder der Code wird nicht ausgelöst.
    3. Fehler: Der Verweis auf die Arbeitsmappe ist falsch.

      • Lösung: Achte darauf, dass die Arbeitsmappe "SG Kolping Remscheid lll -.xlsm" geöffnet ist, bevor du darauf zugreifst.

    Alternative Methoden

    Anstelle von Select Case kannst du auch eine Schleife verwenden, um die Zellen zu überprüfen. Dies kann nützlich sein, wenn du eine größere Anzahl an Zellen hast:

    Sub Anzeige_wechseln()
        Dim strOUT As String
        Dim cell As Range
        Dim foundValue As Boolean
        foundValue = False
    
        For Each cell In Workbooks("SG Kolping Remscheid lll -.xlsm").Worksheets("Spielbericht").Range("S40,S44,S48,S52")
            If cell.Value <> "" Then
                foundValue = True
                Exit For
            End If
        Next cell
    
        If foundValue Then
            strOUT = "S"
        Else
            strOUT = "A"
        End If
    
        Workbooks("Spielstandanzeige.xlsm").Worksheets("Anzeige").Range("G11").Value = strOUT
    End Sub

    Praktische Beispiele

    Hier sind einige Anwendungsfälle für das Prüfen mehrerer Zellen in Excel VBA:

    1. Spielstandanzeige aktualisieren: Wenn die Zellen S40, S44, S48 oder S52 aktualisiert werden, kannst du den aktuellen Spielstand auf einem externen Monitor aktualisieren.

    2. Datenvalidierung: Überprüfe, ob bestimmte Eingabefelder in einem Formular ausgefüllt sind, bevor du die Eingabe speicherst.

    3. Zusammenfassung von Werten: Summiere die Werte in mehreren Zellen und gebe das Ergebnis in einer anderen Zelle aus.


    Tipps für Profis

    • Verwende Named Ranges: Anstatt die Zelladressen hart zu kodieren, kannst du benannte Bereiche nutzen, um deinen Code leserlicher zu machen.

    • Debugging: Nutze Debug.Print oder setze Haltepunkte, um den Fluss deines Makros zu überprüfen und Fehler schneller zu identifizieren.

    • Error Handling: Implementiere Fehlerbehandlungsroutinen, um unvorhergesehene Fehler elegant zu handhaben.


    FAQ: Häufige Fragen

    1. Wie kann ich mehrere Zellen auf einmal abfragen? Du kannst die Intersect-Methode verwenden, um mehrere Zellen in einer Zeile zu überprüfen, wie im obigen Beispiel gezeigt.

    2. Was muss ich tun, wenn ich das Makro von einer anderen Datei aus aufrufen möchte? Du musst sicherstellen, dass du die Arbeitsmappe mit Application.Run referenzierst, z.B. Application.Run "'[Spielstandanzeige.xlsm]Modulname'.MeinMakro".

    3. Ist es möglich, dass ein Makro in einer anderen Datei ausgeführt wird, wenn eine Zelle in meiner aktuellen Datei geändert wird? Ja, aber das Change-Event muss im Modul des entsprechenden Tabellenblatts der Datei implementiert sein.

    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