Página 1 de 1

VBA DIVISORES DE UM NÚMERO

Enviado: 11 Abr 2020 às 19:25
por heko
Amigos, boa noite.

Criei o código abaixo para calcular os divisores de qualquer número. Ocorre que ele apresenta todos os divisores do número numa mesma célula. Por exemplo: Divisores do número 30 = 1; 2; 3; 5; 6; 10; 15; 30
O código retorna todos os divisores do número dado na célula A1.

Preciso que cada divisor seja apresentado em uma célula distinta.

Segue o código:

Function Divisores_GT(num As Long) As String

Dim i As Long
Dim retorno As String

retorno = 1
For i = 2 To num
If num Mod i = o Then retorno = retorno & "; " & i
Next i

Divisores_GT = retorno

End Function

Sub testar()
Selection.Range("A1").Value = Divisores_GT(30)
End Sub

Obrigado

Re: VBA DIVISORES DE UM NÚMERO

Enviado: 11 Abr 2020 às 20:36
por babdallas
Veja se isso ajuda.
Código: Selecionar todos
Public Sub Divisores_GT(lngNumero As Long, rngNum As Range)
    Dim lngCont     As Long
    Dim lngNum()    As Long
    Dim lngDiv      As Long
    
    If VBA.IsNumeric(lngNumero) Then
        ReDim lngNum(1 To 10) As Long
        lngNum(1) = 1
        lngDiv = 1
        For lngCont = 2 To lngNumero
            If lngNumero Mod lngCont = 0 Then
                lngDiv = lngDiv + 1
                If lngDiv Mod 10 = 0 Then ReDim Preserve lngNum(1 To lngDiv * 10)
                lngNum(lngDiv) = lngCont
            End If
        Next lngCont
        ReDim Preserve lngNum(1 To lngDiv)
    End If
    
    rngNum.Resize(UBound(lngNum)).Value2 = Application.Transpose(lngNum())
End Sub

Sub testar()
    Divisores_GT 30, Planilha1.Range("A1")
End Sub