Pessoal,
Encontrei duas macros distintas, porém não consigo interligá-las. Meu intuito é gerar o sorteio de um numero (obtido através de uma caixa de dialogo) determinado de pessoas (Não repetidas).
Segue as macros que consegui até o momento:
Sorteio
Sub sorteio()
Dim contar As Integer
Dim linha As Integer
Dim x As Excel.Range
Dim y As Long
If WorksheetFunction.CountIf(Range("A2:A1001"), ">0") = 0 Then
MsgBox "TODOS NOMES SORTEADOS!", , "Sorteio finalizado!"
Exit Sub
End If
Range("G3").Select
ActiveCell.Interior.Color = vbYellow
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-2],C[-6]:C[-4],3,0)"
Range("E3").Select
ActiveCell.FormulaR1C1 = _
"=RANDBETWEEN(MIN(R[-1]C[-4]:R[998]C[-4]),MAX(R[-1]C[-4]:R[998]C[-4]))"
ActiveSheet.Calculate
For y = 1 To 10
ActiveSheet.Calculate
Application.Wait Application.Wait(Now + TimeValue("0:00:01") / 1.8)
Next y
Range("E3").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("G3").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-2],C[-6]:C[-4],3,0)"
ActiveSheet.Calculate
Range("G3").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
ActiveCell.Interior.Color = vbGreen
If Range("N2") = "" Then
Range("N2").Value = Range("G3")
Else
Range("N1").Select
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = Range("G3")
End If
For Each x In Range("A2:A1001")
If x.Value = Range("E3") And contar = 0 Then
x.ClearContents
contar = 1
End If
Next
Range("B1").Select
End Sub
Input e Loop
Sub executarNVezes()
Dim numeroVezes As String
numeroVezes = InputBox("Informe quantas pessoas deverão ser sorteadas:", "Informe", "Apenas números")
If Not IsNumeric(numeroVezes) Then
MsgBox "Informe apenas números", vbCritical, "Erro"
executarNVezes
End If
If numeroVezes = "" Then Exit Sub
If IsNumeric(numeroVezes) Then
For a = 1 To numeroVezes
If a = numeroVezes Then
MsgBox "Executado último sorteio de um total de " & numeroVezes & ".", vbInformation, "Exemplo"
Else
'Senão, vamos executando a rotina e informando do passo em que nos encontramos
MsgBox "Executando sorteio " & a & " de " & numeroVezes & ".", vbInformation, "Exemplo"
End If
Next
End If
End Sub
Podem me ajudar?
Postado : 22/02/2018 11:34 am