Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1672to1676
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

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

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
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!

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige