DUVIDA DE OTIMIZAR CODIGO.
MARCELO-TREZE,
Continua gerando o mesmo erro.
Thiago
Continua gerando o mesmo erro.
Thiago
Mais alguma sugestão??
Thiago, você testou o exemplo que enviei?
ROBIU,
Testei sim, mas também não funciona pelo seguinte motivo.
é que esta indexidado os check[ô]s. E não são obrigatorio ser preenchidos todos os check[ô]s é obrigatorio somente 1.
Para vc ter uma ideia melhor do assunto, imagine 3 grupos de check[ô]s.
exemplo.
Check1(1), Check1(2),....,Check1(10).
Check2(1), Check2(2),....,Check2(10).
Check3(1), Check3(2),....,Check3(10).
A minha função verifica se pelo menos 1 check em cada grupo foi selecionado, se não foi acusa na tela.
O que eu queria é otimizar isto no maximo que eu puder, pois tem software que tem varios grupos como este, e eu não queria criar a função que eu postei um para cada grupo.
Thiago
Testei sim, mas também não funciona pelo seguinte motivo.
é que esta indexidado os check[ô]s. E não são obrigatorio ser preenchidos todos os check[ô]s é obrigatorio somente 1.
Para vc ter uma ideia melhor do assunto, imagine 3 grupos de check[ô]s.
exemplo.
Check1(1), Check1(2),....,Check1(10).
Check2(1), Check2(2),....,Check2(10).
Check3(1), Check3(2),....,Check3(10).
A minha função verifica se pelo menos 1 check em cada grupo foi selecionado, se não foi acusa na tela.
O que eu queria é otimizar isto no maximo que eu puder, pois tem software que tem varios grupos como este, e eu não queria criar a função que eu postei um para cada grupo.
Thiago
Bom realmente o For Each nà o irá funcionar com objetos indexados, é este o maior problema, entà o a melhor forma é a que vc está utilizando, pois como são varios chekbox indexado, terá de verificar grupo por grupo
Beleza, então você vai gostar do que eu consegui fazer neste projeto.
[ô]Para funcionar vamos marcar cada grupo de Checkboxs pela propriedade Tag
[ô]Assim, Todas Check1 coloque 1 na propriedade Tag, Check2 coloque 2 na propriedade Tag,
[ô]Proceda desta forma para todos os grupos
[ô]Para funcionar vamos marcar cada grupo de Checkboxs pela propriedade Tag
[ô]Assim, Todas Check1 coloque 1 na propriedade Tag, Check2 coloque 2 na propriedade Tag,
[ô]Proceda desta forma para todos os grupos
Option Explicit
Dim Contar(1 To 3) As Integer
[ô]A Variável contar depende da quantidade de grupos. Neste exemplo são três grupos
Sub VerCheck(F As Form)
Dim Check As Integer, I As Integer
[ô]Limpar a variável Contar
For I = 1 To 3
Contar(I) = 0
Next I
[ô]Pega a quantidade de controles do form
For Check = 1 To F.Controls.Count - 1
[ô]Verifica se o controle é CheckBox
If TypeOf F.Controls(Check) Is CheckBox Then
[ô]Para as CheckBoxs, Pega os grupos. Este for está relacionado com a quantidade de grupos
[ô]Como os grupos são fixos:
For I = 1 To 3
[ô]O grupo está ligado à propriedade Tag dos Checkboxs
If Val(F.Controls(Check).Tag) = I Then
If F.Controls(Check).Value = 1 Then
Contar(I) = Contar(I) + 1
End If
End If
Next
End If
Next
End Sub
Private Sub Command1_Click()
[ô]Para chamar a sub
VerCheck Me
[ô]Exemplo de uso dos valores
Lbl1.Caption = Contar(1) & [Ô] marcado(s)[Ô]
Lbl2.Caption = Contar(2) & [Ô] marcado(s)[Ô]
Lbl3.Caption = Contar(3) & [Ô] marcado(s)[Ô]
End Sub
public function VerCheck()
Dim Controle1 As Object
Dim Controle(n) As Object [ô] SUBSTITUA N POR (NUMERO DE GRUPOS-1) NO CASO ESTOU USANDO 3 GRUPOS N=2
dim qt(n) as byte[ô] SUBSTITUA N POR (NUMERO DE GRUPOS-1) NO CASO ESTOU USANDO 3 GRUPOS N=2
[ô]a variavel qt armazena a qtde de controles de cada grupo se a qtde for a mesma para todos é desnecessaria a variavel
verchek=false
contador=0
Set Controle(0) = CHECK1: Set Controle(1) = CHECK2: Set Controle(2) = CHECK3
for i = 0 to n [ô]não eskeça de substituir o N
set controle1=controle(i)
for j = 1 to qt(i)
if controle1(j).checked= true then [ô]
contador=contador+1
exit for
else
endif
next j
next i
if contador = N then
vercheck=true
else
endif
end function
Dim Controle1 As Object
Dim Controle(n) As Object [ô] SUBSTITUA N POR (NUMERO DE GRUPOS-1) NO CASO ESTOU USANDO 3 GRUPOS N=2
dim qt(n) as byte[ô] SUBSTITUA N POR (NUMERO DE GRUPOS-1) NO CASO ESTOU USANDO 3 GRUPOS N=2
[ô]a variavel qt armazena a qtde de controles de cada grupo se a qtde for a mesma para todos é desnecessaria a variavel
verchek=false
contador=0
Set Controle(0) = CHECK1: Set Controle(1) = CHECK2: Set Controle(2) = CHECK3
for i = 0 to n [ô]não eskeça de substituir o N
set controle1=controle(i)
for j = 1 to qt(i)
if controle1(j).checked= true then [ô]
contador=contador+1
exit for
else
endif
next j
next i
if contador = N then
vercheck=true
else
endif
end function
Tópico encerrado , respostas não são mais permitidas