#excel #vba
Вопрос:
Я хочу создать макрос, который форматирует все ячейки Excel wourkbook в виде числа.
У меня есть этот код:
Range("A1").NumberFormat = "0.00"
Но это только для определенного диапазона.
Вы можете мне помочь, пожалуйста?
Комментарии:
1.
Range("A1:Z1000").NumberFormat = "0.00"
— Просто измените значения на то, что вы хотите.2. @braX, Но мне нужен весь Excel wourkbook, то есть все страницы из книги.
3. Затем проведите его по всем листам, как это делается в ответе ниже.
Ответ №1:
Dim sht As Worksheet
For Each sht In Worksheets
sht.Cells.NumberFormat = "0.00"
Next sht
Это должно сработать
Хммм, я думал, это сработает:
Dim wb as Workbook: Set wb = ThisWorkbook
wb.Sheets.NumberFormat = "0.00"
Это должно было сработать, учитывая, что это сработало:
Dim wb As Workbook: Set wb = ThisWorkbook
wb.Sheets.Select: Selection.NumberFormat = "0.00"
Должно быть, я упускаю что-то тонкое в синтаксисе…
Комментарии:
1. Я думаю
NumberFormat
, что это недоступное свойствоsheets
объекта, который является объектом уровня коллекции. Таким образом, в принципе, это применимо кSelection
объекту и, следовательно, работает.2. Да, определенно так кажется. Мне очень не нравится использовать . Выберите, однако!
Ответ №2:
Это работает для форматирования всех ячеек во всех листах вашей книги.
Sub format_as_numbers()
Dim ws As Worksheet
For Each ws In Worksheets
ws.Cells.NumberFormat = "0.00"
Next
End Sub
Это должна быть рабочая книга в формате .xlsx, потому что в старых файлах .xls не так много строк и столбцов, поэтому, я думаю, она не сможет ее выполнить.
Комментарии:
1. Отбросьте «диапазон» и замените его «ячейками», т. е. ws.ячейками. Формат номера, и вы не склонны к различиям в размерах xlsx и xls.
2. @Amiga500 Спасибо.