Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Formel austomatisch durch Wert ersetzen

Formel austomatisch durch Wert ersetzen
30.01.2019 18:17:23
nightcab
Hallo Leute!
Es geht um dieses Script:

Private Sub Worksheet_Calculate()
Dim objCell As Range
For Each objCell In Range("B1:B10")
If objCell.HasFormula Then _
If IsNumeric(objCell.Text) Then _
If Fix(objCell.Value) = objCell.Value Then _
objCell.Value = objCell.Value
Next
End Sub

Es löscht die Formel und ersetzt diese durch den errechneten Wert. Soweit sogut!
Nun habe ich diese Formel

B1 =WENN(A1="Karl";123;"")

Wenn ich nun "Karl" mit der Hand eintippe, dann löscht das Script die Formel und schreibt 123 in B1.
Soweit funtioniert alles.
Nun verwende ich dieses Script:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim Zellbereich As Range
Dim Primut As String
Set Zellbereich = Range("A1:A10")
Select Case Target
Case "ka"
Primut = "Karl"
Case "wa"
Primut = "Walter"
Case "Su"
Primut = "Susanne"
Case Else
Exit Sub
End Select
Application.EnableEvents = False
Target = Primut
Application.EnableEvents = True
Exit Sub
End Sub
Damit muss man in A1 nicht "Karl" eintippen sondern kann das Kürzel "ka" verwenden.
Leider funktioniert dann aber das "Formel-löschen-Zahl-einsetzen-Script" nicht mehr und die formel wird NICHT gelöscht.
Es geht also darum, das ein Script nicht mit dem Ergebnis eines anderen Scripts weiterrechen kann.

Warum brauche ich das?
Weil ich mit der Zahl, beispiel Karl->123, weiterrechnen möchte.
Wenn mir wer helfen kann, dann bitte ich darum.
Gruß nightcab
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formel austomatisch durch Wert ersetzen
30.01.2019 19:27:04
ChrisL
Hi
Eine Gültigkeitsprüfung und SVERWEIS wäre zu einfach. ;)
Da die Änderung in Spalte A den Prozess startet, kannst du das andere Makro auch gleich ins Change-Ereignis integrieren.
Mit EnableEvents schaltest du nicht nur das Change-Ereignis aus (notwendig, damit du keine Endlosschleife produzierst) sondern auch das gewünschte Calculate-Ereignis.
Mit Application.Calculate startest du nur die Neuberechnung.
cu
Chris
Anzeige
AW: Formel austomatisch durch Wert ersetzen
30.01.2019 19:28:07
Nepumuk
Hallo nightcab,
klar dass das Event nicht feuert. Du schaltest ja per Application.EnableEvents = False genau diese aus. Lass diese Anweisung weg und schon funktioniert es. Dadurch wird die Routine zwar noch 2mal aufgerufen, ist aber angesichts deren Kürze zu vernachlässigen.
Ich würde deine Routine noch ergänzen:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    
    Dim Primut As String
    
    If Not Intersect(Target, Range("A1:A10")) Is Nothing Then
        
        Select Case Target
                
            Case "ka"
                Primut = "Karl"
            Case "wa"
                Primut = "Walter"
            Case "Su"
                Primut = "Susanne"
            Case Else
                Exit Sub
        End Select
        
        Target = Primut
        
    End If
End Sub

Gruß
Nepumuk
Anzeige
AW: Formel austomatisch durch Wert ersetzen
30.01.2019 20:01:48
nightcab
Danke Nepumuk, hat funktioniert!
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige