Como Mudar as caracteristicas das mensagens do Msgbox ou InputBox ?

Anônima
2015-05-22T05:49:10+00:00

Bom Dia pessoal.

Como sou inciante em VBA, achei muito bom,pratico e facil de usar o Msgbox,InputBox nas rotinas que estou comecando a praticar.

Gostaria de saber se tem alguma maneira de mudar a caracteristica das mensagens com negrito ou tamanho de letra para poder destacar em determinados trechos das mensagens sem usar outros artificios complicados.

Desde ja agradeco

Tadao

Microsoft 365 e Office | Excel | Para uso doméstico | Windows

Pergunta bloqueada. Essa pergunta foi migrada da Comunidade de Suporte da Microsoft. É possível votar se é útil, mas não é possível adicionar comentários ou respostas ou seguir a pergunta.

0 comentários Sem comentários
Resposta aceita pelo autor da pergunta
Anônima
2015-05-31T20:22:52+00:00

Sobre Range("A1"), é mais simples do que você perguntou: se você escrever Range("A1") em qualquer componente do seu projeto VBA, o Excel interpretará que é a célula A1 da planilha ativa.

Da mesma forma, se você escrever Worbooks("Pasta1.xlsm").Worksheets("Plan1").Range("A1"), de qualquer componente se referenciará à célula A1 da planilha A1 da pasta de trabalho Plan1. Onde você escreve o código independe...


"Eu entendo Pasta de Trabalho como Diretorio"

A terminologia é importantíssima:

  • Pasta de Trabalho: um arquivo de Excel (xlsx, xlsm, xls, etc.)
  • Planiliha: uma "aba" de uma pasta de trabalho
  • Diretório: um caminho do Windows Explorer que possui arquivos.

Infelizmente, há muita confusão nisso. A própria microsoft chama pasta de trabalho de planilha, em alguns casos...

E a tal da "pasta" do windows explorer confunde com a "pasta de trabalho", do Excel... complicado =\


"

ThisWorkbook se refere à pasta de trabalho que está executando o código

e a mesma coisa que dizer ThisWorkbook se refere ao arquivo que esta executando o codigo?"

Correto!


"se tenho os codigos escritos no arquivo cartao pontos e tiver que ativar o arquivo dados(Workbooks("dados"), e do arquivo dados quiser voltar ou acessar celulas do arquivo cartao ponto em vez de escrever (Workbooks("cartao ponto")) e a mesma coisa que escrever ThisWorkbook que vai entender como sendo o arquivo cartao ponto onde estao escritos os codigos?."Correto!


Esta resposta foi útil?

0 comentários Sem comentários
Resposta aceita pelo autor da pergunta
Anônima
2015-05-26T02:55:59+00:00

Tadao, a indicação da Lucíola está correta. Você provavelmente recebeu dicas de pequenas rotinas VBA de mim ou no máximo mais duas pessoas. O melhor lugar para tirar dúvidas VBA é no link que ela te passou mesmo. Poste no canal mostrado abaixo:

Bom, respondendo sua pergunta, não é possível mudar as características de um inputbox dessa forma como deseja. Se quiser personalizar algo desse nível, sugiroq ue você crie um formulário (UserForm) e faça ele se passar por uma caixa de mensagem / diálogo.

O máximo que você pode fazer com a função nativa é alterar o parâmetro Buttons utilizando as partes de enumerações como vbInformation, vbYesNo, etc. para modificar botões ou ícones.

Esta resposta foi útil?

0 comentários Sem comentários
Resposta aceita pelo autor da pergunta
Anônima
2015-05-22T12:10:55+00:00

Olá, TadaoKano! Tudo bem?

Bem-vindo à Comunidade da Microsoft.

Para este cenário com relação à Projeto VBA, sugiro postar sua dúvida na comunidade disponível para desenvolvedores:

Para mais informações, acesse Developer Network

Espero ter ajudado.

Até mais,

Esta resposta foi útil?

0 comentários Sem comentários

17 respostas adicionais

Classificar por: Mais útil
  1. Anônima
    2015-05-28T05:13:20+00:00

    Você está entendo bem as coisas. Com o VBA, você consegue fazer coisas que não conseguiria fazer normalmente só no Excel. Você pode copiar dados de uma planilha que não esteja ativa para outra, por exemplo. Então, minha recomendação é que você não use o método Select, seja para células, planilhas ou pastas de trabalho. No entanto, vou explicar por que você está tendo esse erro com o método Select. ele pode acontecer por 3 motivos principais:

    1 - O objeto que você tentou selecionar não existe.

    2 - Se você tentar selecionar a planilha de uma pasta de trabalho que não esteja ativa, obterá erro. (esse foi o seu caso)

    3 - Se você tentar selecionar uma célula ou intervalo de uma planiliha que não esteja ativa, obterá erro.

    Minha sugestão para seu código seria algo como:

    Sub Main()

        Dim wsDados As Worksheet

        Dim wsPonto As Worksheet

        Set wsDados = Workbooks("dados").Worksheets("sheet1")

        Set wsPonto = Workbooks("cartao ponto").Worksheets("sheet1")

        wsDados.Range("A1").AutoFilter 4, "<>"

        wsDados.Range("A1").CurrentRegion.Copy

        wsPonto.Range("A1").PasteSpecial Paste:=xlPasteValues

        wsDados.AutoFilterMode = False

        wsPonto.Activate

    End Sub

    Nesse exemplo, colo o resultado do filtro na célula A1 da planilha de cartão de ponto. Vocêpode mudar isso, se quiser. Note que uso o método Activate só no final da rotina de propósito, para dar foco na planilha "que interessa" ao usuário ao final da rotina.

    Ola Felipe, mais uma vez obrigado pelo suporte e apoio que esta me dispensando.

    Quanto ao codigo que voce postou, roda redondo, mas como eu tinha dito antes, o que eu escrevi nao rodava porque resumidamente em vez de copy, para nao ficar muito complicado a pergunta , substitui por Select que eh como copy um metodo, certo. Mas se substituir o copy com select no seu codigo, da erro de numero 1004, porque sera?

    Na  verdade o que estou tentando fazer e copiar dados de horas trabalhadas do arquivo dados de varios funcionarios que vem da fabrica todos os dias e ir colocando um atraz do outro para fazer um Banco de Dados no arquivo cartao ponto.Para nao copiar o cabecario o codigo seria 

    wsDados.Range("A1").CurrentRegion.Offset(1).Copy

    Fazendo o codigo acima, ela deixa de copiar os cabecarios do arquivo dados para poder ir ajuntando um abaixo do outro como desejado, porem como usei o Offset(1), desloca a regiao selecionada ,uma linha para baixo ficando a ultima linha em branco que seria copiando junto tambem, e para evitar isso escrevi

    wsDados.Range("A1").CurrentRegion.Offset(1).Resize(Range("A1").CurrentRegion.Rows.Count-1).Copy

    .......dai deu Zebra....nao copia toda regiao dos dados, mas se nao usar o filtro, ou seja nao tiver lacuna na coluna 4 funciona normal.Nao sei se estou sendo muito perfeccionista, mas sera que tem alguma maneira de sanar isso?

    Nao expliquei porque estou usando o Filtro, mas e o seguinte, a planilha do arquivo dados que recebo, esta configurado para dar um visual melhor para fins de utilizacao da fabrica e ela contem alem do cabecalho os subcabecalhos que para mim nao nos interessa, como exemplo na coluna 1  os setores que os funcionarios sao distribuidos.Como na linha que tem os setores nao tem horas de entrada, que fica na coluna 4 filtrei a coluna 4 para obter todos os registros e depois aplicar o copy.

    Tadao

    Esta resposta foi útil?

    0 comentários Sem comentários
  2. Anônima
    2015-05-27T17:57:09+00:00

    Você está entendo bem as coisas. Com o VBA, você consegue fazer coisas que não conseguiria fazer normalmente só no Excel. Você pode copiar dados de uma planilha que não esteja ativa para outra, por exemplo. Então, minha recomendação é que você não use o método Select, seja para células, planilhas ou pastas de trabalho. No entanto, vou explicar por que você está tendo esse erro com o método Select. ele pode acontecer por 3 motivos principais:

    1 - O objeto que você tentou selecionar não existe.

    2 - Se você tentar selecionar a planilha de uma pasta de trabalho que não esteja ativa, obterá erro. (esse foi o seu caso)

    3 - Se você tentar selecionar uma célula ou intervalo de uma planiliha que não esteja ativa, obterá erro.

    Minha sugestão para seu código seria algo como:

    Sub Main()

        Dim wsDados As Worksheet

        Dim wsPonto As Worksheet

        Set wsDados = Workbooks("dados").Worksheets("sheet1")

        Set wsPonto = Workbooks("cartao ponto").Worksheets("sheet1")

        wsDados.Range("A1").AutoFilter 4, "<>"

        wsDados.Range("A1").CurrentRegion.Copy

        wsPonto.Range("A1").PasteSpecial Paste:=xlPasteValues

        wsDados.AutoFilterMode = False

        wsPonto.Activate

    End Sub

    Nesse exemplo, colo o resultado do filtro na célula A1 da planilha de cartão de ponto. Vocêpode mudar isso, se quiser. Note que uso o método Activate só no final da rotina de propósito, para dar foco na planilha "que interessa" ao usuário ao final da rotina.

    Esta resposta foi útil?

    0 comentários Sem comentários