J'essaie de déclarer la somme de trois Application.Match em> numéros de ligne. Si j'ajoute toutes ces pièces à montres em> je vois valeurs em> pour chacun de mes matchs (par exemple: 1, 1, 1), mais quand je les ajoutes, je reçois "0 "Dans la montre la valeur em>. Vous trouverez ci-dessous le code associé et regardez les résultats lors de la débogage. ElseIf...
ElseIf Not IsError(Application.Match(K(3), TF13, 0)) _
And Not IsError(Application.Match(K(2), TC13, 0)) _
And Not IsError(Application.Match(K(1), TB13, 0)) Then
'Dim go here...
Dim S13 As Integer: S13 = Application.Match(K(3), TF13, 0) _
+ Application.Match(K(2), TC13, 0) _
+ Application.Match(K(1), TB13, 0)
Dim SD13 As Integer: SD13 = S13 / 3
If <<some formula to help me validate match above (e.g.: all true and all same number)>> Then
Worksheets("MATCHES").Range("$A" & ARR & ":" & "$F" & ARR) _
= TR13.Range("$A" & SD13 & ":" & "$F" & SD13)
End If
ElseIf...
3 Réponses :
Dim S13 As Integer S13 = CInt(Application.Match(K(3), TF13, 0)) + CInt(Application.Match(K(2), TC13, 0)) + CInt(Application.Match(K(1), TB13, 0)) Dim SD13 As Integer SD13 = S13 \ 3
Cela n'a pas fonctionné. J'ai reçu les mêmes résultats ... Merci d'avoir essayé.
En fait, je viens de copier et collé le code dans un contrôle rapide sur un classeur ouvert que j'ai, et cela fonctionnait. Cela peut être un problème alors avec vos variables; K (3), TF13, K (2), TC13 et K (1), TB13.
@Danielt sont K (1), K (2), K (3), TF13, TC13 et TB13 variables dans votre macro? Si vous essayez de regarder dans la cellule TF13, vous devrez utiliser une plage («TF13»), plutôt que de simplement la mettre en tant que TF13 - qui est traitée comme une variable (une référence ou une référence de matrice, pour être spécifique).
J'ai beaucoup de variables et de code autour de cela, mais je ne peux toujours pas dépasser pourquoi une valeur de la déclaration de la variable de test simple est "0" (E.G.: "Test DIM:" Test = 1 + 1 ")
FYI, j'ai ajouté un scénario de test "UPDATE" donnant des résultats appropriés.
Je ne peux pas te le dire là-bas. Je peux vous montrer que cela fonctionne, mais sinon quelque chose ne va pas avec votre système. Link
Merci pour votre temps @Cryostastas
Encore une fois, je veux juste que vous sachiez que j'apprécie que vous répondiez. En outre, j'ai compris mon problème et posté comme ma réponse.
Veuillez essayer avec ceci:
Dim S1 As Integer
Dim S2 As Integer
Dim S3 As Integer
S1 = Application.Match(K(3), Range("TF13"), 0)
S2 = Application.Match(K(2), Range("TC13"), 0)
S3 = Application.Match(K(1), Range("TB13"), 0)
Dim SD13 As Integer
SD13 = (S1 + S2 + S3) / 3
msgbox "S1: " & S1 & ", S2: " & S2 & ", S3: " & S3 & ", SD13: " & SD13
Merci, ça a l'air bien, mais j'ai compris mon problème et posté comme ma réponse. J'apprécie votre réponse.
OK, alors j'ai compris mon problème, qui n'a pas pu être vu par les informations fournies. Désolé.
mon code était comme ceci: p> Ce code a placé mes déclarations avant mon elporif / alors em> (dans le précédent Elseif em>) au lieu de le placer après la alors em> où les variables devaient apparemment être déclarées. Ci-dessous la correction. P> ElseIf...
ElseIf Not IsError(Application.Match(K(3), TF13, 0)) _
And Not IsError(Application.Match(K(2), TC13, 0)) _
And Not IsError(Application.Match(K(1), TB13, 0)) Then
'Dim go here...
Dim S13 As Integer: S13 = Application.Match(K(3), TF13, 0) _
+ Application.Match(K(2), TC13, 0) _
+ Application.Match(K(1), TB13, 0)
Dim SD13 As Integer: SD13 = S13 / 3
If <<some formula to help me validate match above (e.g.: all true and all same number)>> Then
Worksheets("MATCHES").Range("$A" & ARR & ":" & "$F" & ARR) _
= TR13.Range("$A" & SD13 & ":" & "$F" & SD13)
End If
ElseIf...
Essayez d'utiliser `\` au lieu de `/`, comme vous le renvoyez à un entier. Essayez également CINT () autour de l'appilication.Match des relevés, car il s'agit de VBA Excel, pas vb.net docs.microsoft.com/en-us/dotnet/visual-basic/language-refere nce / ...
@Cryostastas J'aimerais pouvoir dire que cela est utile, mais je ne suis pas clair sur la façon dont / où appliquer vos suggestions.
Je ne peux pas reproduire votre problème. Utilisation de votre code,
SD13 CODE> Affiche1 code> dans les deux locaux code> etmontre code> Windows.@Ronrosenfeld c'est étrange. Je ne peux même pas obtenir les simples exemples à travailler. Hmm.
FYI, j'ai ajouté un scénario de test "UPDATE" donnant des résultats appropriés.
@CryOSTasSys L'opérateur de division entier fonctionne également dans VBA ... et
cint code> est redondant, car si vous attribuez à unentier code>, l'expression sera convertie en silence en < Code> Integer Code>, parce que i> Ceci est VBA et non VB.NET (.NET est beaucoup plus strict avec les conversions implicites, en particulier avec l'optionstrict code> sur).J'apprécie les réponses. J'ai compris mon problème et affiché comme ma réponse.