|
Betrifft: Übereinstimmung in variablem Range feststellen
von: JürgenH
Geschrieben am: 31.07.2010 15:46:11
Liebe Excelgemeinde,
ich habe folgendes kleines Problem:
wie kann ich in einer Ereignisprozedur (before rightclick) mit VBA feststellen, ob in einem ausgewählten und markierten Range von Zellen in einer bestimmten Spalte (Spalten-Offset +6 von erster ausgewählter Zelle) gleiche/identische Einträge vorhanden sind? Wenn ja, will ich weiterarbeiten, wenn nein, soll die Msgbox "Auswahlmenge nicht homogen" ausgegeben und die Verarbeitung beendet werden.
wer kann helfen? Vielen Dank.
Beste Grüße
Jürgen
Betrifft: AW: Übereinstimmung in variablem Range feststellen
von: Tino
Geschrieben am: 31.07.2010 16:13:42
Hallo,
meinst Du so?
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Dim rngBereich As Range
Dim booHomogen As Boolean
Set rngBereich = Intersect(Selection, ActiveSheet.UsedRange)
If Not rngBereich Is Nothing Then
Cancel = True 'rechtsklick abbrechen
With Application.WorksheetFunction
For Each rngBereich In Selection
If rngBereich <> "" Then
If .CountIf(Selection.Offset(0, 6), rngBereich) > 0 Then
MsgBox "Auswahlmenge homogen", vbInformation
booHomogen = True
'hier weiter arbeiten
'...
'...
Exit For 'Schleife verlassen
End If
End If
Next rngBereich
End With
If Not booHomogen Then
MsgBox "Auswahlmenge nicht homogen", vbExclamation
End If
End If
End Sub
Wenn der markierte Bereich aber zu groß wird, kann es lang dauern,
dann würde ich dies über ein Array machen, dies wird schneller durchlaufen.
Gruß Tino
 |
Betrifft: AW: Übereinstimmung in variablem Range feststellen
von: JürgenH
Geschrieben am: 31.07.2010 16:34:30
Hallo Tino, erst einmal Danke für die schnelle Antwort.
die ausgewählten Bereiche sind immer klein und handlich.
Ich bekomme mit Deiner Lösung immer "homogen" und muss mich ein wenig deutlicher fassen.
Der Benutzer markiert z.B. A1-G22. In Spalte F steht ein Credit-Debit-Indikator. Enthalten alle Zellen im markierten Bereich entweder ausschließlich ein "C" oder ausschließlich ein "D" in der Spalte F, ist die Auswahl homogen. Markiert der Benutzer einen Bereich, in dem sowohl C als auch D-Zeilen stehen, ist die Auswahl nicht homogen und es muss ein Fehler kommen.
Kann leider keine Beispieldatei hochladen, da ich diese im Büro habe.
Gruß
Jürgen
Betrifft: AW: Übereinstimmung in variablem Range feststellen
von: Josef Ehrensberger
Geschrieben am: 31.07.2010 16:49:47
Hallo Jürgen,
so?
' ********************************************************************** ' Modul: Tabelle3 Typ: Element der Mappe(Sheet, Workbook, ...) ' **********************************************************************
Option Explicit
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) Dim rng As Range, rngC As Range Cancel = True Set rng = Selection If rng.Columns.Count >= 6 Then Set rngC = rng.Columns(6) If Application.CountIf(rngC, rngC.Cells(1, 1)) < rngC.Cells.Count Then MsgBox "Inhomogen" Else MsgBox "Homogen" 'weiter... End If Else MsgBox "Bereich nicht auswertbar" End If End Sub
Gruß Sepp
Betrifft: AW: Übereinstimmung in variablem Range feststellen
von: JürgenH
Geschrieben am: 31.07.2010 17:25:14
Hallo Sepp,
das wars, was ich brauche. Einfache Lösungen sind doch immer die besten.
Vielen Dank an alle.
Schönes Wochenende
Jürgen
Betrifft: AW: Übereinstimmung in variablem Range feststellen
von: Matthias L
Geschrieben am: 31.07.2010 16:30:57
Hallo
Keine Ahnung, ob ich Dich richtig verstanden habe.
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Selection(1).Value <> Selection(1).Offset(, 6).Value Then
MsgBox "Auswahlmenge nicht homogen"
Exit Sub
Else
MsgBox "hier mach ich weiter"
End If
End Sub
Ich versteh nur nicht diesen Satz
ob in einem ausgewählten und markierten Range von Zellen in einer bestimmten Spalte (Spalten-Offset +6 von erster ausgewählter Zelle ?
warum markierst Du denn ein Range von Zellen, wenn Du nur von der ersten ausgewählten Zelle 6 Spalten nach rechts prüfen willst?
Gruß Matthias
|