Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema RefEdit
BildScreenshot zu RefEdit RefEdit-Seite mit Beispielarbeitsmappe aufrufen

in einem Bereich Zelle für Zelle bearbeiten ...

Betrifft: in einem Bereich Zelle für Zelle bearbeiten ... von: Peter
Geschrieben am: 08.05.2008 16:32:06

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


     Code eingefügt mit Syntaxhighlighter 4.7


PS: Es heisst "Schleife" und nicht "Schlaufe" (*gräusslich* )

Gruß, NoNet


  

Betrifft: OT: Wir wollen doch weder Schuhe noch Päckchen... von: Luc:-?
Geschrieben am: 09.05.2008 02:18:14

...binden, NoNet... ;-)
Eigentlich heißt es nämlich zyklische Verarbeitung bzw kurz Zyklus. So hab ich das mal gelernt. Alles andere ist nur "gräuslicher" Jargon! ;-)
Gruß 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 :-?


 

Beiträge aus den Excel-Beispielen zum Thema "in einem Bereich Zelle für Zelle bearbeiten ..."