Office: (Office 2007) If Schleife mit Variablen Zellen

Helfe beim Thema If Schleife mit Variablen Zellen in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Guten Tag, ich bins mal wieder. Da die Hilfe hier ja super klappt habe ich mal wieder eine Frage, um mir unnötig viel Schreibarbeit zu ersparen.... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von kabumdada, 27. März 2015.

  1. kabumdada Erfahrener User

    If Schleife mit Variablen Zellen


    Guten Tag,
    ich bins mal wieder. Da die Hilfe hier ja super klappt habe ich mal wieder eine Frage, um mir unnötig viel Schreibarbeit zu ersparen.

    Diese If-Schleifen habe ich bisher genutzt :

    If Target.Count = 1 Then
    If Target.Address = "$D$42" Then ' Wenn sich dieses Feld ändert...
    Range("I42") = "" ' dann lösche dieses Feld
    End If
    End If
    If Target.Count = 1 Then
    If Target.Address = "$D$43" Then ' Wenn sich dieses Feld ändert...
    Range("I43") = "" ' dann lösche dieses Feld
    End If
    End If
    If Target.Count = 1 Then
    If Target.Address = "$D$44" Then ' Wenn sich dieses Feld ändert...
    Range("I44") = "" ' dann lösche dieses Feld
    End If
    End If

    Wie man sieht handelt es sich nur um die Spalten I und D und die betroffenen Zellen liegen immer in der selben Reihe.

    Gibt es eine Möglichkeit dies nur mit einer If-Schleife zu lösen?

    mein bisheriger ansatz sieht so aus:
    Dim y, x, t, k As Integer
    s = "CPV Inseln"
    t = ""
    y = ActiveCell.Row
    x = ActiveCell.Column
    k = 9
    Set wb = ThisWorkbook
    Set ws = wb.Worksheets(s)
    If Target.Count = 1 Then
    If Target.Address = ActiveCell Then
    Range("k,y") = ""
    End If
    End If

    Danke schonmal :)
     
    kabumdada, 27. März 2015
    #1
  2. fette Elfe Erfahrener User
    Hallo kabumdada,

    wenn ich Dich richtig verstanden habe, könnte man es so lösen:
    Code:
    Option Explicit
    
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    
        With Me
            If Target.Count = 1 Then                ' nur eine ausgewählte Zelle, kein Bereich
                If Target.Column = 4 Then           ' nur in Spalte 4 = D
                    If Target.Row >= 42 And Target.Row <= 44 Then   ' Zeilenbereich begrenzen falls nötig oder gewünscht
                        .Cells(Target.Row, 9) = ""  ' Zelle in Spalte 9 = I und Zeile = Target leeren
                    End If
                End If
            End If
        End With
    
    End Sub
    Ich hoffe geholfen zu haben.
     
    fette Elfe, 27. März 2015
    #2
  3. kabumdada Erfahrener User
    Danke :) Funktioniert soweit schonmal ganz gut :)

    Das einzige Problem ist, das sich das Feld in der Spalte I schon leert, sobald man das Feld in Spalte D nur anklickt.
    Ich bräucht es aber so, dass es sich erst leert wenn der Inhalt verändert wird.
    (In Spalte D sind nur Dropdown felder)

    Danke :)
     
    kabumdada, 27. März 2015
    #3
  4. fette Elfe Erfahrener User

    If Schleife mit Variablen Zellen

    Hallo kabumdada,

    dann würde ich sowas vorschlagen:
    Code:
    Option Explicit
    
    Dim varAlterZellWert As Variant     ' Zellwert der aktiven Zelle vor der Änderung
    
    
    Private Sub Worksheet_Activate()
    
        ' Zellwert der aktiven Zelle vor der Änderung
        varAlterZellWert = ActiveCell
    
    End Sub
    
    Private Sub Worksheet_Change(ByVal Target As Range)
    
        With Me
    
            Application.EnableEvents = False
    
            If Target.Count = 1 Then                ' nur eine ausgewählte Zelle, kein Bereich
                If Target.Column = 4 Then           ' nur in Spalte 4 = D
                    If (Target.Row >= 42 And Target.Row <= 44) Then ' Zeilenbereich begrenzen falls nötig oder gewünscht
                        If Not Target = varAlterZellWert Then       ' wenn Zellwert nicht gleich varAlterZellWert ist
                            .Cells(Target.Row, 9) = ""  ' Zelle in Spalte 9 = I und Zeile = Target leeren
                        End If
                    End If
                End If
            End If
    
            Application.EnableEvents = True
    
        End With
    
    End Sub
    
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    
        ' Zellwert der aktiven Zelle vor der Änderung
        ' wenn nur eine Zelle ausgewählt ist
        If Target.Count = 1 Then
            varAlterZellWert = Target
        End If
    
    End Sub
    Der alte Zellwert wird in einer Variablen gespeichert, und mit dem neuen Zellwert verglichen.
    Wurde der Zellwert verändert, wird in Spalte I gelöscht, sonst nicht.
    Das passiert natürlich erst, nachdem die Zelle verlassen wurde (Enter, Tab, Mausklick in eine andere Zelle....)

    Ich hoffe geholfen zu haben.
     
    fette Elfe, 27. März 2015
    #4
  5. miriki Erfahrener User
    Moinsens!

    Streiche aus
    Code:
    Private Sub Worksheet_[B][COLOR=#ff0000]Selection[/COLOR][/B]Change(ByVal Target As Range)
    einfach den rot markierten Teil weg. Dann reagiert er nicht mehr auf Cursorpositions- sondern nur noch auf Zellinhalts-Änderungen.

    Gruß, Michael
     
    miriki, 27. März 2015
    #5
  6. fette Elfe Erfahrener User
    Mirikis Vorschlag ist wie üblich einfacher als meiner... :)))
    (Hallo Michael, lange nicht gelesen)

    Die Events würde ich temporär aber trotzdem abschalten, weil sonst unnötige Durchläufe entstehen.
    Das sähe dann also so aus:
    Code:
    Option Explicit
    
    Private Sub Worksheet_Change(ByVal Target As Range)
    
        With Me
    
            Application.EnableEvents = False
    
            If Target.Count = 1 Then                ' nur eine ausgewählte Zelle, kein Bereich
                If Target.Column = 4 Then           ' nur in Spalte 4 = D
                    If (Target.Row >= 42 And Target.Row <= 44) Then ' Zeilenbereich begrenzen falls nötig oder gewünscht
                        .Cells(Target.Row, 9) = ""  ' Zelle in Spalte 9 = I und Zeile = Target leeren
                    End If
                End If
            End If
    
            Application.EnableEvents = True
    
        End With
    
    End Sub
     
    fette Elfe, 27. März 2015
    #6
  7. kabumdada Erfahrener User
    Vielen vielen vielen Dank :)

    hat eins a geklappt. genau so wie ichs wollte :)

    werd mich bei gelegenheit wenn ich wieder Probleme haben sollte hier melden.

    Danke schön :)
     
    kabumdada, 27. März 2015
    #7
Thema:

If Schleife mit Variablen Zellen

Die Seite wird geladen...
  1. If Schleife mit Variablen Zellen - Similar Threads - Schleife Variablen Zellen

  2. Verkettung von Zellen - Schleife

    in Microsoft Excel Hilfe
    Verkettung von Zellen - Schleife: Hallo, folgendes Problem: Ich möchte in einer Tabelle die Texte in Spalte A mit den Texten in Spalte B verketten. Dazu benutze ich folgenden Code: Sub VerkettungAB() Range("E2").Value =...
  3. VBA Schleife kopieren und einfügen von Spalten

    in Microsoft Excel Hilfe
    VBA Schleife kopieren und einfügen von Spalten: Hallo Zusammen, Ich habe auf einem Tabellenblatt eine variable Anzahl an Spalten mit Daten die auch eine variable Anzahl an Zeilen haben, auch mit Lücken in den Zeilen. Die Spalten mit den Infos...
  4. VBA: Variable Anzahl Zeilen mit Suchkriterien finden und kopieren

    in Microsoft Excel Hilfe
    VBA: Variable Anzahl Zeilen mit Suchkriterien finden und kopieren: Hallo zusammen, ich konnte bislang nur bruchstückhafte Ansätze zu meinem Problem finden, jedoch keinen um mehrere Kriterien zu erfassen und anschließend zu ordnen, daher brauche ich (mal wieder)...
  5. Eine Do-Schleife mit mehreren Variablen durchlaufen lassen

    in Microsoft Excel Hilfe
    Eine Do-Schleife mit mehreren Variablen durchlaufen lassen: Hallo zusammen, ich habe eine Liste mit Versuchsdaten, wo in jeder Zeile je ein Messpunkt mit Datum, Temperatur, Luftfeuchte, ... steht. Nun möchte ich diese Liste durchsuchen nach einem...
  6. die to Variable innerhalb einer FOR Schleife ändern

    in Microsoft Excel Hilfe
    die to Variable innerhalb einer FOR Schleife ändern: Hallo zusammen, ich würde gern die to Variable (in meinem Fall lastRow) innerhalb der FOR Schleife ändern. Funktioniert irgendwie nicht.... Code: lastRow = Output.UsedRange.Rows.Count For i = 2...
  7. range mit variable in for schleife (anfängerproblem)

    in Microsoft Excel Hilfe
    range mit variable in for schleife (anfängerproblem): Sorry, dass ich mit so einer einfachen Frage komme, doch ich weiß nicht warum dass nicht geht. Code: 'Kopiere Tabellenboden Sheets("Druckformular Temp").Select Range("A16:J17").Select...
  8. Variable in Schleife hochzaehlen

    in Microsoft Excel Hilfe
    Variable in Schleife hochzaehlen: Guten Abend ans Forum, Fuer folgende Idee/Problem suche ich eine Loesung und eventuell weiss hier im Forum jemand Rat: In einer Schleife moechte ich in einem Arbeitsblatt in Excel 2002 Werte aus...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden