• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

luisrocha

Percorrer várias colunas do Excel com ciclo while

3 mensagens neste tópico

Boa noite!

Estou tentando fazer um ciclo while que percorra varias colunas do excel e pare quando resultado dos calculos entre essas colunas corresponder à condição que eu imponho...Tenho o seguinte codigo mas não está dando certo,será que alguem pode me ajudar?

Ved = Val(TextBox2.Text)
Med = Val(TextBox3.Text)
yMO = Val(TextBox4.Text)

If OptionButtonS235.Value = True Then
fy = 235
ElseIf OptionButtonS275.Value = True Then
fy = 275
ElseIf OptionButtonS355.Value = True Then
fy = 355
End If


If Med <> 0 And Ved <> 0 And Ned = 0 Then

linha = 10
Parar = False

While IsNumeric(Range("AA" & linha).Text) And IsNumeric(Range("AC" & linha).Text) And IsNumeric(Range("AB" & linha).Text) And IsNumeric(Range("F" & linha).Text) And IsNumeric(Range("AD" & linha).Text) And IsNumeric(Range("Y" & linha).Text) And IsNumeric(Range("Z" & linha).Text) And IsNumeric(Range("AE" & linha).Text) And Parar = False

Area = Range("AE" & linha).Value
Wpl = Range("F" & linha).Value

If ComboBox1.Text = "IPN" Then
b = Range("y" & linha).Value
tf = Range("AA" & linha).Value
tw = Range("Z" & linha).Value
raio = Range("AB" & linha).Value

ElseIf ComboBox1.Text = "IPE" Or ComboBox1.Text = "HE" Then
b = Range("AA" & linha).Value
tf = Range("AC" & linha).Value
tw = Range("AB" & linha).Value
raio = Range("AD" & linha).Value

End If

If Ved < 0.5 * ((Area - 2 * (b * tf) + (tw + (2 * raio)) * tf) * fy / (3 ^ (1 / 2))) / yMO And Med <= Wpl * fy / yMO Then
Parar = True
perfil = Range("B" & linha).Value

End If

linha = linha + 1

Wend
End If
LabelResult.Caption = perfil 

Será que alguém consegue me ajudar por favor?ver o k possa ter mal...tenho de entregar o trabalho na faculdade amanha e não estou conseguindo ultrapassar esta situação...

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Independentemente do resultado expectavel penso que o problema esta na propria designação de ciclo

While Condição
codigo
Wend	'Fim de ciclo While

O que aqui esta descrito está errado, a maneira correcta de iniciar e finalizar um ciclo While deve ser da seguinte maneira:

Do While condição	' Inicio cilo while
codigo
if determinada condição then
	codigo
elseif
	outrocodigo
else
	exit do	'Sair do ciclo While
end if
Loop	' Fim de ciclo

o que resultaria na seguinte correcção:

Do While IsNumeric(Range("AA" & linha).Text) And IsNumeric(Range("AC" & linha).Text) And IsNumeric(Range("AB" & linha).Text) And IsNumeric(Range("F" & linha).Text) And IsNumeric(Range("AD" & linha).Text) And IsNumeric(Range("Y" & linha).Text) And IsNumeric(Range("Z" & linha).Text) And IsNumeric(Range("AE" & linha).Text) And Parar = False

Area = Range("AE" & linha).Value
Wpl = Range("F" & linha).Value

If ComboBox1.Text = "IPN" Then
	b = Range("y" & linha).Value
	tf = Range("AA" & linha).Value
	tw = Range("Z" & linha).Value
	raio = Range("AB" & linha).Value
ElseIf ComboBox1.Text = "IPE" Or ComboBox1.Text = "HE" Then
	b = Range("AA" & linha).Value
	tf = Range("AC" & linha).Value
	tw = Range("AB" & linha).Value
	raio = Range("AD" & linha).Value
End If

If Ved < 0.5 * ((Area - 2 * (b * tf) + (tw + (2 * raio)) * tf) * fy / (3 ^ (1 / 2))) / yMO And Med <= Wpl * fy / yMO Then
	Parar = True
	perfil = Range("B" & linha).Value
End If

linha = linha + 1

Loop

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora