Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
476to480
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
476to480
476to480
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Wer weiß Rat ? VBA

Wer weiß Rat ? VBA
01.09.2004 19:02:43
Paul
Hallo Forum,
ich hätte nochmal ein Anliegen,
in untenstehendem VBA-Skript habe ich das Problem, dass der wert in Zelle F18, bei Überschreitung des Schwellenwertes von 100 in Zelle F16, bestehen bleibt.
Ich hätte es eigentlich gerne, dass in F18 erst ein Wert eingesetzt wird, wenn in F16 ein Wert steht (Summe in F16 wird erst gebildet wenn in den darüberliegenden Zellen Werte eingetragen sind (Summenbildung über "Wenn-Istzahl-dann....")) Übersteigt die Summe in F16 den Wert 100, dann soll der Wert 1,75 in F18 gelöscht werden, um vom Anwender den enstsprechenden Wert eintragen zu lassen.
Geht sowas ?

Private Sub Worksheet_Calculate()
If [f16] < 100 Then
[f18] = 1.75
End If
End Sub

Desweiteren habe ich noch bei nachfolgendem Skript ein Problem:
Bei Eintrag des Schlüsselwortes "luft" in bspw. A1 das VBA-Skript ausgeführt. Allerdings muss das Schlüsselwort genau so in die Zelle eingetragen werden. Läßt sich auch realsieren, dass das Schlüsselwort "luft" ein Fragment des Eintrages in der Zelle sein kann (also bspw. "Luftkissen" o.ä.) und das Skript, unabhängig von Groß- oder Kleinschreibung, auch ausgeführt wird ?
Wenn der Anwender das Formular zurücksetzen möchte und dabei alle Einträge wieder löscht, dann meldet sich der Debugger. Offensichtlich macht es Probleme wenn ein Zelleintrag über die "Entf-Taste" gelöscht wird. Lässt sich sowas auch abstellen ?

Private Sub Worksheet_Change(ByVal Target As Range)
Dim intRow As Integer
intRow = Target.Row
If Target.Column = 1 Then _
If Target = "luft" Then	<== Diese Zeile markiert der Debugger
Ihr habt mir bisher schon erfolgreich helfen können. Würde mioch freuen, wenn es
für die letzten Probleme auch eine Lösung gäbe.
Gruß Paul

		

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
zu Frage 2
01.09.2004 19:44:44
Nepumuk
Hallo Paul,
1. intRow = Target.Row erzeugt einen Fehler wenn der User in Zeile 32.768 einen Wert ändert.
2. Wenn der User mehr als eine Zelle auf einmal ändert erzeugt die abfrage von Target.Value einen Fehler, da keine einzelne Cellsobjekt sondern ein Rangeobjekt abgefragt wird.
3. Wenn du also abgefragt hast, ob Traget.Count = 1 ist, dann kannst du den Vergleich wie folgt machen: If LCase(Target.Value) Like "*luft*" Then
Gruß
Nepumuk
Frage 2 besteht weiterhin
02.09.2004 21:04:48
Paul
Hallo Nepomuk und all die anderen,
das erste Problem konnte ich lösen, aber beim zweiten Teil meiner Frage bin ich nicht weiter gekommen.
Was muss ich an meinem Skript ändern, damit das Rücksetzen des Formulars ohne Fehlermeldung von statten geht?
Wie schaff ich es , dass das Schlüsselwort "Luft" auch als Fragment in einem Zelleintrag gefunden wird ? (und die entsprechende Aktion ausgeführt wird)
Gruß Paul
Anzeige
AW: Frage 2 besteht weiterhin
02.09.2004 21:17:36
Nepumuk
Hallo Paul,
wie schon gestern geschrieben, so:


Private Sub Worksheet_Change(ByVal Target As Range)
    Dim lngRow As Long
    lngRow = Target.Row
    If Target.Column = 1 And Target.Count = 1 Then
        If LCase(Target.Value) Like "*luft*" Then
'            dein Code
        End If
    End If
End Sub


Gruß
Nepumuk
Anzeige
zu frage 1
harry
hi paul,
meinst du das so in der art?
If [f16] = 0 Then
[f18].Clear
ElseIf [f16] [f18] = 1.75
ElseIf [f16] > 100 Then
[f18].Clear
End If
liebe grüße,
harry

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige