Notifications
Clear all

gravar dados em num intervalo de celulas

12 Posts
4 Usuários
0 Reactions
1,889 Visualizações
(@pedro_m)
Posts: 56
Trusted Member
Topic starter
 

boa noite.
precisava de ajuda.
tenho um formulario em que mediante um valor da combobox faça gravar dados numa selecao de celulas da folha.
eu explico melhor
tenho uma folha em que tenho 15 linhas para gravar os dados dos cargos superiores,20 linhas para chefes, e 30 para os contratados.
mas as vezes nao temos os dados completos, na empresa pode so estar 5 cargos superiores, 14 chefes e 20 contratados.
eu tenho uma combobox e ao selecionar ex: cargos superiores ele iria procurar a primeira linha em branco mas só entre as celulas A2 a A16
se fosse selecionado Chefes, iria gravar na mesma folha mas a primeira linha em branco do intervalo A22 a A42 etc.
é possivel?

a ideia é para nao estar a separar por diferentes panilhas, atraves da combobox ir gravar nas linhas determinadas para eles.
mais ou menos assim
select case combobox1.value
case is ="Cargos Superiores"
ThisWorkbook.Sheets("folha1").Select(o que queria era o resto de um codigo que encontra-se a primeira linha vazia da linha 3 á 15,e gravasse nessa linha )

 
Postado : 12/04/2016 3:13 pm
(@mprudencio)
Posts: 2749
Famed Member
 

Como vc nao disponibilizou o arquivo, vai minha sugestao colocar cada grupo em uma coluna.

Assim vc nao tera problemas da sequencia da linha que deve gravar.

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 12/04/2016 3:52 pm
(@pedro_m)
Posts: 56
Trusted Member
Topic starter
 

MPrudencio,
o formulario é de cadastro, e tem uma combobox, que faz(ou pretendo)fazer com que separe os diferentes cadastros.
o valor digitado na combobox é que iria dizer em que linha seria gravada o registo.
eu tenho codigo para separar por panilhas, mas queria simplificar isso e colocar a gravacao so numa panilha(exemplo,combobo1= 1 gravacao en A2 a A15 , combobox1=2 gravacao A16 a A40 ,combpbox=3 gravacao A41 a A80.
todos os cadastros que eu colocasse na combobox1 iriam gravar na primeira linha vazia das celulas A2 a A15

 
Postado : 12/04/2016 4:05 pm
(@mprudencio)
Posts: 2749
Famed Member
 

Como eu disse ao inves de separa os intervalos por linha faça por coluna

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 12/04/2016 4:59 pm
(@pedro_m)
Posts: 56
Trusted Member
Topic starter
 

bom dia amigo MPrudencio.
não consigo fazer isso. pois nas colunas tenho a gravacao de cada dad, nome/numero de identificacao na empresa/data em que iniciou funcoes/categoria etc etc.
cada novo cadastro vai preencher uma linha e varias colunas dessa mesma linha

 
Postado : 13/04/2016 2:30 am
(@osvaldomp)
Posts: 858
Prominent Member
 

Veja se ajuda.

Select Case ComboBox1.Value
  Case "Cargos Superiores": Sheets("Folha1").[A15].End(3)(2) = "textodesejado"
  ...
  ...
 End Select

Osvaldo

 
Postado : 13/04/2016 4:25 am
(@pedro_m)
Posts: 56
Trusted Member
Topic starter
 

Osvaldomp boa noite.
nao percebi o seu codigo.

eu tenho isto,mas falta limitar as linhas para ser X para cada posto do funcionario

Select Case cmbposto.Value 'Selecione de acordo o valor de ComboBox

    Case Is = "Cargos Superiores"
   ThisWorkbook.Sheets("folha1").Select

      
    Case Is = "chefes"
      ThisWorkbook.Sheets("folha1").Select

      
    Case Is = "Contratados"
      ThisWorkbook.Sheets("folha1").Select
   
      
    Case Is = "CIVIL"
      ThisWorkbook.Sheets("Civis Militarizados").Select
      
    End Select
    
 Range("A2").Select
    
  Do
If Not (IsEmpty(ActiveCell)) Then
ActiveCell.Offset(1, 0).Select
End If
Loop Until IsEmpty(ActiveCell) = True
'Carregar os dados digitados nas caixas de texto para a planilha
ActiveCell.Value = txtapelidos.Value

falta colocar alguma coisa para me selecionar a linha vazia referente a cada posto do funcionario.
para ser mais facil, pode ser 30linhas para cargos superiores, 30 linhas para chefes e 30 linhas para contratados

exemplo, colocava na combobox "chefes" e ao gravar iria selecionar a primeira linha vazia no intervalo da linha 31 á 60
se colocasse "contratados,iria procurar a linha vazia no intervalo 61 a 90

 
Postado : 13/04/2016 3:34 pm
(@osvaldomp)
Posts: 858
Prominent Member
 

Olá, Pedro.
Veja se é isso. O código abaixo vai inserir um texto na primeira célula vazia.

Select Case cmbposto.Value 'inserir de acordo o valor de ComboBox
 Case "Cargos Superiores": Sheets("Folha1").[A30].End(3)(2) = "texto1"
 Case "Chefes": Sheets("Folha1").[A60].End(3)(2) = "texto2"
 Case "Contratados": Sheets("Folha1").[A90].End(3)(2) = "texto3"
End Select

No entanto se você quer apenas "selecionar" aquela célula então substitua = "textoX" por .Select

Osvaldo

 
Postado : 13/04/2016 4:05 pm
(@pedro_m)
Posts: 56
Trusted Member
Topic starter
 

amigos consegui com este codigo

Select Case combobox1.Value 'Selecione de acordo o valor de ComboBox

    Case Is = "Chefes"
   ThisWorkbook.Sheets("folha1").Select
   Range("A2:A10").Select
 Case Is = "Contratados"
   ThisWorkbook.Sheets("folha1").Select
   Range("A12:A40").Select

.

agora nao tenho sei é como adaptar o butao que tenho de pesquisa, para fazer pesquisa nas linhas desejadas.

Dim nameSheet As String    '----> Adicionei esta variável

If txtpesquisar.Text = "" Then
     MsgBox "Digite o Apelido do Militar"
            txtpesquisar.SetFocus
            Exit Sub
End If
     
'------> Adicionei os testes em cada OptionButton, onde irá  <------
'------> assumir o nome da aba, conforme opção selecionada. <------
If Me.pesquisaCrgossuperiores.Value = True Then nameSheet = "folha1"
range("A2:A19").Select
If Me.pesquisachefes.Value = True Then nameSheet = "folha1"
Range("A21:A39").Select
If Me.pesquisacontratados.Value = True Then nameSheet = "folha1"
Range("A41:A79").Select

     
With Worksheets("folha1").Range("a:a")   '----> Alterei o nome da Sheet pela Variável (nameSheet)
Set c = .Find(txtpesquisar.Value, LookIn:=xlValues, LookAt:=xlPart)

If Not c Is Nothing Then

    
txtpesquisar.Value = c.Value
txtapelidos.Value = c.Offset(0, 0).Value
txtnomes.Value = c.Offset(0, 2).Value

mas ele esta a fazer a pesquisa na folha toda e nao nas selecoes de linhas que eu quero

 
Postado : 17/04/2016 8:42 am
(@osvaldomp)
Posts: 858
Prominent Member
 

Se alguém quiser tentar ajudar fique à vontade.I'm out!

Osvaldo

 
Postado : 17/04/2016 8:50 am
(@edcronos2)
Posts: 346
Reputable Member
 

pedro_m
poste um exemplo de seu arquivo e as macros que já tem
coloque também um exemplo de como vc quer

fica difícil ficar ajudando no chutômetro mesmo para os mais experientes como o Osvaldo

 
Postado : 17/04/2016 12:03 pm
(@pedro_m)
Posts: 56
Trusted Member
Topic starter
 

Osvaldomp ,obrigado na mesma por tudo

 
Postado : 18/04/2016 1:04 pm