ASimoes7 Posted April 29, 2012 at 11:35 AM Report #452023 Posted April 29, 2012 at 11:35 AM Boas. Será que alguém me pode ajudar a resolver um problema aqui numas tabelas que estou a criar. Tenho 4 tabelas de 5x5 (separadas), onde vou colocar smp o valor "1" dentro da célula correspondente, para isso criei 5 botões onde o botão 1 corresponde aos valores da linha 1 e linha 9 neste caso, e assim consecutivamente. No entanto o que eu pretendia é que cada vez que eu carrega-se no botão para inserir o valor ele no final avança-se para a coluna seguinte ou tabela seguinte caso a primeira tenha sido preenchida. Só pretendo obter 5 dados em cada tabela. O Código que tenho é muito basico, mas vou meter aqui pq pode ser que ajude a compreender o que pretendo: Private Sub Worksheet_Change(ByVal Target As Range) Dim row As Integer Dim col As Integer row = Target.row col = Target.Column Sub Botao1() ' ' Botao1 Macro ' ' Range("D1").Select ActiveCell.FormulaR1C1 = "1" Range("E1").Select End Sub Sub Botao2() ' ' Botao2 Macro ' ' Range("D2").Select ActiveCell.FormulaR1C1 = "1" Range("E2").Select End Sub Sub Botao3() ' ' Botao3 Macro ' ' Range("D3").Select ActiveCell.FormulaR1C1 = "1" Range("E3").Select End Sub Sub Botao4() ' ' Botao4 Macro ' ' Range("D4").Select ActiveCell.FormulaR1C1 = "1" Range("E4").Select End Sub Sub Botao5() ' ' Botao5 Macro ' ' Range("D5").Select ActiveCell.FormulaR1C1 = "1" Range("E5").Select End Sub Vou colocar tb o link de uma imagem da folha onde estão inseridas as tabelas: http://img837.imageshack.us/img837/3509/trabalhoogp.th.jpg O meu problema neste momento é que ele apenas me preenche a coluna D, quando o que eu pretendo é apenas um valor na coluna D e de seguida na coluna E -> F -> G -> H -> L -> M -> N -> O -> P, e quando termina estas duas tabelas, passa para as tabelas de baixo. Pode ser um pc confuso, mas se alguém me csguir ajudar e/ou precisar de entender melhor, eu posso tentar 😄 Desde já obrigado CUmps, ASimoes
ASimoes7 Posted April 30, 2012 at 12:41 PM Author Report #452243 Posted April 30, 2012 at 12:41 PM Pessoal ninguém me consegue desenrascar disto, tenho de entregar um trabalho, e apesar de isto não ser indispensável, digamos que melhorava bastante o trabalho 😄 O que pretendo julgo que não é complicado, mas não csg meter isso a funcionar por falta de conhecimento. Como tinha dito o que pretendo é por exemplo: __________ Carrego no botão1 - mete o valor 1 na célula "D1" e avança para a coluna seguinte Carrego no botão3 - mete o valor 1 na célula "E3" e avança para a coluna seguinte Carrego no botão4 - mete o valor 1 na célula "F4" e avança para a coluna seguinte Carrego no botão2 - mete o valor 1 na célula "G2" e avança para a coluna seguinte Carrego no botão1 - mete o valor 1 na célula "H1" e avança para a Tabela seguinte Carrego no botão5 - mete o valor 1 na célula "L5" e avança para a coluna seguinte ... Carrego no botão2 - mete o valor 1 na célula "P2" e avança para a Tabela de baixo Carrego no botão4 - mete o valor 1 na célula "D4" e avança para a coluna seguinte ... ___________________ Isto é mais uma explicação prática do que pretendo, se alguém me csguir ajudar agradeço. Cumps, Simões
Gnrtuga Posted April 30, 2012 at 12:59 PM Report #452244 Posted April 30, 2012 at 12:59 PM Boas já tinha lido o teu tópico mas, por não saber ajudar na totalidade não disse nada.. o código abaixo é um excerto do que eu uso, para preencher uma folha de Excel, neste caso vai preencher a ultima linha vazia Dim ultimalinha As Long ultimalinha = Folha1.Cells(65536, 1).End(xlUp).Row + 1 Folha1.Cells(ultimalinha, 1).Value = "OUTROS" Folha1.Cells(ultimalinha, 2).Value = "Outras Infrações" Folha1.Cells(ultimalinha, 3).Value = numauto.Text Folha1.Cells(ultimalinha, 5).Value = datainf.Text Folha1.Cells(ultimalinha, 6).Value = horainf.Text Folha1.Cells(ultimalinha, 7).Value = matriculaf.Text Em relação à coluna, não sei como é.. Boa sorte! p.s porque não gravas uma macro, vês o código e tenta adaptar! Férias! Estou por aqui: http://maps.google.p...001549&t=h&z=20 (a bulir claro está!) Nunca mais é verão outra vez.. :)
acao Posted April 30, 2012 at 05:58 PM Report #452315 Posted April 30, 2012 at 05:58 PM boas gnrtuga desculpa estar sempre a postar depois de ti,isto nao é perseguição acontece, ou tente assim: vba Private Sub CmdInserirDadosPanilha_Click() 'aqui pode ser butao1, butao2 ..... ActiveWorkbook.Sheets("Folha1").Activate 'aqui activa a folha com o nome folha1 Range("A1").Select ' aqui selecionas a celula A1 'inserir dados celula B1 ActiveCell.Offset(0, 1).Value = label1.caption 'para altereres a celula é só alterares o 0; e o 1; Range("C3").Select 'aqui seleciona a c3 End Sub tente adaptar á sua necessidade. cumps acao
Gnrtuga Posted April 30, 2012 at 08:16 PM Report #452341 Posted April 30, 2012 at 08:16 PM Eheh.. Não faz mal andares atrás de mim, é só sinal que ambos queremos ajudar, o que é bom, e tendo tu muitos mais conhecimentos que eu, sempre ajudas caso eu diga alguma asneira muito grande. 😄 Férias! Estou por aqui: http://maps.google.p...001549&t=h&z=20 (a bulir claro está!) Nunca mais é verão outra vez.. :)
acao Posted April 30, 2012 at 09:05 PM Report #452348 Posted April 30, 2012 at 09:05 PM boas mais uma dica como os botões inserem valores em varias celulas se conseguires condições facilitam as coisa exemplo: private sub camdBotao1.clik if condiçao = xY then imprime c1 elseif condiçao = zy then imprime d1 elseif condiçao = cy then imprime f3 else imprime h6 end if a condiçao pode ser «range.select = "A1"» ou outra que te seja mais apropriada, ps: condição não foi testada mas deve funcionar. cumps acao
ASimoes7 Posted April 30, 2012 at 09:54 PM Author Report #452364 Posted April 30, 2012 at 09:54 PM Boas. Já testei a primeira hipótese, mas n csgui meter sequer a funcionar, dava erro na linha "ActiveCell.Offset(0, 1).Value = label1.caption 'para altereres a celula é só alterares o 0; e o 1;" No entanto vou testar a segunda hipótese assim que chegar a casa, já tinha tentado criar condições mas nunca funcionava, vou testar agr essa que me deste para ver se resulta. Obrigado pelas sugestões! 😄 No entanto se alguem csguir ser mais explicito em como resolver isto, os dados que dei sao o código que tenho para os botões, e foram gravados, e a imagem e das tabelas que preciso para o trabalho. Cumps, Simoes
acao Posted April 30, 2012 at 10:04 PM Report #452371 Posted April 30, 2012 at 10:04 PM boas pois tem que dar, tens que ajustar as tuas necessidades, o label é o nome do campo aonde estao os dados, que pode ser label, textbox ou variavel, tens que colocar o nome aonde tens os dados. cumps acao
acao Posted April 30, 2012 at 10:33 PM Report #452389 Posted April 30, 2012 at 10:33 PM boas a condiçao da variavel que te passei nao funciona, faz assim: Private Sub CommandButton1_Click() Dim celula As Boolean ActiveWorkbook.Sheets("Folha1").Activate 'aqui activa a folha com o nome folha1 celula = Range("B4").Select ' seleciona a celula b4 e passa o valor true para a variavel celula If celula = True Then ' se a variavel celula é true faz 'inserir dados celula c4 ActiveCell.Offset(0, 1).Value = TextBox1.Text 'para altereres a celula é só alterares o 0; e o 1; else 'inserir dados celula c5 ActiveCell.Offset(0, 2).Value = TextBox1.Text 'para altereres a celula é só alterares o 0; e o 1; End If End Sub Edit: esta condição não funciona em pleno, porque é sempre true. estive a pensar na tua situação e só depois é que vi que esta condição é sempre true não a deletei para tu veres e testares. mas tenho esta opção: adiciona um modolo ao ficheiro, declaras las uma variavel para cada botao e no procedimento vai dando valores á variavel conforme as necessidades. exemplo: 'modulo 'declaração de variaveis public vbotao1 as Byte no form Private Sub CommandButton1_Click() ActiveWorkbook.Sheets("Folha1").Activate 'aqui activa a folha com o nome folha1 Range("B4").Select ' seleciona a celula b4 'no primeiro clix do botao temos a variavel com valor «0» If vbotao = 0 Then ' se a variavel celula é true faz 'inserir dados celula c4 ActiveCell.Offset(0, 1).Value = TextBox1.Text 'para altereres a celula é só alterares o 0; e o 1; 'damos o valor «1» á variavel para no segundo clik fazer a condiçao «elseif vbotao = 1 then» vbotao = 1 ElseIf vbotao = 1 Then ActiveCell.Offset(0, 2).Value = TextBox1.Text vbotao =2 elseif vbotao = 2 then ActiveCell.Offset(0, 3).Value = TextBox1.Text else 'se nenhuma das anteriores for verdadeira faz esta, mas tambem pode ser omitida. 'ou seja pode nao ter else. ActiveCell.Offset(1, 3).Value = TextBox1.Text End If End Sub fazes +- isto para cada botao. o nome da variavel pode ser outro. boa sorte cumps acao
ASimoes7 Posted May 1, 2012 at 03:37 PM Author Report #452474 Posted May 1, 2012 at 03:37 PM Boas Estou agora a tentar perceber este ultimo código que falou, já tinha tentado o anterior e realmente tb não tinha chegado ao que pretendo. E infelizmente não percebo praticamente nada de VBA, estas são as minhas primeiras tentativas, e apesar de fazer muita pesquisa, tenho demasiada dificuldade em mudar o código para o que pretendo, dai ter tentado ser o mais explicito possivel na explicação, para facilitar qq ajuda. Vou agora então ver se através deste ultimo código csg chegar ao que pretendo, e mais uma vez obrigado pela disponibilidade em tentar ajudar. Cumps, Simoes
ASimoes7 Posted May 1, 2012 at 04:22 PM Author Report #452485 Posted May 1, 2012 at 04:22 PM Continuo sem csguir obter nada com as soluções que me deram, provavelmente devido a minha falta de experiência mesmo 😄 Mas resolvi meter aqui o ficheiro, assim talvez seja mais facil compreender qual o modo de funcionamento e como resolver esta questão. http://www.yourfilelink.com/get.php?fid=799240 - Link para donwload do ficheiro excel 2010 Cumps, Simões
acao Posted May 1, 2012 at 07:32 PM Report #452510 Posted May 1, 2012 at 07:32 PM boas aonde tens os dados para inserir? ou como os vais inserir? cumps acao
ASimoes7 Posted May 1, 2012 at 07:48 PM Author Report #452515 Posted May 1, 2012 at 07:48 PM Os dados vão ser inseridos quando eu carrego em qualquer um dos botões, e o valor é sempre "1". Este valor é sempre o mesmo independentemente do botão. Dai no código relativo ao botão já estar ActiveCell.FormulaR1C1 = "1" Basicamente as tabelas não vão buscar informação a lado nenhum, a informação vai ser inserida quando eu carrego num botão, e é sempre a mesma, isto é, é sempre o valor 1. Cumps, Simões
acao Posted May 1, 2012 at 08:20 PM Report #452519 Posted May 1, 2012 at 08:20 PM Os dados vão ser inseridos quando eu carrego em qualquer um dos botões, e o valor é sempre "1". Este valor é sempre o mesmo independentemente do botão. Dai no código relativo ao botão já estar ActiveCell.FormulaR1C1 = "1" Basicamente as tabelas não vão buscar informação a lado nenhum, a informação vai ser inserida quando eu carrego num botão, e é sempre a mesma, isto é, é sempre o valor 1. Cumps, Simões como já tinha feito o exemplo antes de ver que tu tinhas postado aqui mas envio para tu veres desta maneira. http://dl.dropbox.com/u/65238129/Portugal_a_programar/Trabalho_OGP_-_Tentativas.xlsm mas se os dados são sempre 1 pode fazer como estavas a fazer, colocas o meu código no sub do botao e trocas, textbox1.text por 1 e no modulo colocas a variavel conforme eu coloquei. o textbox1.text = "" eliminas se não conseguires diz que eu rapido te faço o outro cumps acao
ASimoes7 Posted May 1, 2012 at 09:11 PM Author Report #452527 Posted May 1, 2012 at 09:11 PM Realmente não estou a conseguir meter o código a funcionar, já tentei seguir os passos que descreveu, mas quando o faço o Botão 1 deixa de funcionar, diz que não tem nenhuma macro activa, e dp fui verificar e realmente não encontro nenhuma macro para atribuir. Ficam só os restante botões azuis a fazer o que faziam antes. 😄 O que pretendia era que quando carrego pela primeira vez em qualquer botão dos 5, ele vai preencher a Coluna D na respectiva linha, de seguida também posso carregar em qq um dos 5 botões novamente, mas já vai preencher a coluna E na linha respectiva do botão, e por ai fora... Mais uma vez obrigado pela disponibilidade 😞 Cumps, Simões
acao Posted May 1, 2012 at 09:50 PM Report #452537 Posted May 1, 2012 at 09:50 PM Realmente não estou a conseguir meter o código a funcionar, já tentei seguir os passos que descreveu, mas quando o faço o Botão 1 deixa de funcionar, diz que não tem nenhuma macro activa, e dp fui verificar e realmente não encontro nenhuma macro para atribuir. Ficam só os restante botões azuis a fazer o que faziam antes. 😄 O que pretendia era que quando carrego pela primeira vez em qualquer botão dos 5, ele vai preencher a Coluna D na respectiva linha, de seguida também posso carregar em qq um dos 5 botões novamente, mas já vai preencher a coluna E na linha respectiva do botão, e por ai fora... Mais uma vez obrigado pela disponibilidade 😞 Cumps, Simões está aqui, fiz as primeiras 5 celulas do botao1, tenta agora o resto, senão conseguires diz. http://dl.dropbox.com/u/65238129/Portugal_a_programar/Trabalho_Og.xlsm cumps acao
acao Posted May 2, 2012 at 09:57 AM Report #452631 Posted May 2, 2012 at 09:57 AM boas trabalho todo feito. vê se é isto. http://dl.dropbox.com/u/65238129/Portugal_a_programar/Trabalho_OGgeral.xlsm cumps acao
ASimoes7 Posted May 2, 2012 at 11:06 AM Author Report #452646 Posted May 2, 2012 at 11:06 AM Boas. Sim era mesmo isso que precisava!!! Obrigado pela grande ajuda e por todo a disponibilidade em solucionar este meu problema. Tá impecável!! 😄 Cumprimentos, ASimões
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now