2014-01-29 2 views
3
Sub Sample() 

    [A1:A20] = [INDEX(UPPER(A1:A20),)] 

End Sub 

Привета, Для приведенной выше коды, который был обеспечен Siddharth Rout, можно изменить 20 к переменной, такие как последнюю строку на листе?Excel в прописные VBA без Looping

Большое спасибо заранее.

+0

Не с этой самой техникой, я не думаю. –

+3

Нет большого штрафа за производительность при жестком кодировании. '[A1: A1048576] = [INDEX (ВЕРХНИЙ (A1: A1048576),)]' – pnuts

+0

Я также предлагаю второе предложение @pnuts. Но если вы ориентируетесь на определенный диапазон, попробуйте мой ответ. Это то же самое, что и Сид, он просто прошел через '[]' ярлык для 'Evaluate'. :) – Manhattan

ответ

2

Попробуйте это:

Sub UpperCase() 

    Dim TargetRng As Range, LastRow As Long 
    LastRow = Sheet1.Range("A" & Rows.Count).End(xlUp).Row 
    Set TargetRng = Sheet1.Range("A1:A" & LastRow) 

    TargetRng = Evaluate("INDEX(UPPER(" & TargetRng.Address & "),)") 

End Sub 

[] просто сокращенная для Evaluate. Использование всего слова не имеет штрафных санкций и может использоваться с VBA. Просто попробовал, и он работает.

Сообщите нам, если это поможет.

+0

Работы. Спасибо! – user3249357

0

Единственный способ - разместить максимально возможное количество строк. Для Excel 2007 будет 1048576

Смежные вопросы