2016-12-16 4 views
0

J'ai écrit une macro qui supprime tous les caractères non numériques du code logistique et multiplie les numéros restants. Sur le pc c'est ok, sur mon mac ça ne marche pas.Macros PC Excel ne fonctionne pas sur Mac

Voici le code, probablement quelqu'un pourrait me suggérer pourquoi les macros ne fonctionne pas sur mac:

Function Bek(s) 
Static re As Object 
Dim x 
    If re Is Nothing Then 
    Set re = CreateObject("vbscript.regexp") 
    re.Pattern = "[0-9.,]+" 
    re.Global = True 
    End If 
    If re.test(s) Then 
    Bek = 1 
    For Each x In re.Execute(s) 
     Bek = Bek * Val(Replace(x, ",", ".")) 
    Next 
    End If 
End Function 

Je pourrais aussi joindre un fichier à votre demande.

P.S. trouvé des informations, que l'expression rationnelle pourrait ne pas être supportée par mac os.

Très appréciez votre aide.

+0

Andreas, probablement vous avez raison, mais il serait mieux si vous pouviez me aider. Merci. –

+0

Si vous nous donneriez des données d'entrée et de sortie attendues, nous pouvons vous aider, mais maintenant c'est un peu flou. – Andreas

+0

J'ai donc quelques codes comme: S10 2000 * 6000, 114,3 * 6,3. Les macros suppriment tous les symboles non numériques, comme S, *, space, et multiplient tous les nombres restants: 10x2000x6000. Sur PC est très bien, sur Mac, il ne le fait pas, je suppose en raison de regexp non pris en charge ou autre chose. –

Répondre

0

Essayez ceci.

Il se divise et regarde chaque partie de la chaîne et la gère comme je le souhaite.
essayer et voir si cela fonctionne

Sub ApplesWayOfRegex() 


    Str1 = "S10 2000*6000" 

    ReDim chars(Len(Str1) - 1) 
    For i = 1 To Len(Str1) 
     If (IsNumeric(Mid$(Str1, i, 1))) And i <> 1 Then 
      chars(i - 1) = Mid$(Str1, i, 1) 
     ElseIf (Not IsNumeric(Mid$(Str1, i, 1))) And i = 1 Then 
      chars(i - 1) = "" 
     Else 
      chars(i - 1) = "*" 
     End If 
    Next 

    Mathstr = Join(chars, "") 
    MsgBox Application.Evaluate(Mathstr) 
End Sub