INFOFORUM

Tudo sobre Informática
 
InícioPortalCalendárioGaleriaFAQBuscarRegistrar-seMembrosGruposConectar-seEntrar

Compartilhe | 
 

 VISUAL BASICS

Ir em baixo 
AutorMensagem
Munduze

avatar

Mensagens : 10
Data de inscrição : 24/10/2007
Idade : 36
Localização : Beira

MensagemAssunto: VISUAL BASICS   1st Julho 2008, 4:23 pm

Malta!

Quero que me ajudem a obter um codigo em VBA para gerar datas aleatorias em um calendario mensal, respeitando os seguintes requisitos:
1. Excluir os finais de semana;
2. Nao exceder 03 dias semanais e 12 mensais;
3. Nao repetir os dias anteriormente selecionados;
4. Atribuir cada data a uma variavel no intervalo [A,B,C]

Cumprimentos
Voltar ao Topo Ir em baixo
Ver perfil do usuário
Mutanga



Mensagens : 2
Data de inscrição : 24/07/2008
Localização : Amsterdam, Netherlands

MensagemAssunto: Re: VISUAL BASICS   24th Julho 2008, 8:10 pm

A minha sugestão é que você pegar o dia e o mês como vectores numéricos. Você armazena o número de cada parte gerada em vectores e percorrer os vectores para evitar repetição dos numeros gerados.
O seguinte código de VBA gera um número e guarde em um vector numérico. Você pode obter idéias a partir daí.

Public Function NumeroAleatorio(Superior As Integer, _
Optional Baixa As Integer = 1, _
Optional Quantas As Integer = 1, _
Optional Unico As Boolean = True) As Variant
'*******************************************************
'Esta função gera um vector aleatória de
'Números entre Baixa e Alta
'Além parâmetros podem incluir se quer
'Valores Unicos
'Observe o resultado é, inclusive, dos extremos

'Exemplo de Debug :
'x = NumeroAleatorio(49, 1, 7)
'For n = LBound(x) To UBound(x): Debug.Print x(n);: Next n
'ADVERTÊNCIA Quantas deve ser maior que (Superior - Baixa)
'******************************************************

On Error GoTo LocalError
If Quantas > ((Superior + 1) - (Baixa - 1)) Then Exit Function
Dim x As Integer
Dim n As Integer
Dim vecNums() As Variant
Dim colNumeros As New Collection

ReDim vecNums(Quantas - 1)
With colNumeros
'Em primeiro lugar preencher a coleção
For x = Baixa To Superior
.Add x
Next x
For x = 0 To Quantas - 1
n = NumeroAleatorio(0, colNumeros.Count + 1)
vecNums(x) = colNumeros(n)
If Unico Then
colNumeros .Remove n
End If
Next x
End With
Set colNumeros = Nothing
NumeroAleatorio = vecNums
Exit Function
LocalError:
'(Por Caso de erro)
NumeroAleatorio = ""
End Function

Public Function NumeroAleatorio(Superior As Integer, _
Baixa As Integer) As Integer
'Gera a numeros aleatorios entre valores Baixa and Superior
Randomize
NumeroAleatorio = Int((Superior - Baixa + 1) * Rnd + Baixa )
End Function
Voltar ao Topo Ir em baixo
Ver perfil do usuário http://www.freewebs.com/amutanga
Munduze

avatar

Mensagens : 10
Data de inscrição : 24/10/2007
Idade : 36
Localização : Beira

MensagemAssunto: Re: VISUAL BASICS   13th Abril 2012, 3:49 pm

Laughing MUITO OBRIGADO MSC.

AGUARDO POR MAIS DICAS

CPT

MUNDUZE
Voltar ao Topo Ir em baixo
Ver perfil do usuário
Conteúdo patrocinado




MensagemAssunto: Re: VISUAL BASICS   

Voltar ao Topo Ir em baixo
 
VISUAL BASICS
Voltar ao Topo 
Página 1 de 1
 Tópicos similares
-
» Ford Mercury 49 RAT ROD "FINALIZADO 16/10!"

Permissão deste fórum:Você não pode responder aos tópicos neste fórum
INFOFORUM :: Programação :: Programação-
Ir para: