VBA – Personalizar texto em Botão – MsgBox

Colegas, mais uma dica utilizando-se MsgBox.

Em um outro Forum apareceu a questão se seria possível personaliar os Textos dos Botões em um MsgBox, ou seja trocar o “SIM”, NÃO” ou “CANCELAR” , resultantes das constantes: “vbYesNoCancel” por um Texto qualquer.

Então digo, que é possível utilizando-se APIs, apesar de achar melhor utilizarmos um UserForm para tal, isso devido as APIs serem Bibliotecas do Windows, e podemos ter incompatibilidades com determinadas versões.

Mas quem quiser ver um exemplo, segue o anexo, testado no Excel 2003 sem problemas.

O código foi tirado do Site abaixo:

Custom button captions in standard MsgBox

http://www.mrexcel.com/forum/showthread.php?t=70581

Download do arquivo

CaptionButomMauro.rar

SQL – Listando os bancos de dados no SQL Server com T-SQL

se tem uma coisa que gosto de linguagens, programas ou mesmo tecnologias mais novas, é que elas simples o que realmente devia ser simples desde o começo. Vários são os exemplos, mas o que quero citar agora, é o do MySQL. Quando quero saber quais são os bancos de dados ou schemas do meu servidor, basta digitar um simples comando:

SHOW DATABASES;

Simples, direto, semântico. Praticamente não é preciso pensar para digitar esse comando. Mas, quando se está no SQL Server, que ultimamente tem focado quase que totalmente em ferramentas visuais, obter uma lista dessa não é impossível, mas faz você parar para pensar demais, ou até mesmo pesquisar na internet por causa disso.

Bom, se você chegou aqui por causa disso, abaixo vão alguns meios de obter a lista de banco de dados do seu servidor usando algumas linhas de T-SQL:

----SQL SERVER 2005 System Procedures
 EXEC sp_databases
 EXEC sp_helpdb
 ----SQL 2000 Method still works in SQL Server 2005
 SELECT name
 FROM sys.databases
 SELECT name
 FROM sys.sysdatabases
 ----SQL SERVER Un-Documented Procedure
 EXEC sp_msForEachDB 'PRINT ''?'''

O créditos pelo código vão para o colega Pinal Dave.

VBA – Fechar MsgBoxs Automaticamente

Diante de uma duvida surgida no nosso Forum, “FECHAR MSGBOX AUTOMATICAMENTE” coloco a solução criada pelo nosso colega JoseA :

Fechar MsgBoxs automáticamente por JoseA:

        Global oSHL As Object
 
        Sub AutoCloseMsgBox(Mensagem As String, Titulo As String, Segundos As Integer)
            Set oSHL = CreateObject("WScript.Shell")
            oSHL.PopUp Mensagem, Segundos, Titulo, vbOKOnly + vbInformation
        End Sub
 
        Sub AutoMessage()
        'Fechar MsgBoxs automáticamente por JoseA
 
        'Call Envia_A
            AutoCloseMsgBox "Msgbox1 - Clique em OK ou aguarde 2 segundos", "Fechar MsgBox1 automaticamente", 2 '2 segundos
        'Call Envia_B
            AutoCloseMsgBox "Msgbox2 - Clique em OK ou aguarde 3 segundos", "Fechar MsgBox2 automaticamente", 3 '3 segundos
        'Call Envia_C
            AutoCloseMsgBox "Msgbox3 - Clique em OK ou aguarde 4 segundos", "Fechar MsgBox3 automaticamente", 4 '4 segundos
        'Call Envia_D
            AutoCloseMsgBox "Msgbox4 - Clique em OK ou aguarde 5 segundos", "Fechar MsgBox4 automaticamente", 4 '5 segundos
 
        End Sub

Na rotina AutoMessage fiz menção somente às msgboxs após a execução de determinadas rotinas, é uma forma simples e direta, podemos fazer essas chamadas diretamente nas rotinas em que estaremos executando.

Essa dica foi postada no site abaixo, no mesmo temos uma outra dica utilizando-se APIS, mas optei por essta por ter menos linhas e ser mais simples.

MsgBox com Time
http://www.vbaexcelforum.com/showthread … 2615713e22