Ir ao conteúdo
  • Cadastre-se

RicardoVCM

Membro Júnior
  • Posts

    13
  • Cadastrado em

  • Última visita

Reputação

0
  1. Puts, durante o dia eu uso computadores que bloqueiam os principais hosts... No Faagle é só se cadastrar e por ele eu envio do celular mesmo.
  2. Foi mal, eu coloquei com o "Dim" mas no código já está sem. O que eu preciso é que após isto, ele abra o form relacionado aquele botão. Segue o Link: https://safe.faagle.com/file?file=amostra_20151117115647
  3. Osvaldo, dessa vez não resolveu. Coloquei conforme você falou e deu erro de compilação como "Qualificador Inválido". Os botões tem os nomes dos seus respectivos formulários, para prosseguir para o mesmo após a autenticação no form "Login". O macrod o botão ficou assim: Public NomeDoBotão As StringSub IdentificaBotão()Dim NomeDoBotão As String NomeDoBotão = (ActiveSheet.Buttons(Application.Caller).Name) NomeDoBotão.ShowEnd Sub Já tentei todas as possibilidades utilizando a declaração que você passou. Quando ele procede para o código do login, que eu coloquei como msgbox a string em questão, a caixa fica em branco.
  4. Osvaldo, sem comentários! Era exatamente isso que eu precisava, mas ao testar, me deparei com um problema. Esse é o meu código do botão "Entrar" da minha janela de Login: Private Sub EntrarLogin_Click() If User = "" Then MsgBox "Digite o nome de usuário." User.SetFocus Exit Sub Else If Password = "" Then MsgBox "Digite a sua senha." Password.SetFocus Exit Sub End IfEnd If ThisWorkbook.Worksheets("Usuários e Senhas").Visible = TrueThisWorkbook.Worksheets("Usuários e Senhas").ActivateRange("a1").SelectFor I = 2 To 10nome = Cells(I, 1).Valuesenha = CStr(Cells(I, 2).Value)If User = nome And Password = senha ThenThisWorkbook.Worksheets("Usuários e Senhas").Visible = FalseThisWorkbook.Worksheets("MENU").ActivateUnload Me MsgBox "Seja bem vindo " & nomeNomeBotão.showExit SubEnd IfNextIf Not User = nome And Password = senha ThenThisWorkbook.Worksheets("MENU").ActivateThisWorkbook.Worksheets("Usuários e Senhas").Visible = FalseMsgBox "Usuário ou senha incorretos!"User.Value = EmptyPassword.Value = EmptyUser.SetFocusExit SubEnd IfEnd Sub Tem como essa variável 'NomeBotão' ser importada do macro do botão?
  5. Olá pessoal, aqui estou eu com mais uma dúvida para vocês. Fiz uma busca rápida no fórum e não encontrei nada que solucionasse o meu problema. Tenho um projeto em Excel que tem diversos botões com nomes diferentes, porém todos eles devem abrir um formulário de autenticação que eu criei para validar o acesso às informações da planilha. Preciso de um macro que crie uma variável com o nome do botão que eu clicar, ou seja, apenas um macro para todos os botões, então ele ficaria mais ou menos assim: Sub Botões_onClick ()NomeDoBotão = (Macro que capture o nome do botão que foi clicado para iniciar este macro.)Login.show'Este é o nome do meu formulário de autenticação.'NomeDoBotão.showEnd Sub Vale ressaltar que sou iniciante em VBA, então pode haver algo que não faz sentido neste código, pois ele é apenas uma ideia e não um código aplicado. Obrigado!
  6. Estou usando uma adaptação deste macro, porém eu preciso que o mesmo salve o PDF em um diretório específico (por exemplo: "C:/Users/RicardoVCM/Desktop"), pois se não for feita essa definição, ele salva no último local onde salvei alguma coisa, e pode acabar perdendo o arquivo. Private Sub Gerar_PDF() Dim nomedopdf As String nomedopdf = Application.InputBox("Digite o nome para o arquivo PDF", "Gerar documento em PDF", Range("a1")) If nomedopdf = "Falso" Then Exit Sub With ActiveSheet .ExportAsFixedFormat _ Type:=xlTypePDF, _ Filename:=nomedopdf, _ OpenAfterPublish:=True End With End Sub OBS: Essa condição para o nomedopdf foi porque, quando eu clicava em "Cancelar" na InputBox, ele prosseguia com o macro e ainda assim salvava o PDF. Opa, desculpa a minha Newbisse, mas acabei de encontrar a solução para o meu problema. Podendo ser util para alguem, segue a solução: Private Sub Gerar_PDF() Dim nomedopdf As String nomedopdf = Application.InputBox("Digite o nome para o arquivo PDF", "Gerar documento em PDF", Range("a1")) If nomedopdf = "Falso" Then Exit Sub With ActiveSheet .ExportAsFixedFormat _ Type:=xlTypePDF, _ Filename:=nomedopdf, _ OpenAfterPublish:=True destino = "C:\Users\RicardoVCM\Desktop" End With End Sub
  7. Olá Osvaldo, muito obrigado pela sua atenção. Eu colei esse macro e quando executei, ele deu um erro "400" no Visual Basic e então quando fui conferir o resultado, ele somente criou uma cópia do arquivo, mas manteve as fórmulas matriciais e os Procvs, etc, além de não ter excluído os botões e nem renomeou a tabela. Acredito que esse erro tenha ocorrido no inicio do código e ele finalizou antes mesmo de entrar na "With". E outra coisa, é que eu uso o colar especial e o mesmo não pode ser feito para várias seleções, então eu acho que essa parte do "Set r" não vai funcionar, né?
  8. Amigos, boa tarde. Não domino completamente o VBA, portanto tive uma dúvida ao criar uma rotina para a minha planilha do Excel. Esse Macro tem a finalidade de criar uma folha de rosto, mantendo as memórias de cálculo da planilha e colando os valores que são pesquisados de algumas bases. Segue o macro que eu fiz: (É bem simples) Sub Copy_Paste()'' Este macro cria uma cópia da Folha de Rosto do recálculo para um novo documento, mantendo as memórias de cálculo.'' Sheets("Recálculo").Select Sheets("Recálculo").Copy ActiveSheet.Unprotect ActiveSheet.Shapes.Range(Array("Button 1")).Select ActiveSheet.Shapes.Range(Array("Button 1", "Button 2")).Select Selection.Delete Range("A1:K6").Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("C8:D22").Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("G8:G22").Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("I8:I22").Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("K8:M22").Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("O8:S22").Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("Y8:Y22").Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("AA8:AA22").Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("B37:D1994").Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=FalseEnd Sub Então, a planilha que eu fiz tem o nome do cliente na célula F3, e eu queria que esse macro renomeasse a Sheet com o nome do cliente (não um nome pré definido) e abrisse aquela Janela de "Salvar como", para que a pessoa escolha o nome que vai salvar o arquivo. Desde já agradeço a ajuda!
  9. Hahaha... eu pensei nisso... ficaria uns dias editando este código. Não estou com acesso ao arquivo agora, mas quando eu entrar eu vou testar e se der certo e coloco resolvido aqui.
  10. Não sei se posso usar o mesmo tópíco, mas vou tentar. rs Este código de segmentação busca por valores como "620", "527", "533", etc. Mas no documento que eu extraio do sistema, nem sempre tem uma linha com este código, vamos supor que tenha só "620", ou seja, não contém os outros, então o macro da erro "1004". Vocês podem me dizer se existe uma forma de coloca-lo para conferir se há aquele filtro antes dele selecionar? Como se fosse um código tipo: If exist "620" .SlicerItems("620").Selected = True Sei que este código não funciona, só dando uma ideia. Obrigado.
  11. Perfeito @Basole! Problema resolvido! E muito obrigado pelas boas vindas!
  12. Acabei de verificar que o código: ActiveCell.Cells.SelectActiveCell.Cells.EntireColumn.AutoFitActiveCell.Offset(12, 1).Range("A1").Select Que eu coloquei para ajustar o tamanho das células também não funcionou. Então podem desconsiderar estas linhas, obrigado.
  13. Olá, eu fiz um macro para corrigir os filtros de segmentações de dados em relatórios da minha empresa. Este macro está bem genérico e simples, pois além de eu não dominar o VBA, eu preciso que este macro funcione em outros relatórios parecidos. Eu queria colocar um aviso na tela, se possível no meio da tabela, quando o macro está sendo executado. Não precisa ter barra de progresso, nem nada, só um "Please Wait..." para as pessoas saberem que o macro ainda está em execução. Eu levei uma surra com uma "Userform" que funcionava em uma planilha em branco, mas quando eu tentava adaptar para o meu macro, simplesmente nao aparecia nenhuma mensagem. Segue o meu macro: Sub Filtros_Automáticos() Range("A1").Select ActiveWorkbook.RefreshAll ActiveWorkbook.SlicerCaches("SegmentaçãodeDados_Último_Status"). _ ClearManualFilter With ActiveWorkbook.SlicerCaches("SegmentaçãodeDados_Último_Status") .SlicerItems("520").Selected = False .SlicerItems("522").Selected = False .SlicerItems("524").Selected = False .SlicerItems("527").Selected = False .SlicerItems("533").Selected = False .SlicerItems("534").Selected = False .SlicerItems("535").Selected = False .SlicerItems("545").Selected = False .SlicerItems("545").Selected = False .SlicerItems("595").Selected = False .SlicerItems("599").Selected = False .SlicerItems("620").Selected = True .SlicerItems("900").Selected = False .SlicerItems("902").Selected = False .SlicerItems("(vazio)").Selected = False End With ActiveWorkbook.SlicerCaches("SegmentaçãodeDados_Último_Status1"). _ ClearManualFilter With ActiveWorkbook.SlicerCaches("SegmentaçãodeDados_Último_Status1") .SlicerItems("520").Selected = False .SlicerItems("522").Selected = False .SlicerItems("524").Selected = False .SlicerItems("527").Selected = False .SlicerItems("533").Selected = True .SlicerItems("534").Selected = True .SlicerItems("535").Selected = False .SlicerItems("545").Selected = False .SlicerItems("545").Selected = False .SlicerItems("595").Selected = False .SlicerItems("599").Selected = False .SlicerItems("620").Selected = False .SlicerItems("900").Selected = False .SlicerItems("902").Selected = False .SlicerItems("(vazio)").Selected = False End With ActiveWorkbook.SlicerCaches("SegmentaçãodeDados_Último_Status2"). _ ClearManualFilter With ActiveWorkbook.SlicerCaches("SegmentaçãodeDados_Último_Status2") .SlicerItems("520").Selected = False .SlicerItems("522").Selected = False .SlicerItems("524").Selected = False .SlicerItems("527").Selected = True .SlicerItems("533").Selected = False .SlicerItems("534").Selected = False .SlicerItems("535").Selected = False .SlicerItems("545").Selected = False .SlicerItems("545").Selected = False .SlicerItems("595").Selected = False .SlicerItems("599").Selected = False .SlicerItems("620").Selected = False .SlicerItems("900").Selected = False .SlicerItems("902").Selected = False .SlicerItems("(vazio)").Selected = False End With ActiveWorkbook.SlicerCaches("SegmentaçãodeDados_Último_Status3"). _ ClearManualFilter With ActiveWorkbook.SlicerCaches("SegmentaçãodeDados_Último_Status3") End With ActiveWorkbook.SlicerCaches("SegmentaçãodeDados_Último_Status4"). _ ClearManualFilter With ActiveWorkbook.SlicerCaches("SegmentaçãodeDados_Último_Status4") .SlicerItems("520").Selected = True .SlicerItems("522").Selected = True .SlicerItems("524").Selected = True .SlicerItems("527").Selected = True .SlicerItems("533").Selected = True .SlicerItems("534").Selected = True .SlicerItems("535").Selected = True .SlicerItems("545").Selected = True .SlicerItems("545").Selected = True .SlicerItems("595").Selected = True .SlicerItems("599").Selected = True .SlicerItems("620").Selected = False .SlicerItems("900").Selected = True .SlicerItems("902").Selected = True .SlicerItems("(vazio)").Selected = True End With ActiveCell.Cells.Select ActiveCell.Cells.EntireColumn.AutoFit ActiveCell.Offset(12, 1).Range("A1").SelectEnd Sub E este é o macro que eu encontrei e que tentei adaptar: Sub DisplayTextMsgBox() ' Select the first worksheet. Worksheets(1).Select ' Create a text box on the active worksheet. ActiveSheet.TextBoxes.Add(215, 195, 91.5, 60).Select ' Store the name of Worksheet in variable StoreWSNM. StoreWSNM = ActiveSheet.Name ' Store the name of Text Box in variable StoreNM StoreNM = Selection.Name ' Set the Font and Border properties of the text box. With Selection With Selection.Characters.Font .Name = "Arial" .FontStyle = "Bold" .Size = 20 End With With Selection.Border .LineStyle = xlContinuous .ColorIndex = 1 .Weight = xlThick End With 'Set round corners for the text box. .RoundedCorners = True 'Set message text color to black. .Interior.ColorIndex = 15 'Assign message text to the text box. .Characters.Text = "Please Wait..." End With ' Actual macro that will run while Please Wait... ' message is being displayed. Second_Macro ' Makes sure the proper Worksheet is selected. Worksheets(StoreWSNM).Select ' Makes sure the proper text box is selected. ActiveSheet.TextBoxes(StoreNM).Select ' Deletes the Please Wait... text box. Selection.Delete End Sub ' Note that the Please Wait... text box will be displayed ' until this macro has completed. Sub Second_Macro() ' Select A1 and copies it. Range("a1").Select ActiveCell.Copy ' Set loop to occur 5 times. For LoopIt = 1 To 5 ' Move down one row and paste the contents of A1. ActiveCell.Offset(1, 0).Select ActiveSheet.Paste ' Waits one second before looping. ' NOTE: This is only done for demonstration purposes to ' slow down the macro so the Please Wait text box will ' be displayed for at least 5 seconds. Application.Wait Now + TimeValue("00:00:01") Next End Sub Este modelo é exatamente o que eu queria, mas não consegui adaptar. Alguem pode me ajudar?

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...