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

Forumthread: Zellen aus Matrix ausschliessen

Zellen aus Matrix ausschliessen
andre
Hallo,
ich will mit folgendem Code in einer Tabelle per Doppelclick ein Zeichen in eine Zelle
eintragen:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim Spalte As Integer
Dim Zeile As Integer
For Spalte = 4 To 34
For Zeile = 4 To 64
If Zeile = 50 Or Zeile = 51 Or Zeile = 52 Or Zeile = 55 Or Zeile = 56 Or Zeile = 57_
Or Zeile = 60 Or Zeile = 61 Or Zeile = 62 Then GoTo M001
If Target.Column = Spalte And Target.Row = Zeile Then
If Target.Cells.MergeCells Then GoTo M001
Cancel = True
Target = "P"
End If
M001:
Next
Next
End Sub

In der Matrix gibt es Zeilen, die ich ausschliessen will.
Muß ich das mit der langen ODER-Verkettung machen oder geht es auch anders.
Der Code funktioniert aber vielleicht gibt es eine elegantere Lösung.
Vielen Dank!
Gruß Andre
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Zellen aus Matrix ausschliessen
18.05.2012 09:14:31
Reinhard
Hallo Andre,
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim Spalte As Integer
Dim Zeile As Integer
For Spalte = 4 To 34
For Zeile = 4 To 64
Zeile = IIf(Zeile = 50 Or Zeile = 55 Or Zeile = 60, Zeile + 3, Zeile)
If Target.Column = Spalte And Target.Row = Zeile And Not Target.Cells.MergeCells Then
Cancel = True
Target = "P"
End If
Next Zeile
Next Spalte
End Sub

Gruß
Reinhard
Anzeige
AW: Zellen aus Matrix ausschliessen
18.05.2012 09:16:47
Martin
Hallo André,
so viele kann da nicht verbessert werden. Vielleicht ist folgender Code etwas übersichtlicher:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim Spalte As Integer, Zeile As Integer
For Spalte = 4 To 34
For Zeile = 4 To 64
Select Case Zeile
Case 50 To 52, 55 To 57, 60 To 62
Exit For
End Select
If Target.Column = Spalte And Target.Row = Zeile Then
If Target.Cells.MergeCells Then Exit For
Cancel = True
Target = "P"
End If
Next
Next
End Sub
Ich habe den Code nicht gestestet und hoffe, dass trotzdem noch alles richtig klappt :-)
Viele Grüße
Martin
Anzeige
AW: Zellen aus Matrix ausschliessen
18.05.2012 09:16:58
Beverly
Hi Andre,
vielleicht so:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column > 3 And Target.Column 



Anzeige
Ich hab auch noch einen ;-)
18.05.2012 09:23:30
xr8k2
Hallo Andre,
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("D4:AH49, D53:AH54, D58:AH59, D63:AH64")) Is Nothing _
And Not Target.Cells.MergeCells Then
Target.Value = "P"
Cancel = True
End If
End Sub
Gruß,
xr8k2
Anzeige
Lödung ohne Schleife
18.05.2012 09:30:31
Martin

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Application.Intersect(Range("D4:AH64"), Target) = Nothing Then
Select Case Target.Row
Case 50 To 52, 55 To 57, 60 To 62
Exit For
End Select
If Target.Cells.MergeCells Then Exit For
Cancel = True
Target = "P"
End If
End Sub

Anzeige
AW: Zellen aus Matrix ausschliessen
19.05.2012 08:44:08
andre
Hallo,
danke an alle!
Bin von den vielen Möglichkeiten begeistert und werde am Ende die Variante verwenden, die ich selber auch verstehe.
Danke und ein schönes Wochenende!
Gruß André
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Zellen aus Matrix ausschließen in Excel


Schritt-für-Schritt-Anleitung

Um Zellen aus einer Matrix in Excel auszuschließen, kannst du den folgenden VBA-Code verwenden. Dieser Code ermöglicht es, durch einen Doppelklick in einer Zelle ein Zeichen einzutragen, während bestimmte Zeilen ausgeschlossen werden.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Wähle das entsprechende Arbeitsblatt im Projekt-Explorer aus.
  3. Füge den folgenden Code in das Codefenster ein:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim Spalte As Integer
    Dim Zeile As Integer
    For Spalte = 4 To 34
        For Zeile = 4 To 64
            If Zeile = 50 Or Zeile = 51 Or Zeile = 52 Or Zeile = 55 Or Zeile = 56 Or _
               Zeile = 57 Or Zeile = 60 Or Zeile = 61 Or Zeile = 62 Then GoTo M001
            If Target.Column = Spalte And Target.Row = Zeile Then
                If Target.Cells.MergeCells Then GoTo M001
                Cancel = True
                Target = "P"
            End If
M001:
        Next Zeile
    Next Spalte
End Sub
  1. Schließe den VBA-Editor und teste den Code in deinem Arbeitsblatt.

Häufige Fehler und Lösungen

  • Fehler: Der Code funktioniert nicht wie erwartet.

    • Lösung: Stelle sicher, dass du den Code im richtigen Arbeitsblatt eingefügt hast. Der Code muss im VBA-Modul des spezifischen Arbeitsblatts platziert werden, nicht in einem allgemeinen Modul.
  • Fehler: Es wird nichts in die Zelle geschrieben.

    • Lösung: Achte darauf, dass du die richtigen Zeilen und Spalten im Code angegeben hast. Überprüfe auch, ob die Auswahl der Zelle korrekt ist.

Alternative Methoden

Eine alternative Methode ist die Verwendung der Select Case Anweisung, wie sie von Martin im Forum vorgeschlagen wurde. Diese Methode ermöglicht es dir, den Code übersichtlicher zu gestalten:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim Spalte As Integer, Zeile As Integer
    For Spalte = 4 To 34
        For Zeile = 4 To 64
            Select Case Zeile
                Case 50 To 52, 55 To 57, 60 To 62
                    Exit For
            End Select
            If Target.Column = Spalte And Target.Row = Zeile Then
                If Target.Cells.MergeCells Then Exit For
                Cancel = True
                Target = "P"
            End If
        Next
    Next
End Sub

Diese Methode verbessert die Lesbarkeit und Wartbarkeit des Codes.


Praktische Beispiele

Hier sind einige Beispiele, wie du den Code anpassen kannst:

  1. Ausschließen von speziellen Zeilen: Du kannst den Bereich, der ausgeschlossen werden soll, in der Select Case Anweisung anpassen.

  2. Ändern des Zeichen: Wenn du das Zeichen "P" durch ein anderes Zeichen ersetzen möchtest, ändere einfach die Zeile Target = "P" entsprechend.


Tipps für Profis

  • Nutze die Intersect-Funktion, um den Code noch effizienter zu gestalten. Damit kannst du überprüfen, ob die angeklickte Zelle in einem bestimmten Bereich liegt, ohne die Schleifen zu verwenden.

  • Achte darauf, deine VBA-Projekte gut zu dokumentieren, damit du oder andere Benutzer die Logik leichter nachvollziehen können.


FAQ: Häufige Fragen

1. Frage
Wie kann ich den Code für eine größere Matrix anpassen?
Antwort: Du kannst die Werte in den For-Schleifen für Spalte und Zeile anpassen, um die Matrixgröße zu ändern.

2. Frage
Kann ich den Code auch in Excel Online verwenden?
Antwort: VBA funktioniert nicht in Excel Online. Du kannst jedoch ähnliche Funktionen mit Office Scripts erstellen, wenn du die Online-Version verwendest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige