Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
pedrof144

Seleccionar a folha actual do excel

Recommended Posts

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

Share this post


Link to post
Share on other sites
rogi_cps

Tentou fazer um array para comparar com os nomes das planilhas??

Acho que seria uma boa....

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites
pedrof144

Bem!! parece-me que é isto:) Vou tentar aplicar....

Muito obrigado pela sua ajuda ;)

Abraço

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites

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
Sign in to follow this  

×

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.