2013-03-12 1 views
0

Cela peut être un morceau de code assez facile pour les développeurs expérimentés VBA/utilisateurs, mais im nouvelle programmation un Im coincé sur cette tâche depuis quelques jours déjà :(Tout ce que j'ai besoin est de appliquer une formule à une gamme définie par l'utilisateur soit dans son ensemble (si possible) ou en boucle à travers un "pour-chaque prochaine" ou "pour la prochaine" et je reçois juste des erreurs pour chaque tentative que j'ai essayé pour cela. avec cette question s'il vous plaît .... thxs beaucoup à l'avanceappliquer une formule à toute une gamme

Disons que la formule est quelque chose de facile comme F = m * a, étant « m » ma plage sélectionnée

Voici le code pour sélectionner la gammes:

Option Base 1 


    Sub KVmodel() 

    'Select the data points from the excel spreadsheet 

    Dim A, B As Range 
    Set A= Application.InputBox("Select A Range", "Select a range", Type:=8) 
    Set B= Application.InputBox("Select B Range", "Select a range", Type:=8) 


    'Verify the lenght of the selected data 
    If A.Count = B.Count Then 
    MsgBox "Do you want to run the KV Model Adjustment?", vbYesNo 


    'Calculates F according to the values of the model 

    - 
    - 
    - 


    Else 
    MsgBox "The range sizes are different, please re-select the input data" 

    End If 

    End Sub 
+0

Voulez-vous insérer une formule dans chaque cellule ou insérer un résultat d'une formule calculée en VBA? Votre exemple donné pour la formule, vous dites ce que m est, qu'en est-il un? est également m toute la gamme? ou une cellule à l'intérieur, même pour un? – NickSlash

+0

Oh désolé de ne pas être plus précis, "a" signifierait un scalaire et l'idée générale serait de générer une autre gamme ou un tableau comme le résultat de la formule appliquée à la gamme sélectionnée. PS: merci pour votre réponse rapide;) –

+0

Donc, vous avez 3 plages? A, B et M (vous avez sélectionné) et vous voulez faire quelque chose avec A et B et mettre le résultat dans M? Ou vous avez 2 gammes, A et B, faites quelque chose à A et mettez le résultat dans B? – NickSlash

Répondre

0

Essayez ci-dessous le code:

Option Base 1 


Sub KVmodel() 

    On Error Resume Next 

    'Select the data points from the excel spreadsheet 

    Dim A As Range, B As Range 
    Set A = Application.InputBox("Select A Range", "Select a range", Type:=8) 
    Set B = Application.InputBox("Select B Range", "Select a range", Type:=8) 

    Dim userDefinedRng As Range ' assumption 
    Set userDefinedRng = Range("A1:A10") 

    On Error GoTo 0 

    If Not A Is Nothing And Not B Is Nothing Then 

     'Verify the lenght of the selected data 
     If A.Count = B.Count Then 
      retVal = MsgBox("Do you want to run the KV Model Adjustment?", vbYesNo) 

      If retVal = vbYes Then 
       'Calculates F according to the values of the model 
       userDefinedRng.FormulaR1C1 = "= 1 * 2" ' here it applies forumla to whole userdefined range 
       MsgBox "yes" 
      Else 
       MsgBox "no" 
      End If 

     Else 
      MsgBox "The range sizes are different, please re-select the input data" 

     End If 
    End If 

    Exit Sub 

End Sub 
+0

Thxs pour votre aide 2063626. Au moins, il fonctionne sans erreurs, mais tout ce que j'ai obtenu est un vecteur unidimensionnel fixe des nombres 2 de A1 à A10. L'emplacement n'est pas un problème, c'est facile à modifier, le problème est la valeur: Ive essayé diff. entrées dans le RetVal If et aussi différentes gammes sélectionnées et il ne cesse de me donner un unidim. vecteur de 2, peu importe ce que je choisis :(thxs de toute façon –

+0

@Migel Varga voter si mon message a été utile. –

Questions connexes