powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / NumberFormat для Range
9 сообщений из 9, страница 1 из 1
NumberFormat для Range
    #34072751
экселист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
имеется xla файл, в котором есть некий макрос на форматрирование страницы, добавил туда код сгенеренный самими экселем
Код: plaintext
1.
2.
                Columns("H:H").Select
                Selection.NumberFormat = "#,##0.00$"

и стала вылетать ошибка "Нельзя установить NumberFormat для Range" на нем

весь код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
    Dim xSheets As Sheets
    Dim xSheet As Worksheet
    
    Set xSheets = Workbooks(parNameBook).Sheets
    
    Dim sNameRange As String
    Dim i As Integer
    For Each xSheet In xSheets
        For i =  1  To  2 
            sNameRange = NameRangeData(xSheet, i)
            If sNameRange <> "Null" Then
                xSheet.Range("A1:H1").Select
                Selection.Font.Bold = True
                Columns("H:H").Select
                Selection.NumberFormat = "#,##0.00$" <-- Здесь ошибка
                xSheet.Range(sNameRange).Columns("A:A").ColumnWidth =  8 
                xSheet.Range(sNameRange).Columns("B:B").ColumnWidth =  25 
                xSheet.Range(sNameRange).Columns("C:C").ColumnWidth =  17 
                xSheet.Range(sNameRange).Columns("D:D").ColumnWidth =  20 
                xSheet.Range(sNameRange).Columns("E:E").ColumnWidth =  10 
                xSheet.Range(sNameRange).Columns("F:F").ColumnWidth =  8 
                xSheet.Range(sNameRange).Columns("G:G").ColumnWidth =  8 
                xSheet.Range(sNameRange).Columns("H:H").ColumnWidth =  15 
            End If
        Next i
    Next

в чем ошибка? и как ее исправить?
...
Рейтинг: 0 / 0
NumberFormat для Range
    #34072784
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно есть защищенные листы.

В любом случае, я бы слегка оптимизировал код:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
    Dim xSheets As Sheets
    Dim xSheet As Worksheet
    Dim i As Integer
    
    Set xSheets = Workbooks(parNameBook).Sheets
    
    For Each xSheet In xSheets
        For i =  1  To  2 
            If NameRangeData(xSheet, i) <> "Null" Then
                With xSheet.Range("A1:H1")
                    .Font.Bold = True
                    .ColumnWidth = Array( 8 ,  25 ,  17 ,  20 ,  10 ,  8 ,  8 ,  15 )
                    .Parent.Columns("H:H").NumberFormat = "#,##0.00$"
                End With
            End If
        Next i
    Next xSheet

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
NumberFormat для Range
    #34072799
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Даже так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
    Dim xSheets As Sheets
    Dim xSheet As Worksheet
    
    Set xSheets = Workbooks(parNameBook).Sheets
    
    For Each xSheet In xSheets
        If NameRangeData(xSheet,  1 ) <> "Null" Or NameRangeData(xSheet,  2 ) <> "Null" Then
            With xSheet.Range("A1:H1")
                .Font.Bold = True
                .ColumnWidth = Array( 8 ,  25 ,  17 ,  20 ,  10 ,  8 ,  8 ,  15 )
                .Parent.Columns("H:H").NumberFormat = "#,##0.00$"
            End With
        End If
    Next xSheet

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
NumberFormat для Range
    #34072846
экселист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо, за оптимизацию, но ошибка все же осталась: "Run-time error 1004: Нельзя установить свойство NumberFormat класса Range"

листы не защищенные
...
Рейтинг: 0 / 0
NumberFormat для Range
    #34072891
Фотография orunbek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
книгу архивните и выложьте
...
Рейтинг: 0 / 0
NumberFormat для Range
    #34073574
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
экселистспасибо, за оптимизацию, но ошибка все же осталась: "Run-time error 1004: Нельзя установить свойство NumberFormat класса Range"

листы не защищенные

1) Может есть скрытые защищенные листы, ведь код пробегает по всем листам без исключения
2) У тебя перебор листов идет в коллекции Sheets, которая включает Worksheets, Charts, Excel4MacroSheets

Но вообще orunbek прав нужен сам файл.

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
NumberFormat для Range
    #34074818
экселист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
orunbekкнигу архивните и выложьте
вот книга
...
Рейтинг: 0 / 0
NumberFormat для Range
    #34074860
vbapro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а parNameBook не книга - надстройка? может к ней и обращаетесь?...
...
Рейтинг: 0 / 0
NumberFormat для Range
    #34075068
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
экселист orunbekкнигу архивните и выложьте
вот книга

А где же функция parNameBook и остальной код - тот, что не работает? Выкладывай лучше сам файл, дающий ошибку, а данные то как раз роли не играют.

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / NumberFormat для Range
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]