Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

pedrof144

Seleccionar a folha actual do excel

Mensagens Recomendadas

pedrof144

olá pessoal,

estou com uma pequena duvida para criar nova folha...

imaginem que tenho as seguintes folha: x1,x2,x3,z1,z2,z3,y1,y2,y3

sempre que atingo o "limite" de uma preciso de iniciar outra e copiar determinados dados para a nova... O problema é que quando quero criar a x4 pretendo que fique antes da z1... a z4 antes da y1 e a y4 no final.

Criei butões de opção X Y e Z

Com o código que criei o programa copia-me as folhas todas :S... será que me podiam ajudar?

Aqui fica o código

Private Sub CommandButton1_Click()

If OptionButton1 = Enabled Then

Sheets(" X2").Select

ActiveSheet.GroupBoxes.Add(1131, 601.5, 44.25, 66.75).Select

    ActiveSheet.GroupBoxes.Add(1181.25, 601.5, 65.25, 32.25).Select

    ActiveSheet.GroupBoxes.Add(1250.25, 601.5, 30.75, 32.25).Select

    Sheets.Copy Before:=Sheets("z1")

   

    ElseIf OptionButton2 = Enabled Then

    Sheets("x2").Select

    ActiveSheet.GroupBoxes.Add(1131, 601.5, 44.25, 66.75).Select

    ActiveSheet.GroupBoxes.Add(1181.25, 601.5, 65.25, 32.25).Select

    ActiveSheet.GroupBoxes.Add(1250.25, 601.5, 30.75, 32.25).Select

    Sheets.Copy Before:=Sheets("y1")

   

    Else

   

    Sheets(" x2").Select

    Sheets.Copy After:=Sheets

   

    End If

   

End Sub

Private Sub OptionButton1_Click()

   

   

End Sub

Private Sub OptionButton2_Click()

End Sub

Private Sub OptionButton3_Click()

End Sub

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
rogi_cps

Obteve alguns resultado???

Tive outra ideia pra vc...  faça uma verificação com o comando plan1.name, caso ele seja y1, pede para inserir a nova planilha naquele ponto.

Ve se isso te ajuda...  caso precise de ajuda com a codificaçaõ.. de um toque!

flw

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pedrof144

Olá, obrigado pela resposta.

Não percebi a parte de fazer um array para comparar com o nome das planilhas... isso vai resultar em quê?

Como faço a verificação?

Eu não percebo grande coisa disto... O que fiz foi através de macros, que depois copiei o código e fui alterando.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
rogi_cps

bom vamos lá...  pode postar o arquivo para poder ajudar melhor??

quantas planilhas poderão ter no arquivo??  é ilimitado??

vou te ajudar com a codificação.

Aguardo sua resposta.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pedrof144

Aqui fica o link do arquivo http://rapidshare.com/files/385419648/Novo_Folha_de_C__lculo_do_Microsoft_Office_Excel2.xlsm.html

Acho que agora vai ficar mais fácil perceber.

Existem 3 tipos de planilhas SPC 0,6 -- SPC 1,8 -- SPC 5,0 que eu vou precisando de acrescentar quando ficam completas, sendo que depois terei SPC 0,6 (1), SPC 0,6 (2) e assim sucessivamente.

Com a introdução de VBA o processo não será muito mais simples... so o tentei fazer por interesse neste tipo de linguagem, por isso se achar que é um pouco complexo não há qualquer problema em abandonar a ideia... De qualquer das formas obrigado por tentar ajudar :)

Abraço

Pedro

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
rogi_cps

Existem planilhas que estão ocultas...  elas sempre permanecerão ocultas???  a visualização sempre começara da SPC 1,8(2)???  como é que vai funcionar isso??  Dá para ser feito em VBA sim, apenas preciso definir essas coisas, para que possa acertar a codificação para o planilha.

Aguardo Retorno.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
rogi_cps

Kra... desculpe a demora com a resposta... mas o estou com muito serviço, porém parece que consegui uma codificação para vc, porém como estou usando office 2k3 e o seu arquivo é 2k7, tive problemas com a conversão, o que não me permitiu ver todas as funções da sua planilha.

Porém eu adaptei o código, e creio que vc poderá adaptá0lo tb, para seu uso.  Esse código que estou passando vai diretamente no módulo 1 e vc pode chamar ele através de um botão, porém pode ser mudado isso.  Nesse modelo que te mando, ele chama um inputbox na qual vc descreve o começo  do nome da planilha.  Não coloquei nenhuma segurança, caso o nome venha a ser escrito errado, mas pelo que vi, vc vai querer chamar através de optionbox, o que no caso, esse tipo de redundância, não fará a menor diferença.  bom aí vai:

Public Sub GerarPlan()

'declara variáveis
Dim X, Y, Z
Dim Tabela
Dim TabelaCompleta As Variant
Dim NomePlan

'carrega var com a quantidade de plan existentes no livro
Z = ActiveWorkbook.Sheets.Count

'carrega inputbox para obter nome da plan
Tabela = InputBox("Digite o nome da planilha." & vbCr _
& "O nome da planilha de seguir os seguintes modelos:" & vbCr _
& "SPC 1,8" & vbCr _
& "SPC 5,0" & vbCr _
& "SPC 0,6", "Teste")

'define valores das var
X = 1
Y = 1

'Cria o nome completo da plan e será usado para acrescentar a nova plan
TabelaCompleta = Tabela + " " + "(" + CStr(X) + ")"

'nome da plan atual / existente
NomePlan = Worksheets(Y).Name

'loop para criação
Do

'usado para acertar o posicionamento no nome atual com a plan igual, devido a ter plan com
'nomes diferentes anteriomente a que é necessário o uso
    If NomePlan = TabelaCompleta Then
    
        Do
'somente vai criar, caso a plan atual seja diferente do que é desejado        
            If TabelaCompleta <> NomePlan Then
                Worksheets(Y).Select
                Worksheets.Add
                Worksheets(Y).Name = TabelaCompleta
                Exit Do
            Else
'soma var para o loop
                X = X + 1
                Y = Y + 1
'se a var de calculo da plan for maior que o némuro existente, vai criar a última plan e move-la
'para a posição final, saindo do loop
                If Y > Z Then
                    Worksheets(Y - 1).Select
                    Worksheets.Add
                    Worksheets(Y - 1).Name = Tabela + " " + "(" + CStr(X) + ")"
                    Worksheets(Y - 1).Move after:=Worksheets(Y)
                    Exit Do
                Else
'caso não, continua processo normalmente
                    NomePlan = Worksheets(Y).Name
                End If
                TabelaCompleta = Tabela + " " + "(" + CStr(X) + ")"
            End If
        Loop
        Exit Do
    Else
        Y = Y + 1
        NomePlan = Worksheets(Y).Name
    End If
Loop
End Sub

Creio que isso seja o que está querendo, e espero ter ajudado...  Qualquer coisa é só falar.

E mais uma vez, desculpe pela demora!

Flw!!  :D

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
rogi_cps

Espero que tenha conseguido.. não esqueça de alterar o modo de entrada de dados, para o modo que deseja na sua planilha.

Qualquer coisa... é só falar!

:D

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.