Ir ao conteúdo

Nilton Cézar

Membro Pleno
  • Posts

    113
  • Cadastrado em

  • Última visita

Tudo que Nilton Cézar postou

  1. Parece que falei cedo demais! Pretendia apenas usar o gravador de macro, para deletar as informações do Relatório, mas percebi que isso não funciona com a Tabela do citado Relatório. É que a tabela pode assumir várias tamanhos. Ou seja, pode ter poucas linhas ou várias linhas. Vai depender da quantidade de dados inseridos. Assim, uma macro que delete até o final da guia não faz sentido! Pois bem, montei essa macro da internet, a fim de deletar as informações da tabela: Sub deletar() Dim Resposta As Integer Resposta = MsgBox("Deseja realmente exluir as informações?", VBA.vbYesNo, "Excluir!") If Resposta <> VBA.vbYes Then Exit Sub Else Range("TabelaRelatórioAudiência").EntireRow.Delete End If End Sub Contudo, essa macro deu pane total no projeto. Primeiro, os ícones de inserir última linha e excluir última linha ficaram sem as macros anteriormente atribuídas. Após restabelecer as macros acima, quando clico no ícone de inserir última linha, o cursor vai para a última linha da guia (1.048.576). Além do mais, ela está excluindo também todas as linhas da tabela (exceto a primeira). Era para excluir somente as informações constantes da tabela. Sendo assim, gostaria da ajuda, para tentar criar essa macro, para deletar apenas as informações da tabela, com uma msgbox de aviso de exclusão. Ao final, pretendo criar uma macro para chamar 1) a macro acima solicitada e 2) a macro de deletar dados fora da tabela obtida por gravação. Agradeço a ajuda! Relatório de Audiências-Em elaboração (Salvo automaticamente) - TESTE-OCULTAR LINHAS.rar
  2. Midori, obrigado pelas explicações. Encontrei aquela macro desbloqueio/bloqueio da internet. Para aproveitar a postagem anterior, esqueci de perguntar se a macro acima está com o código correto. Mas, enfim. Quando eu tiver oportunidade, irei fazer as configurações do Relatório de Audiência. Espero que não tenha mais dúvidas ou seja necessário algum incremento de automoção. Estando tudo concluído, colocarei tópico como resolvido. Obrigado, mais uma vez, Midori.
  3. Midori, confesso que não entendi as explicações. Acho que não expliquei bem. E creio que não fui feliz no exemplo. Vejamos. A tabela do meu projeto ficará desbloqueada, bem como todas as células abaixo dela, já que a tabela poderá se estender por várias linhas abaixo. Assim, pretendo deixar bloqueada apenas as outras células, como algumas células que ficarão acima da tabela, pois, quanto a estas, não permitirei edição, como, por exemplo, onde fica os nomes PROCESSO, AUTOR(A), DER, INDEFERIMENTO, etc, conforme imagem em anexo. Dessa forma, as macros vinculadas à tabela NÃO necessitarão de códigos para desbloquear/bloquear a planilha, a exemplo das macros INSERIR ÚLTIMA LINHA, EXCLUIR VÁRIAS LINHAS, REDIMENCINAR LINHAS. Assim, acho que apenas a macro de deletar informações inseridas no Relatório e o evento Change (para ocultar/reexibir linhas) precisarão da macro para desbloquear/bloquear planilha. Com base nisso, vou utilizar, como exemplo, para melhor compreensão, o evento Change, acima citado (coloquei em azul os códigos para desbloquear/bloquear). Vejamos: 'Função para pesquisar o intervalo com base no benefício e aplicar no EVENTO CHANGE para ocultar/reexibir linhas. Function BuscaIntervalo(Beneficio As String) As Variant Dim Intervalo As Variant On Error Resume Next Intervalo = Replace(WorksheetFunction.VLookup( _ Beneficio, Sheets("Benefício").[A:B], 2, 0), ";", ":") If Err.Number <> 0 Then Intervalo = False End If BuscaIntervalo = Intervalo End Function _________________________________________________ Private Sub Worksheet_Change(ByVal Target As Range) 'Variável para desbloquear a planilha. Dim pswStr As String 'Update by ExtendOffice 20181106 pswStr = "123456" On Error Resume Next Application.ScreenUpdating = False ActiveSheet.Unprotect Password:=pswStr If Target.Address = "$D$13" Then Dim Intervalo As Variant Range("24:75").EntireRow.Hidden = True Intervalo = BuscaIntervalo(Target.Value) 'De acordo cm a condição IF abaixo, a macro não vai exibir nenhuma linha quando o valor do benefício na coluna B for igual a N (de nenhuma linha). If UCase(Intervalo) <> "N" Then 'Conforme a condição IF a seguir, as linhas abaixo serão exibidas para qualquer texto que não tenha cadastro na planilha Benefício. If Intervalo <> False Then Range(Intervalo).EntireRow.Hidden = False Else Range("73:75").EntireRow.Hidden = False End If End If End If 'Após, a planilha volta a ser bloqueada automaticamente. 'ActiveSheet.Protect Password:=pswStr, DrawingObjects:=False, _ Contents:=True, Scenarios:=False, _ AllowFormattingCells:=True, AllowFormattingColumns:=True, _ AllowFormattingRows:=True, AllowInsertingColumns:=True, _ AllowInsertingRows:=True, AllowInsertingHyperlinks:=True, _ AllowDeletingColumns:=True, AllowDeletingRows:=True, _ AllowSorting:=True, AllowFiltering:=True, _ AllowUsingPivotTables:=True End Sub Acho que agora ficou melhor de entender. Sendo assim, os códigos de DESBLOQUEIO ficam ANTES da macro principal, e os de BLOQUEIO, logo APÓS, conforme acima mostrado? Agradeço pelas orientações.
  4. Midori, ficou muito bom! E o interessante é que o ajuste ficou personalizado. Ou seja, cada linha é redimensionada conforme o tamanho do texto na célula. Muito obrigado pela macro. Estou com uma dúvida. Meu projeto contêm células bloqueadas. Mas, para executar algumas macros, será necessário o desbloqueio de algumas células. Coloquei como exemplo uma macro com linhas de comando de desbloqueio/bloqueio de células (em azul). Pois bem, minha dúvida é apenas quanto à montagem da macro. Nesse caso, os códigos de DESBLOQUEIO ficam ANTES da macro principal, e os de BLOQUEIO, logo APÓS, conforme a descrição abaixo? Sub RelAudRELATÓRIO_InserirLinha() 'Variável para desbloquear a planilha. Dim pswStr As String 'Update by ExtendOffice 20181106 pswStr = "123456" On Error Resume Next Application.ScreenUpdating = False ActiveSheet.Unprotect Password:=pswStr ‘Macro para inserir linha Range("TabelaRelatório").ListObject.ListRows.Add AlwaysInsert:=True 'Após, a planilha volta a ser bloqueada automaticamente. 'ActiveSheet.Protect Password:=pswStr, DrawingObjects:=False, _ Contents:=True, Scenarios:=False, _ AllowFormattingCells:=True, AllowFormattingColumns:=True, _ AllowFormattingRows:=True, AllowInsertingColumns:=True, _ AllowInsertingRows:=True, AllowInsertingHyperlinks:=True, _ AllowDeletingColumns:=True, AllowDeletingRows:=True, _ AllowSorting:=True, AllowFiltering:=True, _ AllowUsingPivotTables:=True End Sub Agradeço se puder me tirar essa dúvida.
  5. Olá, pessoal. Como eu havia postado anteriormente, estava buscando uma macro para deixar todo o texto visível na célula da Tabela do meu projeto. Para isso, encontrei uma macro, para fazer o ajuste da altura das linhas na Tabela; porém não deu certo. Vejamos: 'Ajuste automático de linha Public Sub Redimencioanamento_linha_automático() Rows(Range("TabelaPensãoPorMorte")).AutoFit End Sub Não sei o que deu errado. A propósito, caso necessário, a descrição da macro acima está bem detalhada na postagem anterior. E, na postagem de quinta (29/04), enviei, em anexo, uma cópia do meu projeto. Sendo assim, gostaria da ajuda dos colegas, para criar uma macro, para tentar deixar visível todo conteúdo nas células, ajustando automaticamente as respectivas linhas, para que o texto fiquem sem cortes na tabela "TabelaPensãoPorMorte". Agradeço quem puder me ajudar.
  6. Deu certo! E pensar que eu vinha ocultando manualmente antes! Parece que as linhas de código do evento Change foram apenas invertidas. Ficando agora o IF e o Dim antes de Range("20:65").EntireRow.Hidden = True. Agora está funcionado perfeitamente. _______________________________________________________________________ Pessoal, estou com um PROBLEMINHA quanto à visibilidade do texto dentro da linha (ou célula). Vou explicar. Quando o TEXTO escolhido/digitado é GRANDE, todo seu conteúdo NÃO fica visível na respectiva célula da tabela. É possível perceber isso no arquivo enviado anteriormente. Já apliquei o recurso de Quebra de Texto Automática, na célula (clicando em Página Inicial > ícone Quebrar Texto Automaticamente); PORÉM o texto não se ajusta na célula. Acredito que o formato Tabela não permite esse alinhamento automático do texto à célula. Manualmente é possível fazer esse alinhamento. Basta arrastar a altura da linha correspondente até que o texto caiba completamente dentro da célula, sem cortes. Mas, NÃO gostaria de deixar visíveis os números das linhas. Além disso, uma macro seria o ideal para um usuário leigo fazer esse ajuste. Portanto, solicito a ajuda dos colegas, para tentar deixar visível todo conteúdo nas células, ajustando automaticamente as respectivas linhas, para que o texto fiquem sem cortes. A propósito, creio que, melhor do que aplicar a uma linha individualmente, mais interessante seria fazer o ajuste automático de TODAS as linhas da tabela (é só um palpite!). Nesse caso, seria uma macro vinculada apenas à tabela. Desde já, agradeço à ajuda.
  7. Olá, pessoal! Estou tentando concluir um RELATÓRIO DE AUDIÊNCIA baseado em textos pré-definidos e que contém uma tabela (não intervalo de dados). Infelizmente, sou muito leigo em VBA. Por isso, peço ajuda dos colegas. Pois bem, nesse projeto, pretendo OCULTAR linhas e, posteriormente, reexibi-las, para adicionar informações específicas, após escolher o tipo benefício/ação correspondente, listado numa validação de dados, inserida em uma determinada célula. Para isso, já tenho uma macro, já com os devidos ajustes (mas, nada impede que outra seja sugerida, para fazer a mesma operação acima). Ela foi elaborada da seguinte forma: No projeto, foi criada uma nova Aba com o nome "Benefício". Na coluna A dessa planilha, contém o tipo de benefício; e na coluna B, o intervalo de linhas, no formato: Inicio;Fim. Exemplo: Aposentadoria por invalidez urbana - 21;25 Auxílio-reclusão urbano - 63;65. Dessa forma, a coluna B da planilha Benefício vai informar o intervalo das linhas e, em seguida, é só pesquisar o intervalo com base no benefício selecionado. Detalhe: para os benefícios cuja seleção não deve aparecer nenhuma linha, foi colocada a letra “N” (de nenhuma linha), na coluna B da planilha Benefício. Assim, para isso foi criada a função abaixo: Function BuscaIntervalo(Beneficio As String) As Variant Dim Intervalo As Variant On Error Resume Next Intervalo = Replace(WorksheetFunction.VLookup( _ Beneficio, Sheets("Benefício").[A:B], 2, 0), ";", ":") If Err.Number <> 0 Then Intervalo = False End If BuscaIntervalo = Intervalo End Function Logo após, é só chamar a função no evento Change da planilha, p.ex.: Private Sub Worksheet_Change(ByVal Target As Range) Range("20:65").EntireRow.Hidden = True If Target.Address = "$D$9" Then Dim Intervalo As Variant Intervalo = BuscaIntervalo(Target.Value) If UCase(Intervalo) <> "N" Then If Intervalo <> False Then Range(Intervalo).EntireRow.Hidden = False Else Range("63:65").EntireRow.Hidden = False End If End If End If End Sub Portanto, com base nos códigos acima, é esperado o seguinte: As linhas 63 a 65 serão exibidas para qualquer texto que não tenha cadastro na planilha Benefício. A macro não vai exibir nenhuma linha, quando o valor do benefício, na coluna B, for igual a letra N. Nos demais casos, ela vai exibir determinado intervalo de linhas, segundo o benefício escolhido. Se necessário, é possível ver todas as informações sobre essa macro, postadas a partir de 7 de abril, nesse mesmo tópico. Então, vejamos. As instruções acima deram certo EM PARTE. Vou explicar. Por exemplo, quando selecione o benefício de Pensão por Morte Rural, aparecem as linhas 27 a 49, como previsto pelo evento Change. Contudo, quando vou digitar as informações específicas para esse benefício, nas linhas reexibidas, as linhas recolhem (ou seja, voltam a ficar ocultas), assumindo a condição esperada para os benefícios do Grupo 1, aqueles que tem a letra N e que não aparecem linhas. Porém, não era para fazer isso, ou seja, era para ficar com as linhas 27 a 49 exibidas (e disponíveis para serem inseridas informações). Curiosamente, isso também ocorre, quando deleto dados em célula, em qualquer parte da planilha. Até mesmo deletando células vazias. Para melhor compreensão dos fatos, estou enviando uma cópia do meu projeto em anexo. Desculpe a quantidade de informações. Mas, acho que elas são úteis para explicar o funcionamento da macro e descrever o problema apresentado. Assim, solicito a ajuda dos colegas, para fazer o ajuste nessa macro ou, caso necessário, podem até sugerir outras macros, para OCULTAR/REEXIBIR linhas no projeto. Ficaria muito grato. Relatório de Audiências-Em elaboração (Salvo automaticamente) - TESTE-OCULTAR LINHAS.rar
  8. Boa noite, Midori. Infelizmente, vejo que você não pode mais me ajudar. Mas, gostaria de te agradecer. Na verdade, não tenho palavras para te agradecer. Se não fosse por você, não teria feito quase nada do projeto. Pois bem, vou encerrar este tópico. Mas, continuarei aqui, para tentar concluir nosso projeito. Muito obrigado! Você é !
  9. Bom dia, Midori. Midori, ainda estou precisando de ajuda no projeto. Você ainda pode me ajudar? Por favor, informe-me aqui. Caso não responda, eu vou entender que você não poderá mais me acompanhar. Até amanhã.
  10. Bom dia, Midori. Passei o final de semana revendo as mensagens do tópico e quebrando cabeça montando as macros selecionadas, no projeto, e fazendo exaustivos testes. Midori, por favor, se possível, gostaria de uma macro para FECHAR E SALVAR AUTOMATICAMENTE todo o projeto (com todas as guias). Isso deixaria o projeto com cara de aplicativo. _______________________________________________________________________ Pois bem, estou com um PROBLEMINHA no ajuste dos textos pré-definidos às células. Vou explicar. Quando o TEXTO escolhido é GRANDE, todo seu conteúdo NÃO fica visível na respectiva célula da tabela. Acho que você já pôde perceber no arquivo que te enviei anteriormente. Já apliquei o recurso de Quebra de Texto Automática, na célula (clicando em Página Inicial > ícone Quebrar Texto Automaticamente), porém o texto não se ajusta na célula. Acredito que o formato tabela NÃO permite esse alinhamento automático do texto à célula. Manualmente é possível fazer esse alinhamento arrastando a altura da linha correspondente para encontrar o melhor ajuste. Contudo, confesso que não gostaria de deixar visível os números das linhas e as letras das colunas. Além disso, uma macro iria ser bem interessante para um usuário leigo fazer isso, bem como o projeto fica mais elegante. Diante disso, Midori, teria uma macro capaz de deixar visível todo conteúdo nas células, ajustando automaticamente as respectivas linhas. Nesse caso, seria uma macro vinculada apenas à tabela. Se possível, Midori, creio que, melhor do que aplicar a uma linha individualmente, mais interessante seria fazer o ajuste automático de TODAS as linhas da tabela. Confesso que já estou cansado. Não vejo a hora de concluir esse projeto (acredito que você também não vê a hora de se livre de minhas importunações!). Já faz um tempinho que estou me dedicando a isso. Mais uma vez agradeço sua infinita paciência, Midori.
  11. Obrigado, Midori. Boas explicações. Bom final de semana.
  12. Midori, desculpe-me. Quando eu mandei, foi que percebi. Está funcionando direitinho mesmo! Ficou muito bom mesmo e bem profissional! Mil desculpas. Midori, para fechar por hoje: DÚVIDA 1: sobre a instrução acrescentada ao Change, para exibir as linhas 63:65 para qualquer seleção que não tenha cadastro na planilha Benefício, SÓ PARA CONFIRMAR: quanto a isso, NÃO precisa fazer nenhum acréscimo à planilha Benefício, porque a própria condição cuida de apresentar as linhas 63 a 65. É isso mesmo? DÚVIDA 2: Midori, pretendo bloquear algumas células do projeto com SENHA. Assim, mesmo que eu proteja algumas células das linhas ocultas, elas REEXIBIRÃO normalmente, ao escolher a ação/benefício? DÚVIDA 3 : Podemos colocar a função Function BuscaIntervalo(Beneficio As String) As Variant junto ao evento Change, ou seja, na mesma sheets (Pensão por morte), no editor VBA? Obrigado, Midori.
  13. Midori, continua dando mensagem de erro. Vou te mostrar o erro, na imagem, em anexo. Acho que é melhor você enviar todo o código completo, com as retificações sugeridas. Ou seja, a) com a condição acrescentada a Change, para exibir as linhas 63:65 para qualquer seleção que não tenha cadastro na planilha Benefício. b) com a instrução para não vai exibir nenhuma linha quando o valor do benefício na coluna B for igual a N. c) além de outros orientações, caso tenha omitido aqui. Pois, não estou conseguindo fazer funcionar aqui direito. bug.pdf
  14. Boa tarde, Midori. Primeiramente, entendi perfeitamente a explicação do 13. Fiz os ajustes recomendados, mas continua dando mensagem de erro justamente nos benefícios do Grupo 1, aqueles que você me orientou a colocar a letra na N , na coluna B (e que não é para exibir linha, apenas lembrando). Vou te enviar, em anexo, a tabela Benefício montada com a disposição dos benefícios para você, por favor, conferir se errei em algo. Quanto ao mais, por favor, Midori, veja se montei a macro, com alterações recomendadas, de forma correta. Segue: Veja que coloquei a função Function BuscaIntervalo(Beneficio As String) As Variant junto ao evento Change, ou seja, na mesma sheets (Pensão por morte), no editor VBA. Isso é possível? Pode ser isso o problema? Tá dando trabalho essas instruções! E eu também! TABELA BENEFÍCIO-INTERVALO.pdf
  15. Bom dia, Midori. Fiz alguns testes, após as últimas sugestões enviadas, e constatei o seguinte. Vejamos. Midori, quanto aos benefícios do Grupo 1, para que não exibissem linhas, você sugeriu que era só NÃO CADASTRAR os citados benefícios na planilha, em substituição ao número 0, que eu havia colocado antes. Só lembrando: Deu certo! Por outro lado, como a condição IF, acrescentada ao Change, exibe as linhas 63 a 65, para qualquer seleção que não tenha cadastro na planilha Benefício, ela acaba também EXIBINDO essas linhas, quando colocamos os benefícios do GRUPO 1, que, a propósito, NÃO era para exibir nenhuma linha. Midori, é possível resolver isso? Caso não seja, poderíamos simplesmente tirar a condição IF, enviada anteriormente, e, quando colocarmos quaisquer palavras, não vai exibir nenhuma linha, tal qual ocorre com os benefícios do Grupo 1. A vantagem de exibir as linhas 63 a 65 era para o caso de colocar alguma informação extra, não prevista para os casos mais comuns, já relacionados. _____________________________________________________________________________ De outro lado, quando troquei “ - “ por “ ; ”, na sub BuscaIntervalo, para evitar eventual subtração, deu mensagem de erro de macro. Mas, quando desfaço a alteração na macro, fica normal. Coloquei o ponto e vírgula também na coluna do intervalo da planilha APENAS para um benefício, após a alteração acima proposta, e NÃO apresentou o bug ora relatado. Assim, será que é para aplicar TAMBÉM o ponto e vírgula em TODA planilha Benefício? (não testei isso!). A propósito, qual a relação do número 13? (estou perguntando, porque pode ser que não precisemos nos preocupara com quantidade de linhas menores que 13). É muita informação, já tô ficando doido!
  16. Bom dia, Midori. Ficou ótimo! Fiz alguns testes e observei o seguinte: Nos benefícios do Grupo 1, a instrução era para NÃO aparecer linhas; contudo estava aparecendo a tela de erro de macro. Mas, COLOQUEI o número 0 referente aos benefícios do grupo acima, na coluna B (Intervalo). E DEU CERTO! É assim mesmo? _______________________________________________________________________ Por fim, no Grupo 6, ao digitar quaisquer ação/benefício, era para APARECER as linhas 63-65, conforme comando abaixo: Contudo NÃO está APARECENDO as linhas referidas. DETALHE: NÃO aparece janela de erro, apenas NÃO REEXIBE as citadas linhas. Assim, Midori, por favor, teria como ajustar, se possível, o código para, AO DIGITAR PALAVRA OU QUAISQUER PALAVRAS, aparecer as LINHAS 63-65. Apenas lembrando que as instruções estão no tópico que eu enviei anteriormente. UMA DÚVIDA: Midori, pretendo bloquear algumas células do projeto com SENHA. Assim, mesmo eu protegendo algumas células das linhas ocultas, elas REEXIBIRÃO normalmente, ao escolher a ação/benefício? Ficou massa!
  17. Boa noite, Midori. A macro de impressão ficou simplesmente fantástica! Sem palavras! Como havia dito, Midori, decidi que ficaria mais legal OCULTAR linhas com informações específicas, e somente reexibi-las oportunamente, após escolher o tipo benefício/ação correspondente, através de validação de dados em uma determinada célula. Essas linhas ocultas (para serem eventualmente reexibidas) ficariam entre o cabeçalho do relatório e a tabela (as quais, como esclarecido, entrarão na impressão do relatório). Nesse caso, Midori, acho que deve ser um evento CHANGE (ah, sei lá!) Então, funcionaria assim. Vejamos: O tipo da benefício/ação aparecerá na célula D9, onde tem uma lista da validação de dados. Em seguida: 1) Se APARECER especificamente quaisquer dos benefícios abaixo (em maiúsculo ou minúsculo): Aposentadoria especial Aposentadoria por idade rural Aposentadoria por idade urbana Aposentadoria por tempo de contribuição Seguro-defeso > Então NÃO FAZ NADA (não reexibe nenhuma linha). 2) Se APARECER especificamente quaisquer dos benefícios abaixo (em maiúsculo ou minúsculo): Amparo social ao deficiente Aposentadoria por invalidez rural Aposentadoria por invalidez urbana Auxílio-acidente rural Auxílio-acidente urbano Auxílio-doença rural Auxílio-doença urbano > Então REEXIBIR o intervalo de linhas de 21 a 25. 3) Se APARECER especificamente quaisquer dos benefícios abaixo (em maiúsculo ou minúsculo): Pensão por morte rural Pensão por morte urbana > Então REEXIBIR o intervalo de linhas de 27 a 49. 4) Se APARECER especificamente quaisquer dos benefícios abaixo (em maiúsculo ou minúsculo): Salário-maternidade rural Salário-maternidade urbano > Então REEXIBIR o intervalo de linhas de 51 a 61. 5) Se APARECER especificamente (em maiúsculo ou minúsculo): Exibir linhas > Então REEXIBIR o intervalo de linhas de 20 a 65 (esse último caso é para fazer algum ajuste/formatação no relatório, ao longo dessas linhas, caso necessário). 6) Se APARECER especificamente quaisquer dos benefícios abaixo (em maiúsculo ou minúsculo): Amparo social ao idoso Auxílio-reclusão rural Auxílio-reclusão urbano Palavra ou palavras quaisquer (p. ex.: ação de danos morais, etc.), COM EXCEÇÃO da expressão "Exibir linhas", acima mencionada, e dos "benefícios listados no Grupo 1". > Então REEXIBIR o intervalo de linhas de 63 a 65. Assim, Midori, se possível, gostaria, por favor, de uma macro/evento (talvez, o CHANGE), para aplicar essas instruções acima. Tô abusando demais, né! Mas, já estamos na fase final do projeto! Vai ficar muito bacana!
  18. Bom dia, Midori. Ficaram excelentes! Estão todas funcionando direitinho! Ficou . E o bom é que NÃO aparece a tarja de seleção da linha, no PDF do relatório. Massa! Midori, eu gostaria apenas de relatar um “BUGUIZINHO” na impressão. Vejamos. Quando eu imprimo o relatório e, EM SEGUIDA, abro o PDF dele e, ao TENTAR imprimir novamente outro relatório, aparece uma CAIXA DE ERRO da macro, conforme é possível ver no arquivo que segue em anexo. Acredito que isso deve ser é uma crítica gerada pelo próprio Foxit (leitor de PDF que uso). Também acho que NÃO há como evitar isso. Talvez seja um erro que o usuário tem que CONVIVER COM ELE. O que pode acontecer é um servidor curioso invadir a macro da impressão e alterar indevidamente o código. Midori, mas talvez não valha a pena mexer nisso. Parece-me que esse é um daqueles casos que, para evitar esse bug, é só NÃO abrir o relatório impresso anteriormente. Simples assim. Cuidarei de avisar o pessoal sobre isso. Fica apenas o registro e acredito, Midori, que você deve pensar da mesma forma. _______________________________________________________________________ Midori, acredito que inverti as ideia! Acho que ANTECIPEI a macro de impressão! Vou explicar. Inicialmente, pensei em criar hiperlinks, para o usuário mudar de relatório, conforme benefício/ação escolhido. Mas, percebi que isso iria implicar a criação de várias macros iguais, para fazer a mesma tarefa, o que mudaria era apenas a sheet a que elas se referiam (pensão por morte, aposentadoria, etc). Então, decidi que ficaria mais legal ocultar linhas (com informações pertinentes ao benefício/ação correspondente). E SOMENTE reexibir as linhas respectivas, após escolher o tipo benefício/ação, constante de uma lista presente em uma validação de dados, inserida em uma determinada célula. Também acho que, do modo acima, o projeto ficaria mais elegante e com cara de aplicativo. Essas linhas ocultas (para serem eventualmente reexibidas) ficariam entre o cabeçalho do relatório (onde começa RELATÓRIO DE...) e a tabela. Pois bem, Midori, será que a macro RealAudPM_GerarPDF, enviada por último, COMPREENDERÁ as linhas a serem oportunamente REEXIBIDAS, conforme o tipo de benefício/ação escolhido, na impressão do relatório? Vaaaaaaaaaaaaaallllllllllllllllllllllllllllllllleeeeeeeeeeeeeeeeeeeuuuuuuuuuuuuuuuuuuuu, Midori,!!!!!!!!!!!!!!!!!!!!!! Bug da impressão.pdf
  19. Boa tarde, Midori. Primeiramente, quanto ao problema de “desbotamento” no REALCE DA LINHA, segue o print, em anexo, para melhor visualizar a situação. A propósito, anteriormente, relatei algumas impressões sobre isso. Mas, não sei se vem ao caso, Midori. ________________________________________________________________________________ Já em relação à IMPRESSÃO, fiz as ALTERAÇÕES sugeridas por último. Vejamos: Pois bem, Midori, gostaria apenas que você, por favor, CONFIRMASSE se os ajustes, em azul, feitos na macro GERAR PDF, estão CORRETOS. Veja: Sub GerarPDF() 'Macro para gerar PDF da planilha respectiva. Dim WB As Workbook Set WB = ActiveWorkbook Dim L As Long L = Range("TabelaPensãoPorMorte").Rows.Count + 17 'Selecionar o planilha respectiva. Sheets("Pensão por morte").Select 'O código abaixo exporta o PDF para o endereço da planilha (código original). WB.ActiveSheet.Range("C9").Resize(L, 4).ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ WB.Path & "\Renomeie já Relatório de Audiência!.pdf", Quality:= _ xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _ OpenAfterPublish:=False MsgBox ("Relatório de Audiência gerado com sucesso!") End Sub Midori, está tudo direitinho no código acima? ADEMAIS, sobre a linha abaixo, extraída do código supracitado: L = Range("TabelaPensãoPorMorte").Rows.Count + 17 Fiquei na dúvida! Pois preciso conhecer um pouco dos códigos, a fim de ter condições de fazer algum ajuste na macro, quando necessário. Assim, por favor, explique-me a linha de código acima, PRINCIPALMENTE O NÚMERO 17. Esse número VAI LIMITAR a quantidade de linhas a serem impressas? Confesso que não gostaria que a tabela/relatório tivesse a impressão restringida pelo número de linhas. Desde já, Midori, agradeço pela ajuda. PRINT DO RELATÓRIO DE AUDIÊNCIA.pdf
  20. Boa tarde, Midori. Primeiramente, em relação à vinculação dos ÍCONES à tabela, deu certo; PORÉM, quando clicamos FORA da tabela, TRECHOS do realce da última linha selecionada, na tabela, fica SEM REALCE, como se ficasse desbotada. No projeto, fica melhor de visualizar esse fato. Isso não acontecia quando tínhamos apenas o REALCE DE LINHA, pois, mesmo clicando fora da tabela, não deixava a linha desbotada. Pelo que dá para entender da instrução IF, a condição diz que, se não houver nenhum dado, então é vazio (tradução livre). No entanto, é para a linha ficar realçada independente do preenchimento da linha. Assim, Midori, tem como contornar essa situação? Não sei bem, mas, analisando o módulo 2, não é algo relacionada a essa parte azul do código? .Left = ActiveSheet.Range("C" & ActiveCell.Row).Offset(0, 4).Left .Top = ActiveSheet.Range("C" & ActiveCell.Row).Offset(0, 4).Top Não seria o caso de colocar o range da tabela, considerando que a coluna C é a referência e os ícones se movimentam ao longo da coluna G (indicada pelo nº 4, no código), bem como os shapes ao lado da linha selecionada, na coluna G. _________________________________________________________________________ Já quanto à IMPRESSÃO, também deu certo em parte. Mas, desejo que seja gerado o PDF NÃO apenas da Tabela, mas também de TODAS as informações inseridas fora tabela. Como exemplo, estou enviado, em anexo, um modelo impresso do PDF do relatório, para você ter uma ideia de como ele deve ficar, após a impressão. LEMBRANDO: A tabela tem começo. No caso, poderia ser na célula C9, onde se inicia o nome: RELATÓRIO DE (em seguida, na célula seguinte tem uma validação para selecionar o tipo de ação). Contudo, o tamanho da tabela é variável. Seu fim somente se dá quando esgotadas todas as informações processuais pertinentes. Após o preenchimento da tabela, é colocado o nome do responsável pela confecção do relatório (Responsável pelo Relatório: Cézar), cerca de 3 LINHAS ABAIXO DA TABELA. O ideal é que a macro seguisse o passo a passo descrito anteriormente, como abaixo destacado: EM RESUMO: Seria uma macro para selecionar da célula C9 até uma célula da TERCEIRA linha abaixo da tabela, constante da coluna F. Em seguida, clicar na aba Layout da Página > Área de Impressão > Definir Área de impressão. E outra macro para limpar a área de impressão: Layout da Página > Área de Impressão > Limpar área de impressão (essa me veio depois, pois percebi que, após definir a área de impressão, a área escolhida permanece selecionada, mesmo após a impressão). Assim, é possível, Midori, criar macros, para ficar nos moldes acima? Muita coisa, né! Agradeço muito se puder fazer as correções sugeridas. Renomeie já Relatório de Audiência!.pdf
  21. Bom dia, Midori. Obrigado pelas explicações. Entendi direitinho e obrigado pela macro alternativa. Funcionou perfeitamente! Ficou ótimo! Midori, como havia dito anteriormente, coloquei ÍCONES FLUTUANTES, no projeto. Também coloquei REALCE DE LINHAS, após combinar duas macros referente a duas explicações distintas. Apenas a título de informação, adicionei os shapes (ícones) com base nesta aula: https://www.youtube.com/watch?v=_nRzKpLlbI8. E o realce de linhas, nesta outra: https://www.youtube.com/watch?v=nU-ToK9_4FA . Pois bem, quanto ao REALCE DE LINHAS, consegui vincular esse recurso à Tabela. Contudo, NÃO consegui vincular os ÍCONES à Tabela, quando seleciono uma linha dentro da Tabela. De acordo com a macro das shapes, a referência é a coluna C, e os ícones se movimentam ao longo da coluna G (indicada pelo nº 4, no código). Mas, os ícones ficam EM QUALQUER LUGAR da coluna G, quando clicamos em qualquer parte da planilha (sheet). Estou enviando o projeto com esses recursos, para melhor compreensão das informações. A macro dos ÍCONES está no MÓDULO 2. E o REALCE DE LINHAS, no evento SELECTIONCHANGE da sheet Pensão por morte. Assim, Midori, se possível, gostaria que os ÍCONES ficassem vinculados apenas à Tabela, assim como o realce das linhas. Teria como enviar a linha de código para isso? ________________________________________________________________________________ Outra coisa, Midori, em relação à IMPRESSÃO DO RELATÓRIO, após gerar o PDF, fica impresso toda a área visível da planilha. Para mim isso não é problema, pois consigo evitar isso. Para tanto, basta ir na aba Layout da Página, selecionar (com o mouse) a área do relatório a ser impressa. Em seguida, clicar em DEFINIR ÁREA DE IMPRESSÃO, após acionar no ícone Área de Impressão. Por fim, clicar no botão GERAR PDF. Lembrando que o botão GERAR PDF já tem uma macro atribuída para esse fim, que salva o arquivo em PDF automaticamente na mesma pasta/endereço em que o projeto foi baixado. Contudo, esse projeto será utilizado por PESSOAS LEIGAS, que sequer conhecem o Excel, muito menos a operação acima. Além disso, com um botão fica bem mais elegante e automatizadas as ações em questão. Portanto, Midori, teria alguma macro capaz de executar as etapas acima, destacadas em azul, para imprimir apenas a área de impressão selecionada. Caso tenha, se possível, TERIA COMO ENVIAR ESSE CÓDIGO? Obrigado pelas ajudas imensuráveis e pela enorme paciência. Midori, você é . Relatório de Audiências-PROJETO EM ELABORAÇÃO.rar
  22. Bom dia, Midori. Midori, sobre as alterações que você me recomendou, vamos lembrar um pouco: Quanto ao pedido de SELEÇÃO DA PRIMEIRA CÉLULA/LINHA imediatamente POSTERIOR às linhas excluídas, esta foi a recomendação: Já em relação a colocar também uma MSGBOX, esta foi a orientação: Pois bem, fiz os ajustes acima e aparentemente tá funcionando direitinho. LEMBRANDO: essas incrementações foram solicitadas para a macro de EXCLUSÃO DE VÁRIAS LINHAS, enviada anteriormente. Mas, apenas para eliminar qualquer dúvida, por favor, Midori, ME CONFIRME SE EU FIZ AS ALTERAÇÕES CORRETAS. Assim, segue um trecho recortado do código da EXCLUSÃO de linhas, com as sugestões em AZUL: (...) Do While I <= L If Tabela.Rows.Count = 1 Then Tabela.ClearContents MsgBox "Não é possível excluir esta linha." Exit Do Else Tabela.ListObject.ListRows(LinhaAtual - I + 1).Delete End If I = I + 1 Loop ActiveCell.Offset(-I + 1).Select End If End If End Sub Midori, as linhas em azul era para FICAR NESSAS POSIÇÕES MESMO? ______________________________________________________________________________ A propósito, acho que entendi a aplicabilidade do procedimento Function (havia me confundido com a macro de inclusão de linhas). Pelo que percebi, essa função funciona como uma macro auxiliar para as macros de INSERIR VÁRIAS LINHAS e EXCLUIR VÁRIAS LINHAS, enviadas anteriormente, as quais retomam as instrução fixadas pela Function. ___________________________________________________________________________________ UMA DÚVIDA: Midori, É VERDADE que, QUANTO MAIS MACROS no projeto, MAIS LENTO e TRAVANDO ele fica? ESTA PARECE QUE FOI UMA SESSÃO DÚVIDA. Agradeço a paciência, Midori. Já estamos quase concluindo o projeto. Falta apenas alguns poucos detalhes.
  23. Boa tarde, Midori. Primeiramente, MUITO obrigado pelas macros. Pois bem, fiz alguns testes com a macro EXCLUIR VÁRIAS LINHAS e verifiquei o seguinte: Quando excluímos 4 linhas, ela DESCE 4 linhas, na tabela. Quando excluímos 5 linhas, ela DESCE 5 linhas, e assim por diante. Sendo assim, gostaria que, quanto à macro EXCLUIR VÁRIAS LINHAS, após sua execução, ela deixasse, se possível, SELECIONADA A PRIMEIRA CÉLULA/LINHA imediatamente POSTERIOR às linhas excluídas. Acho que seria interessante colocar também um comando e uma MSGBOX com a mensagem, por exemplo, "Não é possível excluir esta linha.", para impedir a tentativa de exclusão (acidental) da PRIMEIRA LINHA da tabela. É verdade que isso não é possível, devido ao formato tabela; porém, é apenas para deixar o projeto mais interativo com o usuário. No demais, pode DEIXAR MANTIDA as demais linhas de código da macro acima. Por último, já fiz os testes e verifiquei que a melhor opção é deixar selecionada a linha posterior, como acima solicitado. _____________________________________________________________________________ Midori, já em relação à macro INSERIR VÁRIAS LINHAS, confesso que não consegui entender essa macro. Pesquisei na internet, mas não ficou claro para mim essa função. Para ser sincero, nem conhecia essa aplicação. Assim, tentei executar a macro acima com F8, mas não consegui. Tentei atribuir a citada macro a um botão, mas não havia opção de atribuir função. Tentei colocar Sub ...End sub, no módulo, mas não reconheceu. Enfim, não consegui executar essa função no projeto. Midori, como é que funciona a macro referente à INSERIR VÁRIAS LINHAS? Obrigado pela atenção.
  24. Midori, ficou EXCELENTEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE!!!!!!!!!!!!!!!!!!!!!!!!!!! Você é simplesmente ESPETACULARRRRRRRRRRRRRRRRRRRRRRRRRR!!!!!!!!!!!!!!!!! Estamos quase concluindo essa parte de inclusão e exclusão de linhas. Gostaria de mais duas macros, sendo uma para INSERIR VÁRIAS LINHAS e outra para EXCLUIR VÁRIAS LINHAS, com inputbox (para a escolha da quantidade de linhas), além de outros detalhes, como serão descritos abaixo. Essas macros eu as chamaria de macros coringas, pois elas teriam atuação com mais flexibilidade (pretendo atribui botões a elas). Elas seriam uma espécie de Rainha, no xadrez. Pois bem, as macros seriam assim: Macro EXCLUIR VÁRIAS LINHAS (deixando a seleção de célula livre, como nas macros enviadas anteriormente (Postado sexta-feira às 14:24 e Postado ontem às 07:48)): excluir linhas em QUALQUER LUGAR da tabela. Ou seja, a) EM CIMA, exceto a primeira linha, com aquele comando/MsgBox: "Não é possível excluir esta linha", como anteriormente enviada; b) no MEIO; ou c) no FIM da tabela. excluir QUANTAS LINHAS DESEJAR a critério do usuário. abrir uma INPUTBOX, para definir o número de linhas a excluir, já aparecendo, de início, a quantidade 1. A função ficaria tipo assim: InputBox("Digite o número de linhas a excluir:", "Excluir linhas.", "1") um comando para recusar, na inputbox, a digitação de letras ou outros caracteres quaisquer, mediante uma MSGBOX com a mensagem, por exemplo, “Digite apenas números.” Sentido da exclusão: a ação seja executada apenas DENTRO da tabela (ou seja, macros vinculadas à tabela). __________________________________________________________ Macro INCLUIR VÁRIAS LINHAS (deixando a seleção de célula livre, como nas macros enviadas anteriormente (Postado sexta-feira às 14:24)): Incluir linhas em QUALQUER LUGAR da tabela. Ou seja, a) EM CIMA; b) no MEIO; ou c) no FIM da tabela. Incluir QUANTAS LINHAS DESEJAR a critério do usuário. abrir uma INPUTBOX para definir o número de linhas a incluir, já aparecendo, de início, a quantidade 1. A função ficaria tipo assim: InputBox("Digite o número de linhas a inserir:", "Inserir linhas.", "1") um comando para recusar, na inputbox, a digitação de letras ou outros caracteres quaisquer, mediante uma MSGBOX com a mensagem, por exemplo, “Digite apenas números.” Sentido da inclusão: a ação seja executada apenas DENTRO da tabela (ou seja, macros vinculadas à tabela). _______________________________________________________________________ Acho que coloquei muita informação, Midori. Mas, a intenção era deixar bem detalhado, para evitar ajustes futuros. Eu sei que estou te importunando demais. Mas, estamos quase concluindo e esse projeto é muito importante para o meu setor de trabalho. Espero que tenha paciência comigo. A propósito, eu entendi a explicação enviada anteriormente, conforme abaixo destacada:

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...