Problem mit Range Methode
#1
Hallo zusammen,

ich möchte, dass wenn ich auf dem Tabellenblatt in Spalte F einen Wert eingebe, in Spalte E ein bestimmtes Ergebnis auftaucht.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
With Sheets("Jan")
    For i = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
        If .Range("F" & i) = "U" Then .Range("E" & i) = 8
    Next i
End With
End Sub



Leider bekomme ich zwar das Ergebnis wie gewünscht angezeigt, allerdings kommt dann gleich darauf eine Fehlermeldung

"Die Methode Range für das Objekt"_Worksheet" ist fehlgeschlagen"

Kann jemand weiterhelfen?

Gruß Frank
Antworten Top
#2
Hallo

dein Code bezieht sich auf ein ganz bestimmtes Sheet, denn er muss in dieser Tabelle stehen! Da kannst du komplett auf With verzichten!
Sonst müsstest du ihn in "DieseArbeitsmappe" verlegen, dann wäre er für alle Tabellen gültig. Aber dann bitte auch ohne With "Jan"
Ich bin gespannt ob der Fehler dann beseitigt ist?

Mfg Gast 123

Nachtrag.  und wie lautet der Blattname wirklich??   Es könnte auch sein das Excel statt Sheet  "Worksheet"  erwartet.  Einfach mal selbst testen. So lernt man VBA kennen.
Antworten Top
#3
Hallo Frank,

vielleicht besser mit

Dim i As Long

Gruß Uwe
Antworten Top
#4
habe ich gemacht, der Code steht jetzt in der Arbeitsmappe "Jan"

aber leider bekommie ich eine Fehlermeldung:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer

    For i = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
        If Range("F" & i) = "U" Then Range("E" & i) = 8
    Next i

End Sub


Ich habe zur Vereinfachung mal die Beispieldatei mit angehängt, vielleicht hilft das etwas.

Gruss Frank


Angehängte Dateien
.xlsm   Beispiel Test.xlsm (Größe: 22,92 KB / Downloads: 6)
Antworten Top
#5
Hallo Frank,

wie wäre es mit dem

on Error Resume next vor dem Sub in deinem code

die Fehlermeldung einfach unterdrücken.

Auf Anhieb habe ich diese Idee.

Vielleicht hilft.

Gruß

nazim
Antworten Top
#6
Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

    If Sh.Name = "Tabelle3" Then Exit Sub
    If Target.Count > 1 Then Exit Sub
    If Target.Column <> 6 Then Exit Sub
    Application.EnableEvents = False
    If Target.Value = "U" Then Target.Offset(, -1) = 8
    Application.EnableEvents = True
End Sub

oder dies. Der code muß ins Codemodul von DieseArbeitsmappe.  Du willst doch nicht jede Zeile prüfen wenn du nur einen Wert änderst, oder? 
der code bricht ab wenn die Änderung in Tabelle3 ist. 
du mehr als eine Zelle geändert hast
und du nicht in Spalte 6  = F Änderungen durchgeführt hast.  

Vorschlag: 
Wäre es nicht besser du füllst die Start, Ende und Pausenzeite mit Default-Werten, um dann eine Berechnung für 8 Stunden zu erhalten. In den übrigen Zellen der Spalte E sind doch Formeln oder?
Antworten Top
#7
Hallo,

wenn With weg ist, dann müssen auch die Punkte vor Cells und Range weg.

Der Vorschlag mit On Error Resume Next ist der größste Unfug! Fehler im Code muss man beseitigen und nicht unterdrücken, dass führt zu ungeahnten Ergebnissen und Folgen!
[Bild: attachment-190.gif]
Gruß Günter
aus der Helden-, Messe-, Musik-, Buch-, Universitäts- und Autostadt Leipzig
Antworten Top
#8
Hallo Ralf,

das klappt super - allerdings ist das Problem, das in der kompletten Arbeitsmappe natürlich auch die restichen 11 Monate eingebunden sind.

wie kann ich es erreichen das es z,.B. auch für "Feb" funktioniert?

oder gibt es die Möglichkeit den Code auch in jede einzelne Arbeitsmappe zu schreiben?

Gruß Frank
Antworten Top
#9
Hallo Frank,

gleichartige Daten gehören auf ein Tabellenblatt, dann hast du solche Probleme nicht.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
[-] Folgende(r) 2 Nutzer sagen Danke an Klaus-Dieter für diesen Beitrag:
  • shift-del, RPP63
Antworten Top
#10
Hallo Klaus-Dieter, 

schlaue Sprüche sind hier nicht gefragt sondern Lösungen.

Wenn du nichts sinnvolles zu dem Problem beitragen kannst dann halte dich raus und stiehl nicht unsere Zeit.

Alles klar?!
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste