Jump to content

Recommended Posts

Posted

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

Posted

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

Posted

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.. :)

Posted

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

Posted

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

Posted

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

Posted

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

Posted

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

Posted

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

Posted

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

Posted

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

Posted

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

Posted

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

Posted

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

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
×
×
  • Create New...

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.