Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema InputBox
BildScreenshot zu InputBox InputBox-Seite mit Beispielarbeitsmappe aufrufen

Bei Doppelklick in Zelle/Spalte Autofiltern | Herbers Excel-Forum


Betrifft: Bei Doppelklick in Zelle/Spalte Autofiltern von: Doppelklicker
Geschrieben am: 03.12.2009 01:32:41

Hallo liebe Excelgemeinde,

ich hätte ein kleines Attentat auf euch vor.

ich wünsche mir von euch den VB-Quellcode für die Lösung des nachfolgenden Wunsches:

ich möchte das per Doppelklick auf einer Zelle in Spalte B des Excelblattes "Auftrag" (gibt mehrere Blätter in der Datei, jedoch soll dies nur in diesen Blatt ausgeführt werden)
eine Userabfrage nach einer Zahl erfolgt
>>>> "Usereingabe = InputBox("Maximale Wert?", "Suche nach", 1, vbOKCancel)"

und dann ein Autofilter über den Bereich A2:J2 erfolgen.
>>> "Range("A2:J2").Select"

dieser Autofilter soll dann für Spalte J nur die Datensätze mit X filtern.
>>> "Selection.AutoFilter Field:=10, Criteria1:="x""

und für Spalte B soll alles angezeigt werden, was kleiner oder gleich der Usereingabe ist.
>>> "AutoFilter Field:=4, Criteria1:="<=" & Usereingabe, Operator:=xlAnd"

Doppelklickt man in eine Zelle der Spalte C, soll selbiges Makro ausgeführt werden, nur dass dann
der Autofilter verschwindet und neu aufgebaut wird mit selbiger Funktion wie für Spalte B nur dann halt für Spalte C (incl. den vorfilter für Spalte J) erfolgt.

Angefangen und bischen aufgezeichnet hab ich folgendes (aber ist halt fehlerhaft und noch sicherlich nicht optimiert)
Stolperstein war auch immer mal der Autofilter (mal gesetzt, mal nicht gesetzt, mal nicht vorhanden)
So wer kann mir nun helfen und das Ding mal korrigieren/optimieren?

Versuch:



Private Sub Workbook_Open()
  DoppelklickerAktiv
End Sub


Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)

Sub DoppelklickerAktiv()
Sheets("Auftrag").OnDoubleClick = "Doppelklicker"
End Sub

Sub Doppelklicker()
Set MyShell = CreateObject("WScript.Shell")
Usereingabe = InputBox("Maximaler Wert?", "Suche nach", 1, vbOKCancel)
If ActiveSheet.Name = "Aufträge" Then
Select Case Target.Column
Case 2
Range("A2:J2").Select
Selection.AutoFilter
Selection.AutoFilter Field:=9, Criteria1:="x"
Selection.AutoFilter Field:=4, Criteria1:="<=" & Usereingabe, Operator:=xlAnd
Exit Sub
Case Else
Exit Sub
End Select
End If
End Sub

  

Betrifft: AW: Bei Doppelklick in Zelle/Spalte Autofiltern von: fcs
Geschrieben am: 03.12.2009 13:41:06

Hallo Doppelklicker,

das folgende Makro im VBA-Editor unter der Tabelle "Auftrag" einfügen.

Gruß
Franz

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
  Dim wks As Worksheet, Usereingabe
  Set wks = Me
  Select Case Target.Column
    Case 2, 3 'Autofilter ausführen bei Doppelklick in Spalten B oder C
      With wks
        'prüfen ob Autofilter gesetzt und ggf. alle Daten anzeigen
        If .FilterMode = True Then
          .ShowAllData
        End If
        Usereingabe = InputBox("Maximaler Wert?", "Suche nach", 1, vbOKCancel)
        If Usereingabe <> "" Then
          Cancel = True 'Zelle nicht zum Bearbeiten selektieren
          'Filterbereich A2:Jxxx
          With .Range(.Cells(2, 1), .Cells(.Cells.SpecialCells(xlCellTypeLastCell).Row, 10))
            .AutoFilter 'schaltet ggf. einen vorhandenen Autofilter aus
            'Autofilter neu aufbauen
            .AutoFilter Field:=10, Criteria1:="x" 'Spalte J filtern
            .AutoFilter Field:=Target.Column, Criteria1:="<=" & Usereingabe 'Target-Spalte  _
filtern
          End With
        End If
      End With
    Case Else
      'do nothing
  End Select
End Sub



Beiträge aus den Excel-Beispielen zum Thema "Bei Doppelklick in Zelle/Spalte Autofiltern"