Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1280to1284
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

formel
16.10.2012 11:26:08
andreas
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

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

Betreff
Datum
Anwender
Anzeige
AW: formel
16.10.2012 11:30:35
Hajo_Zi
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

Anzeige
AW: formel
16.10.2012 11:35:20
Klaus
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.

ouch AW: formel
16.10.2012 11:44:54
Klaus
Hi Andreas,
vergiss meinen Code, die Beispiele von Marc und Hajo sind um Welten besser.
Grüße,
Klaus M.vdT.

AW: formel
16.10.2012 11:48:56
andreas
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

Anzeige
AW: formel
16.10.2012 11:51:28
Hajo_Zi
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

AW: formel
16.10.2012 11:55:52
Klaus
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.

Anzeige
AW: formel
16.10.2012 12:00:56
Hajo_Zi
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

Anzeige
AW: formel
16.10.2012 13:12:33
andreas
Noch einmal einen herzlichen Dank :)

AW: formel
16.10.2012 11:38:22
Marc
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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige