![]() |
Betrifft: in einem Bereich Zelle für Zelle bearbeiten ...
von: Peter
alter Wert übernehmen und neuer Wert zurückschreiben.
Guten Tag
Ich möchte im mit "Daten" benannten Spaltenbereich alle Werte mit einer selbstgebastelten Funktion bearbeiten und das Ergebnis in die gleiche Zeile zurückschreiben.
Kann mir jemand ein Beispiel posten, wie eine solche Schlaufe aufgebaut sein muss?
Vielen Dank , Peter
![]() |
Betrifft: Zelle mit eigener Funktion kalkulieren
von: NoNet
Geschrieben am: 08.05.2008 16:41:39
Hallo Peter,
hier ein kleines Beispiel : Alle Zellen des Bereiches "Daten" werden einzeln mit einer eigenen Funktion neu berechnet (hier : mit 3 multipliziert und dann 100 addiert) :
Sub DatenBearbeiten()
'Kalkuliert die Werte aus Bereich "Daten" mit einer eigenen Funktion
'und schreibt die Ergebisse wieder in die Zellen zurück
Dim rngZelle As Range
For Each rngZelle In Range("Daten")
rngZelle.Value = Kalkulation(rngZelle) 'Eigene Funktion wird aufgerufen
Next
End Sub
Function Kalkulation(rngZelle) 'Die eigene Funktion zur Berechnung der neuen Werte
Kalkulation = rngZelle.Value * 3 + 100 'Dies ist die Berechnung : Wert * 3 + 100
End Function
![]() |
Betrifft: OT: Wir wollen doch weder Schuhe noch Päckchen...
von: Luc:-?
![]() |
Betrifft: AW: in einem Bereich Zelle für Zelle bearbeiten ...
von: Andi
Geschrieben am: 08.05.2008 16:41:58
Hi,
wenn ich Dich richtig verstanden habe, nach folgendem Prinzip (die
Function musst Du natürlich mit Deiner ersetzen):
Sub t()
Dim c As Range
For Each c In Range("Daten")
c.Value = MeineFunktion(c.Value)
Next c
End Sub
Function MeineFunktion(wert As Integer) As Integer
MeineFunktion = wert * 2
End Function
Schönen Gruß,
Andi

Betrifft: AW: in einem Bereich Zelle für Zelle bearbeiten ..
von: Reinhard
Geschrieben am: 08.05.2008 16:44:23
Hi peter,
Option Explicit
Sub Makro1()
Dim Zelle As Range
ActiveWorkbook.Names.Add Name:="Daten", RefersToR1C1:="=Tabelle1!R5C1:R10C1"
For Each Zelle In Range("Daten")
Zelle = Doppelt(Zelle.Value)
Next Zelle
End Sub
Function Doppelt(x)
On Error Resume Next
Doppelt = 2 * x
If Err.Number = 0 Then Exit Function
Doppelt = "was faul mit " & x
End Function
Gruß
Reinhard

Betrifft: AW: vielen Dank für die superschnelle Hilfe! owT
von: Peter
Geschrieben am: 08.05.2008 16:51:02

Betrifft: Alternativ könntest du aber auch die...
von: Luc:-?
Geschrieben am: 09.05.2008 02:29:28
...Subroutine vermeiden, Peter,
und deine udFkt gleich in die betroffenen Zellen eintragen. Wenn da schon Daten stehen ist es manuell (auch mit Hilfszelle!) kompliziert, stehen da Formeln ist es u.U. leichter (in 3 Phasen mit Ersetzen, habe ich kürzlich hier oder woanders beschrieben). Am Elegantesten ginge es natürlich mit einer Subroutine, die deinen udFkt-Aufruf in 2 Teilen um die Originaldaten/-formeln "herumlegt". So löse ich so etwas nämlich (z.B. bei nachträglich erforderlichem RUNDEN der Originaldaten). Die Originaldaten/-formeln bleiben so erhalten und du könntest die ganze Operation auch wieder rückgängig machen (falls an deiner udFkt was nicht stimmt).
Gruß Luc :-?
