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

luisrocha

Percorrer várias colunas do Excel com ciclo while

Recommended Posts

luisrocha

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

Share this post


Link to post
Share on other sites
YoungCoder

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


IIF(strQuestion = "Stupid",doSEARCH!,doHELP!)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.