Açúcar Sintático VBA

4

Eu uso o VBA no meu trabalho todos os dias, mas eu não sabia sobre o açúcar sintático do Range. Eu sabia no mês passado quando vi a página do MSDN Range. Tentei encontrar um artigo com esses recursos, mas não encontrei nenhum.

Alguém sabe se o VBA tem mais açúcar sintático do que isso

Intervalo: Range("A4:C100") a [A4:C100]

ou

Intervalo: Range("MY_DATE") a [MY_DATE]

    
por Makah 28.01.2014 / 12:56

2 respostas

6

Para intervalos

Tudo isso faz a mesma coisa:

Range(Cells(1, 2), Cells(2, 2)).Select

Range("B1:B2").Select

Dim rngB As Range
Set rngB = Range("B1:B2")
rngB.Select

[B1:B2].Select

Para strings

Você não tem muitas opções

Dim strA As String
strA = "hello"

strA = strA + "world" e strA = strA & "world" faz a mesma coisa (e comercial é preferido)

strA &= "world" e strA += "world" não funcionam.

Para planilhas

Normalmente, você pode trabalhar com a planilha padrão real com número, em vez de com o nome da planilha:

Worksheets("Name").Activate
Sheets("Name").Activate
'Worksheet "Name" is Sheet1 object
Sheet1.Activate

Para fórmulas / funções da planilha

da resposta da Excellll para completar:

Another syntactic shortcut is for accessing and evaluating worksheet functions. You can use brackets to evaluate a formula as if it were on the worksheet rather than stringing together a cumbersome VBA statement.

Sub sugartest()
'long version
MsgBox Application.WorksheetFunction.Average(ActiveSheet.Range("A1:D1"))
'short version
MsgBox [AVERAGE(A1:D1)]
End Sub
    
por 28.01.2014 / 14:55
6

Outro atalho sintático é para acessar e avaliar as funções da planilha. Você pode usar colchetes para avaliar uma fórmula como se ela estivesse na planilha em vez de unir uma instrução VBA incômoda.

Sub sugartest()
'long version
MsgBox Application.WorksheetFunction.Average(ActiveSheet.Range("A1:D1"))
'short version
MsgBox [AVERAGE(A1:D1)]
End Sub
    
por 28.01.2014 / 22:41