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
où 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