Erro de sintaxe do VBA do Excel

0

Eu estou tentando usar o seguinte código que encontrei na web, mas ele pára devido a um erro de sintaxe: veja abaixo

Sub TestCNR()
    Cnr 10, 4
End Sub
Sub Cnr(n, r)
    i = 1
    For j = 1 To r
        Cells(i, j).Value = j
    Next

    Do Until Finished(n, r, i)
        j = FindFirstSmall(n, r, i)
' The error occures in below line
        For k = 1 To j – 1           
            Cells(i + 1, k).Value = Cells(i, k).Value
        Next
        Cells(i + 1, j).Value = Cells(i, j).Value + 1
        For k = j + 1 To r
            Cells(i + 1, k).Value = Cells(i + 1, k - 1).Value + 1
        Next
        i = i + 1
    Loop
End Sub
Function Finished(n, r, i)
    Temp = True

    For j = r To 1 Step -1
        If Cells(i, j).Value <> j + (n - r) Then
            Temp = False
        End If
    Next
    Finished = Temp
End Function

Function FindFirstSmall(n, r, i)
    j = r
    Do Until Cells(i, j).Value <> j + (n - r)
        j = j - 1
    Loop
    FindFirstSmall = j
End Function

Alguém pode aconselhar causa de erro por favor?

Baz
fonte
Remova o ** ** de For k = 1 To j - 1
angelofdev
2
@angelofdev eu tomei estes ** como o OP nos mostrando onde está o erro de sintaxe ... que eu posso replicar colando o código do OP (sem o ** 's) no VBE.
Mathieu Guindon
@MathieuGuindon você está certo o - não é -
angelofdev
** ** marcas substituídas por um comentário.
Akina

Respostas:

5

[...] código que encontrei na web

For k = 1 To j – 1

que personagem não é um -. Não basta copiar e colar o código da internet :)

Debug.Print Asc("–")
 150
Debug.Print Asc("-")
 45 

Chr$(150) não é reconhecido como um MINUS operador pelo analisador do VBA: o token é inválido, daí o erro de sintaxe.

FYI estes não qualificados Cells chamadas estão implicitamente se referindo a qualquer que seja o ActiveSheet é; talvez você queira tornar sua planilha de destino mais explícita do que isso.

Mathieu Guindon
fonte