Notifications
Clear all

Estrutura de código

7 Posts
2 Usuários
0 Reactions
1,319 Visualizações
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa tarde,
gostaria de saber se alguém pode me ajudar...
Minha grande dificuldade no vba é como é feita a estruturação do código. Exemplo.

"Set ws = ThisWorkbook.Worksheets(1)"

Nesse código, não sei porque thisworkbook vem primeiro de workseets e o que é esse (1)?

"If UCase(Left(TextoCelula, Len(TextoDigitado))) = UCase(TextoDigitado) Then
ListBox1.AddItem .Cells(i, 1)"
Nesse código também não sei como é feita essa estrutura.

Eu sei lógica e o básico, por exemplo.

Private sub soma ()
Dim a as long
Dim b as long
Dim c as long

a = 1
b = 2
c= a+b
msgbox c

end sub

Sei alguma coisa de loop, mas o grande problema são as outras coisas, gostaria de entender isso.

Grato

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 19/03/2013 11:42 am
(@vitor)
Posts: 57
Trusted Member
 

é a Hierarquia de objetos. O conjunto de planilhas(Worksheets) está na pasta de trabalho (ThisWorkbook).
" Uma coleção de todos os objetos Worksheet na pasta de trabalho ativa ou especificada. Cada objeto Worksheet representa uma planilha. " (help do excel)
esse (1) quer dizer que é a sua planilha1 (plan1)
um outro modo de representar essa planilha é o Sheets("Nome da sua planilha")

Esse outro é uma estrutura condicional IF (If-Then-Else-End If), funciona como o "=SE" do excel, entende ?
(:

"Nisto se manifestou o amor de Deus em nós: em haver Deus enviado o seu Filho unigênito ao mundo, para vivermos por meio dEle" 1 Jo 4-9

 
Postado : 19/03/2013 11:59 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Entendo, mas eu não sei em qual situação usar. Gostaria de saber como posso entender isso.
If-then...eu sei, conheço.
Por exemplo: Suponha que tenha uma lista de dados. E eu queira que essa lista apareça em uma list box e assim que for selecionado, faça um determinada ação.
não sei quais termos utilizar para fazer essa procedimento.

Assim, sei que em SQL para selecionar todos os dados de um Tabela: select * from tlbCliente
ou se quero uma determinado dado: select fulano from tblCliente.

não o que usar para fazer isso no vba, quais termos usar...
Grato

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 19/03/2013 12:07 pm
(@vitor)
Posts: 57
Trusted Member
 

criei uma planilha pra te explicar melhor, mas deu quase 5 MB (por causa das imagens)
mandei no seu e-mail [email protected]

Dê uma olhada no código da planilha (aperte alt+F11) ;)
você tem que habilitar a macro
(tinha como ela ficar mais funcional, mas como você está começando preferi não colocar tudo. Se você tiver um conhecimento em alguma outra linguagem de programação avise que mostrarei como fazer essa planilha ficar mais dinâmica, caso altere seus dados)

"Nisto se manifestou o amor de Deus em nós: em haver Deus enviado o seu Filho unigênito ao mundo, para vivermos por meio dEle" 1 Jo 4-9

 
Postado : 19/03/2013 1:08 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Cara, obrigado pelo retorno. Fico muito feliz que isso aconteça.
Vi o email...mas o que eu quero saber não é sobre uma coisa específica, mas sim com relação a esses códigos.
Gostaria de saber onde consigo saber como e de qual forma utiliza-los em determinado procedimento.

o VBA em sí. Aprendi sobre a programação, mas não sei como coloca-la pra funcionar.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 19/03/2013 1:23 pm
(@vitor)
Posts: 57
Trusted Member
 

o livro "Programando o Excel 2007 Vba para Leigos" é muito bom pra iniciantes (quando comecei foi com ele, falta muito a parender ainda, mas ele me deu uma base (nem li todo :P))
e utilize o sistema de ajuda do excel
vai no código, selecione a palavra com a qual você está com dúvida, então aperte F1.
(:

"Nisto se manifestou o amor de Deus em nós: em haver Deus enviado o seu Filho unigênito ao mundo, para vivermos por meio dEle" 1 Jo 4-9

 
Postado : 19/03/2013 1:28 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Eduardo, adicional ao que o colega Vitor "disse", em programação não há uma receita unica, não é factivel dizer: utilize nesta ou naquela situação.

ThisWorkbook / ActiveWorkbook /Workbook('xyz"), são formas de se referir ao Objeto "Pasta de Trabalho". Uma pasta de trabalho (workbook) recebe uma ou mais planilhas (worksheets); para referencia-las pode ser por sua ordem na pasta de trabalho: (1).(2).(3) etc.. (aqui deve considerar uma pequena mas importante "peculiaridade" nâo há uma amarração ao numero "dado" pelo sistema (Plan1 Plan2...), mas sim pela sua ordem visualizada na guia de planilhas.
Então pela hierarquia dos objetos primeiro refere-se a Pasta de trabalho e depois a planilha.
Qdo usar um ou outro, pelo pouco que sei não para o vba não há diferença; depende do usuario programador e sua afeição/preferencia.
Com referencia a linha: "Set ws=thisworkbook.worksheets(1): é uma forma de simplificar no codigo o meio de referir-se a uma determinada planilha, com essa "declaração" para referir-se a uma celula da primeira planilha basta "usar" ws.[A1] ou ws.range("A1")
Particularmente; opinião pessoal; para iniciantes é preferivel utilizar o processo mais "longo", ou seja thisworkbook.worksheets("Plan3").range("A1"), pois,creio eu, fixa melhor a sintaxe necessaria.
Básicamente a utilização do If.. é feita quando se pretende efetuar uma operação, porem há alguma condição que deva se considerada.
No seu exemplo

If UCase(Left(TextoCelula, Len(TextoDigitado))) = UCase(TextoDigitado) Then
ListBox1.AddItem .Cells(i, 1)

somente deverá ser adicionado a listbox1 os dados da TextoCelula (aqui imagino que seja uma variavel que pega o valor de uma determinada celula), que forem iguais ao valor digitado em TextoDigitado. Para isso ocorra com todas as linhas/celulas da planilha e necessario tb um loop.
Porem se deseja "carregar" todos os valores de uma planilha (o tal do select * do sql), vc pode utilizar um loop direto (sem o if) ou vincular a range desejada a prorpiedade rowsource do listbox

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 19/03/2013 2:19 pm