Microsoft Excel

Herbers Excel/VBA-Archiv

formel

Betrifft: formel von: andreas
Geschrieben am: 16.10.2012 11:26:08

hallo zusammmen,

ich benötige in VBA einen code der mir zb. in den zellen B2:B20 automitsch diese zahl einträgt die in einer bestimmten zelle zb. steht F6,
also sollte fest hinterlegt werden.

ich möchte aber die möglichkeit haben in den oben genannten zellen B2:b2 haben manuelle zahlen einzutragen, wenn ich diese zelle aber wieder leere, sollte die ursprüngliche zahl automatisch von F6 wieder erscheinen.

ist das möglich.
hoffei ch habe mich richtig ausgedrückt.

Gruß
Andreas

  

Betrifft: AW: formel von: Hajo_Zi
Geschrieben am: 16.10.2012 11:30:35

Hallo Andreas,

ich würde Code benutzen.

Option Explicit                             ' Variablendefinition erforderlich

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim RaBereich As Range                  ' Variable für Bereich
    Dim RaZelle As Range                    ' Variable für Zelle
    ' Bereich der Wirksamkeit
    Set RaBereich = Range("B2: B20")
    Set RaBereich = Intersect(RaBereich, Range(Target.Address))
    If Not RaBereich Is Nothing Then
        'ActiveSheet.Unprotect ("Passwort")
        Application.EnableEvents = False
        For Each RaZelle In RaBereich
            If RaZelle = "" Then RaZelle = Range("F6")
        Next RaZelle
        Application.EnableEvents = True
        'ActiveSheet.protect ("Passwort")
    End If
    Set RaBereich = Nothing                 ' Variable leeren
End Sub
GrußformelHomepage


  

Betrifft: AW: formel von: Klaus M.vdT.
Geschrieben am: 16.10.2012 11:35:20

Moin Andreas,

tuts das?

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rBereich As Range
Dim rSchleife As Range
Dim rErsatz As Range

Set rBereich = Range("B2:B20")
Set rErsatz = Range("F6")

    For Each rSchleife In rBereich
        If rSchleife.Value = "" Then rSchleife.Value = rErsatz.Value
    Next 'rSchleife

End Sub
Grüße,
Klaus M.vdT.


  

Betrifft: ouch AW: formel von: Klaus M.vdT.
Geschrieben am: 16.10.2012 11:44:54

Hi Andreas,
vergiss meinen Code, die Beispiele von Marc und Hajo sind um Welten besser.
Grüße,
Klaus M.vdT.


  

Betrifft: AW: formel von: andreas
Geschrieben am: 16.10.2012 11:48:56

VIELEN DANK,

für die umgehende HILFE.
Alle codes sind ok,
werde den Code von Klaus verwenden.
Dazu noch eine Frage wenn ich aber in F6 die Zahl ändere muss ich manuell noch einmal in die Felder von B2:b20 klicken um das er die änderungen von F6 aktiviert
oder mach ich da ein Fehler?
-währe ne tolle sache wenn man da eine Lösung findet.

Gruß
Andreas


  

Betrifft: AW: formel von: Hajo_Zi
Geschrieben am: 16.10.2012 11:51:28

Hallo Andreas,

es wird schon einen Grund haben für dDeine Entscheiduzng. Dir ist bestimmt aufgefallen das der Code bei jeder Zellauswahl ausgeführt wird.

Gruß Hajo


  

Betrifft: AW: formel von: Klaus M.vdT.
Geschrieben am: 16.10.2012 11:55:52

Hallo Andreas,

nimm lieber Hajo's Code, der hat eine gute Fehlerkorrektur mit allem was dazu gehört und kommt ohne Schleife aus.

Wenn du den Wert in F6 änderst, musst du natürlich in B2:B20 alles durchclicken. Excel weiss ja nichts davon, dass du in B2:B20 ändern möchtest ... das sind halt keine Formeln! Wenn das auch automatisch passieren muss, bräuchtest du für den Fall "F6 ändert sich" einen eigenen kleinen VBA Script.

(ich würd jetzt wieder was mit einer Schleife basteln ... Hajo, du kannst das bestimmt eleganter als ich!)

Grüße,
Klaus M.vdT.


  

Betrifft: AW: formel von: Hajo_Zi
Geschrieben am: 16.10.2012 12:00:56

Halölo Klaus,

ich benutze auch eine Schleife. Mein Code hat auch den Vorteil es können mehrere Zellen mit einmal geändert werden, was Excel ja zu läst.
Deine Ergänzung.

Option Explicit                             ' Variablendefinition erforderlich

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim RaBereich As Range                  ' Variable für Bereich
    Dim RaZelle As Range                    ' Variable für Zelle
    ' Bereich der Wirksamkeit
    Set RaBereich = Range("B2: B20")
    Set RaBereich = Intersect(RaBereich, Range(Target.Address))
    If Not RaBereich Is Nothing Then
        'ActiveSheet.Unprotect ("Passwort")
        Application.EnableEvents = False
        For Each RaZelle In RaBereich
            If RaZelle = "" Then RaZelle.Formula = "=F6"
        Next RaZelle
        Application.EnableEvents = True
        'ActiveSheet.protect ("Passwort")
    End If
    Set RaBereich = Nothing                 ' Variable leeren
End Sub
Gruß Hajo


  

Betrifft: AW: formel von: andreas
Geschrieben am: 16.10.2012 13:12:33

Noch einmal einen herzlichen Dank :)


  

Betrifft: AW: formel von: Marc
Geschrieben am: 16.10.2012 11:38:22

Mahlzeit!
Versuch mal folgendes in "Tabelle1" einzufügen:

Private Sub Worksheet_Change(ByVal Target As Range)

On Error Resume Next

Set isec = Application.Intersect(Range("B2:B20"), Range(Target.Address))
If isec.Count > 1 Then Exit Sub
If Not isec Is Nothing And Target.Value = "" Then Target.Value = Range("F6")

End Sub



 

Beiträge aus den Excel-Beispielen zum Thema "formel"