none
DÚVIDA - Código para manipular os "OPPTION BUTTOM" RRS feed

  • Pergunta

  • Bom dia,

    então, com o meu código pronto, percebi que faltava algo. Trabalhamos com suas planilhas de referencia (RM-127 e RM-128). O que eu gostaria de fazer é o seguinte:

    Ao deixar a "opt127" (optionbuttom) ATIVADA (true) um WORKBOOK externo - cujo nome é "RM-Modelo.xlsm" (que vai estar fechada) vai ser ativada e uma WORKSHHEET dentro do workbool cujo nome será "RM-127" também será ativada. O usuário vai clicar no botão INSERIR DADOS e estes dados serão inseridos nas pastas ativadas pelo "opt127".

    E se ele clicar no "opt128", o mesmo WORKBOOK será ativado, porém uma WORKSHEET diferente, desta vez o nome será "RM-128", será ativada. E ao clicar no botão inserir dados, a planilha ativada pelo "opt128" será preenchida.

    NOTA: Toda vez que o usuário fechar o "software" os dados tem que ser salvos no WORKBOOK ("RM-Modelo.xslm"), para quando ele re-abrir ele pode continuar inserindo os dados de onde parou.

    Mas a dúvida principal é como ficaria o código para ativar as planilhas do ("RM-Modelo.xlsm") de acordo com a opção escolhida no OpptionButtom.

    A planilha segue no link.

    http://ge.tt/9ecJE8S/v/0

    Valeu galera...

    quinta-feira, 22 de novembro de 2012 12:12

Respostas

  • Crie um formulário com dois botões de opção (OptionButton1 e OptionButton2), um botão de comando (CommandButton1) e adapte o código abaixo de acordo com suas necessidades:

    Private Sub CommandButton1_Click()
        Dim wb As Workbook
        Dim sWorkbookName As String
        Dim sWorkbookPath As String
        
        Select Case True
            Case OptionButton1
                sWorkbookName = "RM-127.xlsx"
            Case OptionButton2
                sWorkbookName = "RM-128.xlsx"
        End Select
        sWorkbookPath = "c:\temp\" & sWorkbookName
        
        If fPastaTrabalhoAberta(sWorkbookName) Then
            Set wb = Workbooks(sWorkbookName)
        Else
            Set wb = Workbooks.Open(sWorkbookPath)
        End If
        
        wb.Sheets("Plan1").Range("A1") = "Populando célula A1 da planilha Plan1 da pasta de trabalho " & wb.Name
        
        'Se que quiser fechar a pasta de trabalho, use o comando abaixo:
        wb.Close SaveChanges:=True
                
    End Sub
    
    Function fPastaTrabalhoAberta(s As String) As Boolean
    
        Dim wb As Workbook
    
        On Error Resume Next
        Set wb = Workbooks(s)
        On Error GoTo 0
        
        If wb Is Nothing Then
            fPastaTrabalhoAberta = False
        Else
            fPastaTrabalhoAberta = True
        End If
    
    End Function
    


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    segunda-feira, 26 de novembro de 2012 21:29
    Moderador

Todas as Respostas

  • E ai pessoal, alguém? Rs.

    A dúvida ficou clara?

    Obrigado

    sexta-feira, 23 de novembro de 2012 00:01
  • Euder, você enviou o sistema inteiro. Há vários formulários e blocos de código e então não entendi nada. O formulário que deverá fazer esse filtro já está presente no exemplo que disponibilizou?


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br


    sábado, 24 de novembro de 2012 23:09
    Moderador
  • Olá Benzadeus. Está sim. 

    o userform chama "frmTela" lá vai ter dois botões "TUSCANY_127 E TUSCANY_128". Quando eu clicar no 127 ele tem que selecionar a planilha RM-127 e quando eu clicar no 128 ele tem que selecionar RM-128. Entendeu?

    Mas se você puder me ajudar no geral já está ótimo. Eu queria saber como eu faço para fazer referencia a uma planilha externa. Por exemplo, eu tenho uma planilha que chama "RM-Modelo.xlsm" em uma pasta no meu computador, aí no meu código eu quero fazer referência a ela, quero ativa-la. Tem como?

    Obrigaod

    domingo, 25 de novembro de 2012 09:53
  • Crie um formulário com dois botões de opção (OptionButton1 e OptionButton2), um botão de comando (CommandButton1) e adapte o código abaixo de acordo com suas necessidades:

    Private Sub CommandButton1_Click()
        Dim wb As Workbook
        Dim sWorkbookName As String
        Dim sWorkbookPath As String
        
        Select Case True
            Case OptionButton1
                sWorkbookName = "RM-127.xlsx"
            Case OptionButton2
                sWorkbookName = "RM-128.xlsx"
        End Select
        sWorkbookPath = "c:\temp\" & sWorkbookName
        
        If fPastaTrabalhoAberta(sWorkbookName) Then
            Set wb = Workbooks(sWorkbookName)
        Else
            Set wb = Workbooks.Open(sWorkbookPath)
        End If
        
        wb.Sheets("Plan1").Range("A1") = "Populando célula A1 da planilha Plan1 da pasta de trabalho " & wb.Name
        
        'Se que quiser fechar a pasta de trabalho, use o comando abaixo:
        wb.Close SaveChanges:=True
                
    End Sub
    
    Function fPastaTrabalhoAberta(s As String) As Boolean
    
        Dim wb As Workbook
    
        On Error Resume Next
        Set wb = Workbooks(s)
        On Error GoTo 0
        
        If wb Is Nothing Then
            fPastaTrabalhoAberta = False
        Else
            fPastaTrabalhoAberta = True
        End If
    
    End Function
    


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    segunda-feira, 26 de novembro de 2012 21:29
    Moderador