Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1252to1256
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Wo ist mein Gedankenfehler?

Wo ist mein Gedankenfehler?
Matthias
Hallo Excelfreunde,
folgender Code funktioniert nicht , bitte um Hilfe:
Option Explicit
Private Sub ZelleJa()  'Wenn Zelle "JA" enthält , loesche die Zelle in...
Dim RaBereich As Range                 ' Variable Bereich
Dim RaZelle As Range                   ' Variable Zelle
Dim lngZ As Long                       ' Zeile der Zelle
Set RaBereich = Intersect(Range("P4:P33"), Target)
If Not RaBereich Is Nothing Then
Application.EnableEvents = False
For Each RaZelle In RaBereich
lngZ = RaZelle.Row
If UCase(RaZelle.Value) = "JA" Then    'DAS "JA wird über eine Wennfunktion in die Zelle  _
geschrieben
Worksheets("Programm").Cells(lngZ, 3).ClearContents
End If
Next RaZelle
Application.EnableEvents = True
End If
Set RaBereich = Nothing             ' Variable leeren
End Sub
Dank vorab
Gruß Matthias

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Wo ist mein Gedankenfehler?
03.03.2012 16:57:04
Hajo_Zi
Hallo Matthias,
was geht nicht? Ich baue keine Datei nach.

AW: Wo ist mein Gedankenfehler?
03.03.2012 16:59:12
Hajo_Zi
Hallo Matthias,
Du benutzt kein Ereignis der Tabelle und hast Damit kein Target. Du hast Target nicht Definiert und auch nicht zugewiesen. Ich würde aber keinen Variablennamen benutzen den Excel schon benuzt.
Gruß Hajo
Danke für den hinweis - owT
03.03.2012 17:16:31
Matthias
Target ?
03.03.2012 16:59:30
ransi
HAllo MAthias
"funktioniert nicht" ist immer ne richtig tolle Fehlerbeschreibung.
Ich rate mal:
Dein Code ist fehlerhaft ?
ransi
Anzeige
Mit WKS_change Ereigniss
03.03.2012 18:15:55
Matthias
Hallo ihr Beiden,
schmunzel @ Ransi. bin doch noch ungeübt was VBA anbelangt.
Der Code steht im "Blatt A" ...leider habe ich nur Erfolg, wenn ich "Ja" direkt rein schreibe.Über Formel mag er nicht laufen/arbeiten. diesmal mit Ereignis und Target....oder ist das wieder falsch?
Option Explicit
Private Sub worksheet_change(ByVal Target As Range)
Dim WoIstJa As Range                 ' Variable Bereich
Dim DaIst As Range                   ' Variable Zelle
Dim lngZ As Long                       ' Zeile der Zelle
Set WoIstJa = Intersect(Range("P4:P33"), Target)
If Not WoIstJa Is Nothing Then
Application.EnableEvents = False
For Each DaIst In WoIstJa
lngZ = DaIst.Row
If UCase(DaIst.Value) = "JA" Then    'DAS "JA" wird über "Wennfunktion" in die Zelle  _
geschrieben,bei "direkter" eingabe gehts
Worksheets("Programm").Cells(lngZ, 3).ClearContents
End If
Next DaIst
Application.EnableEvents = True
End If
Set WoIstJa = Nothing                 ' Variable leeren
End Sub
Gruß Matthias
Anzeige
AW: Mit WKS_change Ereigniss
03.03.2012 18:21:14
Hajo_Zi
Hallo Matthias,
ich baue kein Datei nach, die Zeit zur Erstellung hat schon jemand investiert.
Du hast nicht geschrieben was nicht läuft.
Gruß Hajo
@Hajo...warum denn mit Mappe?
03.03.2012 18:34:20
Matthias
Hallo Hajo,
Im aktiven Sheet wo auch der Code steht, im Rangebereich P4:P33 stehen Wennfunktion die ein "JA" oder "NEIN" erzeugen.
Ist in einer der Zellen ein "JA" soll im Sheet Programm in der entsprechenden ZeilenZelle (lngZ, 3) der Wert gelöscht werden.
Er löscht aber diesen Wert nicht. Ich vermute wegen der Wennfunktion wird das "change-Ereignis" nicht greifen.
Gebe ich nun in P4:P33 direkt ein Ja ein , dann wird die zelle gelöscht.
Gruß Matthias
Anzeige
AW: @Hajo...warum denn mit Mappe?
03.03.2012 18:38:52
Hajo_Zi
Hallo Matthias,
Du hasrt die Datei also gesehen und hast Die Information das dort eine Formel steht und die soll das löschen auslösen. Dann ist Change aber das falsche Ereignis.
Gruß Hajo
benutze doch einfach das Calculate-Ereignis kwT
03.03.2012 18:45:36
Matthias
kwT = kein weiterer Text
Hallo Namensvetter - Hatte ich schon, aber
03.03.2012 19:08:27
Matthias
mit dem selbigen Aufbau des codes, da war dann kein (byval Target as Range) möglich.
Dann muss ich den Hal neu Aufbauen, danke für deinen Tipp.
Gruß Matze
Worksheet_Calculate()
03.03.2012 18:51:06
ransi
HAllo MAtthias
Du hast das falsche Ereigniß.
Versuch mal so:
' **********************************************************************
' Modul: Tabelle3 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit



Private Sub Worksheet_Calculate()
    Dim rng As Range
    Dim Zelle As Range
    Set rng = Sheets("Tabelle3").Range("P3:P33") 'Tabellennamen anpassen
    MsgBox WorksheetFunction.CountIf(rng, "Ja")
    If WorksheetFunction.CountIf(rng, "Ja") Then
        Application.EnableEvents = False
        Sheets("Tabelle3").EnableCalculation = False
        For Each Zelle In rng
            If Zelle.Value = "Ja" Then
                Worksheets("Programm").Cells(Zelle.Row, 3).ClearContents
            End If
        Next
    End If
    Sheets("Tabelle3").EnableCalculation = True
    Application.EnableEvents = True
End Sub


ransi
Anzeige
AW: Worksheet_Calculate()
03.03.2012 19:27:59
Matthias
Hallo Ransi,
das klaptt, aber die MSgbox nervt, geht das auch "ohne"?
Je Zeile mache ich 12 Einträge, das mal Anzahl Zeilen ..bitte ohne diese Box?
Danke.
Matthias
LOL ;-)
03.03.2012 19:32:07
ransi
HAllo
das klaptt, aber die MSgbox nervt, geht das auch "ohne"?
LOL,
Jetzt willst du mich aber verar...en ?
Lösch doch einfach die Zeile mit der msgbox
ransi
... = "sch" ;o) owT
03.03.2012 19:42:40
Matthias
Mit WKS_change Ereigniss
03.03.2012 18:16:15
Matthias
Hallo ihr Beiden,
schmunzel @ Ransi. bin doch noch ungeübt was VBA anbelangt.
Der Code steht im "Blatt A" ...leider habe ich nur Erfolg, wenn ich "Ja" direkt rein schreibe.Über Formel mag er nicht laufen/arbeiten. diesmal mit Ereignis und Target....oder ist das wieder falsch?
Option Explicit
Private Sub worksheet_change(ByVal Target As Range)
Dim WoIstJa As Range                 ' Variable Bereich
Dim DaIst As Range                   ' Variable Zelle
Dim lngZ As Long                       ' Zeile der Zelle
Set WoIstJa = Intersect(Range("P4:P33"), Target)
If Not WoIstJa Is Nothing Then
Application.EnableEvents = False
For Each DaIst In WoIstJa
lngZ = DaIst.Row
If UCase(DaIst.Value) = "JA" Then    'DAS "JA" wird über "Wennfunktion" in die Zelle  _
geschrieben,bei "direkter" eingabe gehts
Worksheets("Programm").Cells(lngZ, 3).ClearContents
End If
Next DaIst
Application.EnableEvents = True
End If
Set WoIstJa = Nothing                 ' Variable leeren
End Sub
Gruß Matthias
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige