J'essaie de traverser une plage de tableur et d'utiliser un essai / sauf pour construire une instruction if / else. La raison pour laquelle je le fais est parce que isnumeric () ne fonctionne pas pour moi, alors j'essaie de faire quelque chose comme ça (essayez, sauf le formatage de Python)
Dim Myrange As Range
Dim Myrow As Range
Dim Temp As Variant
Dim NextTemp As Variant
Set Myrange = Selection
For Each Myrow In Myrange.Rows
NextTemp = Range("A" & Myrow.Row).Value
If IsEmpty(Range("A" & Myrow.Row)) Then
Exit For
ElseIf IsNumeric(NextTemp) Then
Temp = NextTemp
Range("A" & Myrow.Row).Value = ""
Else
Range("B" & Myrow.Row).Value = Temp
End If
Next Myrow
3 Réponses :
Un moyen d'avoir un gestionnaire d'erreur dédié à la fin de votre substance et de vérifier le code d'erreur (13 pour la désactivation de type): de cette façon, si nous rencontrons une valeur Pour quel CDBL code> (ou la fonction équivalente) échouons, nous continuons simplement à la ligne suivante. p> p>
Un peu de simplification et ramassant sur les commentaires de Mathieu, essayez ceci. Je ne sais pas ce que vous faites ce que vous faites cependant peut ne pas être tout à fait raison.
Sub x()
Dim Temp As Variant
Dim Myrange As Range
Dim Myrow As Range
Set Myrange = Range("A1", "A1000")
For Each Myrow In Myrange
If Not IsEmpty(Myrow) Then
Temp = Myrow.Value - 0
If IsNumeric(Temp) Then
Myrow.Value = vbNullString
Else
Myrow.Offset(, 1).Value = Temp
End If
End If
Next Myrow
End Sub
C'était essentiellement ce que j'ai fait, merci. Je ne sais pas comment je peux poster mon code.
Merci d'avoir accepté ma réponse. Cependant, vous pouvez publier votre propre code comme réponse si vous préférez.
Bien que le premier exemple contienne C'est pas clair si vous pourriez avoir un texte qui ressemble à des chiffres dans la colonne A. Si le Vous pouvez également utiliser Essayez: code> et sauf: code> comme étiquettes, ils ne fournissent aucun contrôle d'erreur. Essayez / sauf si vb.net méthodes de contrôle des erreurs, non VBA . Temp = (myrow.value () - 0) code> est uniquement destiné à déterminer si la valeur dans la colonne A est un nombre et non Utilisé comme une conversion, les spécialistes peuvent trouver rapidement les chiffres de la colonne A. p> xlcelltypeformulas code> pour renvoyer des chiffres ou du texte renvoyés par formules . p> p>
Qu'est-ce que cette ligne est censée faire
myrow.value () - 0 code>?La meilleure gestion des erreurs n'est pas une manipulation d'erreur - si vous attribuez
Temp code> àmyrow.value code> jette un Mismachatch i>, lisezmyrow.value < / code> dans unvariante code> et déterminez siiSnumeric (myrow.value) code> avant d'essayer de le contraire à uninteger code>; Ensuite, vous n'avez pas besoin de vous inquiéter de la manipulation des erreurs.Egalement
sur erreur CV Suivant code> doit être jumelé avec unsur erreur goto 0 code> instructions qui restaient la manutention des erreurs - sans elle Oern supprimer toutes les erreurs de la portée de la procédure.Quelle erreur vous essayez d'utiliser
isnumeric (myrow.value) code>?@Matheuguindon J'allais vous demander plus de détails sur "La meilleure gestion des erreurs n'est pas une manipulation d'erreur", puis j'ai trouvé que vous avez déjà un Blog POST Couvrez-le. Utile pour une meilleure compréhension de ce sujet.
Dans le
pour code> la plage est uniquementmyRange code> et nonmyrange.row code> et besoin de changementvaleur () code> to seulement < Code> Valeur Code>.@Mathieuguindon Je viens de lire votre blog que Robert a lié et c'est très utile. Je prévois de mettre en œuvre cela à l'avenir. Merci.
@Matheuguindon J'ai suivi vos conseils et j'ai cloué! Je ne sais pas comment le marquer comme répondu depuis que cela a été publié comme un commentaire VS Réponse.
Vous ne pouvez pas marquer un commentaire comme étant accepté - la réponse de SJR semble construire sur mon commentaire.