Anzeige
Archiv - Navigation
1920to1924
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

VBA If Formel "" dann nichts, sonst Erg.

VBA If Formel "" dann nichts, sonst Erg.
14.03.2023 11:18:01
Daniel
Hallo zusammen,
ich suche schon eine Weile im Internet, allerdings ohne gewünschten Erfolg..
Ich habe im Bereich B5:B1000 Formeln stehen, die nur aktiv werden, wenn in der jeweiligen linken Nachbarzelle etwas eingetragen wird (Also z.B. Wenn in Zelle A35 Wert, Dann Ergebniswert in Zelle B35). Da das Ergebnis der Formel je nach Nutzer immer ein anderes ist, bräuchte ich eine Funktion, die mir das Ergebnis als solches in die jeweilige Zelle speichert, wenn mir die Formel einen Wert bringt, wenn die Formel allerdings keinen Wert bringt, da die Nachbarzelle ja leer ist, soll nichts passieren und die Formel weiterhin in der Zelle bleiben.
Also:
Wenn Ergebnis der Formel Leer " "
Dann Nichts machen, Formel stehen lassen
Wenn Formel einen Inhalt bringt
Dann Inhalt der Formel als fixen Wert ersetzen
Ich hab sowas ähnliches bereits schon im Einsatz, allerdings wird hier aus EINEM FIXEN Ergebnis einer Formel EIN FIXER Wert.
Sub ersetzen()
Dim Z As Range
Application.ScreenUpdating = False
Application.EnableEvents = False
For Each Z In ThisWorkbook.Worksheets("Tabelle1").Range("E6:U3500")
If UCase(Z.Value) = "*" Then Z.Value = "X"
Next
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
Hoffe ihr könnt mir hier ein weiteres Mal weiterhelfen :)

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA If Formel "" dann nichts, sonst Erg.
14.03.2023 11:30:28
Daniel
Hi
vielleicht so:
Dim Bereich as Range
for each Bereich in Range("A5:A1000").SpecialCells(xlcelltypeconstants).Areas
    with Bereich.Offset(0, 1)
        .Formula = Bereich.value
    end with
next
next
die Schleife läuft hier über alle Zellen, die in Spalte A einen Wert haben (xlcelltypeconstants).
für diese wird dann in der nachbarzelle die die Formel durch den Wert ersetzt.
bei Zellen, die in Spalte A leer sind, passiert nichts.
damit das etwas schneller geht, läuft die Schleife nicht über die Einzelzellen, sondern über die lückenlosen Blöcke (Areas). Für so einen lückenlosen Block kann man das .Formula = .Value gemeinschaftlich ausführen
Gruß Daniel
Anzeige
AW: VBA If Formel "" dann nichts, sonst Erg.
14.03.2023 14:02:08
Daniel
Danke dir für deine Antwort!
Die Funktion funktioniert schon fast so, wie ich es haben wollte. Allerdings wird mir in der Spalte B nun der Wert aus A eingetragen..
Spalte A enthält bei mir immer ein Datum.
Spalte B wird mit dem jeweiligen Nachnamen des aktuellen Nutzers ausgefüllt. - Werte in Spalte B sollen aus Formel in Wert umgewandelt werden..
AW: VBA If Formel "" dann nichts, sonst Erg.
14.03.2023 12:20:30
Yal
Hallo Daniel,
ich verstehe nicht ganz: in der Zelle in Spalte B steht eine Formel. Solang A (gleiche Zeile) leer ist passiert nichts. Wird aber A befüllt, soll diese Formel berechnet werden und das Ergebnis fest sein, also nur noch das Ergebnis in der B-Zelle sein, und kein Formel mehr?
Wenn das so sein soll, dann ist es mit einer Formel nicht zu erreichen. Eine Formel ist eine Formel und bleibt eine Formel.
Was Du brauchst, ist die Änderung in der Zelle in Spalte A wahrzunehmen und eine VBA-Aktion anzustossen. Das nennt sich Ereignis-Prozedure (EP).
Komplizierter ist aber, dass diese EP nur bewirken soll, wenn vorher die Zelle leer war. Wäre eigentlich noch machbar. Aber ich gehe davon aus, dass Du vermeiden möchtest, dass der User die Zelle A vorher leert, um dann eine Aktualisierung der Zelle B zu erzwingen.
Daher folgende Mechanismus:
_ in Zelle B steht eine Formel
_ wenn eine Zelle A ausgewählt wird, wird geprüft, ob diese leer ist und diese Zustand zur Seite "gespeichert"
_ kommt eine Änderung in dieser Zelle, wird geprüft, ob diese davor leer war, wenn ja, prüfen ob in B eine Formel, wenn ja, Formel in B aktualisieren und Formel in B durch Wert ersetzen. (d.h. wenn in B eine Formel, dann ist A zum ersten Mal befüllt, wenn feste Werte, hat der User A zuerst geleert.)
Aber bevor ich damit anfange, hätte ich gern von Dir die Bestätigung, dass es so richtig ist.
VG
Yal
Anzeige
AW: VBA If Formel "" dann nichts, sonst Erg.
14.03.2023 13:49:21
Daniel
Auch dir schonmal danke für deine Antwort!
ich hoffe, dass ich dir zu deiner Zufriedenheit antworten kann und nicht an deiner Antwort vorbeirede..
_ in Zelle B steht eine Formel - Richtig.
_ wenn eine Zelle A ausgewählt wird, wird geprüft, ob diese leer ist und diese Zustand zur Seite "gespeichert" - Es wird hier nur geprüft, ob die Zelle nicht leer ist. In dieser Zelle (A) wird das Datum eingegeben. Wenn hier also ein Datum steht, wird meine Formel (in B) aktiviert und in der Nachname des jeweiligen Nutzers erscheint, welcher aus einem anderen Datenblatt gezogen wird.
_ kommt eine Änderung in dieser Zelle, wird geprüft, ob diese davor leer war, wenn ja, prüfen ob in B eine Formel, wenn ja, Formel in B aktualisieren und Formel in B durch Wert ersetzen. (d.h. wenn in B eine Formel, dann ist A zum ersten Mal befüllt, wenn feste Werte, hat der User A zuerst geleert.) - Ich glaube du meinst das Richtige. Nur als Abgleich nochmal:
Beispiel:
Zelle A10 ist aktuell leer
Nutzer gibt in Zelle A10 Datum / Inhalt / was auch immer ein -> Zelle ist nicht mehr leer -> Formel in B10 wird ausgeführt, da A10 nun nicht mehr leer
In B10 erscheint der Nachname des Nutzers, welcher nun als Wert in diese Zelle eingetragen werden soll, damit dieser bei einem anderen Nutzer nicht mehr geändert wird (Deswegen aus der Formel einen Wert machen)
Anzeige
AW: VBA If Formel "" dann nichts, sonst Erg.
14.03.2023 12:28:29
GerdL
Moin,
welche Formel steht im Bereich B5:B1000 ?
Gruß Gerd
AW: VBA If Formel "" dann nichts, sonst Erg.
14.03.2023 13:35:31
Daniel
Danke euch beiden schonmal für die Antworten / Reaktionen auf meiner Frage.
Ich würde bei Gerd anfangen, da diese glaube ich schneller zu beantworten ist.. aber bitte steinigt mich nicht, wenn die Formel euch die Formel erschlägt und einfacher zu gestalten wäre..
In A6:Axxxx wird ein Datum eingegeben
Wenn in Ax ein Datum steht, erscheint in Bx automatisch der Nachname des aktuellen Nutzers, das ganze funktioniert wie nachfolgend beschrieben:
Meine Formel frägt ab, ob - in diesem Fall - A6 - nicht leer ist. wenn dies der Fall ist, wird abgeglichen, ob der Nutzer in $B$3, mit $G$4 (Datenblatt "Dropdown_Sonstiges) übereinstimmt (1. Fall aus 17 weiteren Nutzern, die variabel eingegeben werden können) - wenn alles passt, erscheint in B6 der Nachname - bezogen aus "Daten $Y$3" des Nutzers. Das ganze wird hald dann über die ganze Spalte runtergezogen, damit, wie schon erwähnt z.B. A35 mit B35, A70 mit B70 usw... übereinstimmen.
=WENN(UND(Schichtübergabe!A6>"";B$1=Dropdown_Sonstiges!$Y$3);Daten!$G$4; WENN(UND(Schichtübergabe!A6>"";B$1=Dropdown_Sonstiges!$Y$5);Daten!$G$6; WENN(UND(Schichtübergabe!A6>"";B$1=Dropdown_Sonstiges!$Y$6);Daten!$G$7; WENN(UND(Schichtübergabe!A6>"";B$1=Dropdown_Sonstiges!$Y$7);Daten!$G$8; WENN(UND(Schichtübergabe!A6>"";B$1=Dropdown_Sonstiges!$Y$8);Daten!$G$9; WENN(UND(Schichtübergabe!A6>"";B$1=Dropdown_Sonstiges!$Y$9);Daten!$G$10; WENN(UND(Schichtübergabe!A6>"";B$1=Dropdown_Sonstiges!$Y$10);Daten!$G$11; WENN(UND(Schichtübergabe!A6>"";B$1=Dropdown_Sonstiges!$Y$11);Daten!$G$12; WENN(UND(Schichtübergabe!A6>"";B$1=Dropdown_Sonstiges!$Y$12);Daten!$G$13; WENN(UND(Schichtübergabe!A6>"";B$1=Dropdown_Sonstiges!$Y$14);Daten!$G$15; WENN(UND(Schichtübergabe!A6>"";B$1=Dropdown_Sonstiges!$Y$15);Daten!$G$16; WENN(UND(Schichtübergabe!A6>"";B$1=Dropdown_Sonstiges!$Y$16);Daten!$G$17; WENN(UND(Schichtübergabe!A6>"";B$1=Dropdown_Sonstiges!$Y$17);Daten!$G$18; WENN(UND(Schichtübergabe!A6>"";B$1=Dropdown_Sonstiges!$Y$18);Daten!$G$19; WENN(UND(Schichtübergabe!A6>"";B$1=Dropdown_Sonstiges!$Y$19);Daten!$G$20; WENN(UND(Schichtübergabe!A6>"";B$1=Dropdown_Sonstiges!$Y$20);Daten!$G$21; WENN(UND(Schichtübergabe!A6>"";B$1=Dropdown_Sonstiges!$Y$21);Daten!$G$22;"")))))))))))))))))
Kann natürlich auch sein, dass man das ganze einfacher gestalten hätte können.. aber die Abfrage und Funktion der Formel funktioniert soweit..
Fehlt mir hald nur noch, dass er die "leeren" Ergebnisse als Formeln lässt und die Werte aus den Formeln zu festen, unveränderbaren Werten macht..
Anzeige
AW: VBA If Formel "" dann nichts, sonst Erg.
14.03.2023 14:06:27
Yal
Hallo Daniel,
wir lachen zwar niemanden aus, aber wer sich als "Excel gut" einstufen möchte, sollte die Formel SVerweis kennen.
VG
Yal
AW: VBA If Formel "" dann nichts, sonst Erg.
14.03.2023 14:16:46
Yal
Hallo Daniel,
gehe auf dem Register (da wo der Name der Blatt angezeigt ist), rechtsklicke und wähle "Code anzeigen",
in diesem Blatt-Codepane, füge folgendes
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Name As Range
    Set Target = Target.Cells(1)
    If Target.Column = 1 Then
        Set Name = Worksheets("Dropdown_Sonstiges").Range("Y:Y").Find(Range("B1").Value)
        If Not Name Is Nothing Then
            Target.Offset(0, 1) = Worksheets("Daten").Cells(Name.Row + 1, "G").Value
        End If
    End If
End Sub
Wenn sich etwas in Spalte A ändert (es wird noch nicht geprüft, ob es ein Datum ist), wird der Name in B1 in der Spalte Y des Blattes "Dropdown_Sonstiges", daraus die Zeilennummer um in der Spalte G des Blattes "Daten" den passenden Eintrag zu finden und in der Zelle neben die Zelle, die geändert wurde, einzufügen.
VG
Yal
Anzeige
AW: VBA If Formel "" dann nichts, sonst Erg.
14.03.2023 15:27:35
GerdL
Hallo Daniel,
probier mal. Vielleicht ist deine Aktion so entbehrlich.
 =WENN(A6>"";WENNFEHLER(INDEX(Daten!$G$4:$G$22;VERGLEICH(B$1;Dropdown_Sonstiges!$Y$3:$Y$21;0);1);"");"")
Gruß Gerd

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige