effectuez des calculs pour chaque cellule dans deux colonnes alignées dans EXCEL 2010 par VBA

J'ai besoin de faire des calculs pour chaque cellule dans deux colonnes alignées dans EXCEL 2010 par VBA sur Win7. Écrivez le résultat dans une cellule d'une autre colonne.

Mon code:

Set result_rng = Range("H2:H10") Set aRng = Range("C2:C10") Set bRng = Range("F2:F10") For Each aCell, bCell, cCell In aRng, bRng, result_rng // **error here** cEll.Value = Cdl(aCell.Value) - Cdl(b.Cell.Value) Next aCell 

J'ai également besoin de vérifier si la colonne F est "NULL", si oui, je ne ferai pas de calcul et je vais simplement mettre à jour un countur.

mettre à jour une nouvelle erreur de calage d'un sous

 find_max rng1:=rng // error !!! ByRef argu mismatch Sub find_max(ByRef rng1 As Range) Dim dblM As Double dblM = -9E+307 Dim maxCellAddress As Ssortingng For Each Cell In rng If IsNumeric(c) Then If dblMax < CDbl(Cell.Value) And Cell.Value <> "" Then dblM = CDbl(Cell.Value) maxCellAddress = (Cell.Address) End If End If Next Cell End Sub 

Toute aide serait appréciée.

MISE À JOUR 1

Essaye celui-là:

 Sub test() Dim rng As Range, c As Range Set rng = Range("C2:C10") For Each c In rng If c.Offset(0, 3).Value <> "NULL" Then c.Offset(0, 5).Value = c.Value - c.Offset(0, 3).Value End If Next c End Sub 

c.Offset(0, 3) signifie décalage vers la droite sur 3 colonnes, c'est-à-dire si c fait reference à une cellule dans la colonne C , alors c.Offset(0, 3) vous donne la valeur correspondante de la colonne F et c.Offset(0, 5) vous donne la valeur correspondante de la colonne H

Si cela semble trop délicat, vous pouvez l'utiliser à la place:

 Range("H" & c.Row).Value = c.Value - Range("F" & c.Row).Value 

MISE À JOUR 2

 Sub test() Dim result_rng As Range, c As Range Dim dblM As Double Dim maxCellAddress As Ssortingng Set result_rng = Range("H2:H10") dblM = -9E+307 For Each c In result_rng If IsNumeric(c) Then If dblM < CDbl(c.Value) And c.Value <> "" Then dblM = CDbl(c.Value) maxCellAddress = c.Address End If End If Next c End Sub