Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Высота строк по условию через диалоговое окно - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Высота строк по условию через диалоговое окно (Макросы/Sub)
Высота строк по условию через диалоговое окно
Gjlhzl Дата: Вторник, 23.01.2024, 17:27 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 110
Репутация: 0 ±
Замечаний: 0% ±

Добрый день, подскажите пожалуйста

[vba]
Код
Sub Высота_строк()
Dim i As Long, rng As Range
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(i, 8) = "*" Then
If rng Is Nothing Then Set rng = Rows(i) Else Set rng = Union(rng, Rows(i))
End If
Next i
If Not rng Is Nothing Then rng.RowHeight = 15
End Sub
[/vba]

куда припилить Application.Dialogs(xlDialogRowHeight).Show чтоб задать высоту через диалоговое окно?
 
Ответить
СообщениеДобрый день, подскажите пожалуйста

[vba]
Код
Sub Высота_строк()
Dim i As Long, rng As Range
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(i, 8) = "*" Then
If rng Is Nothing Then Set rng = Rows(i) Else Set rng = Union(rng, Rows(i))
End If
Next i
If Not rng Is Nothing Then rng.RowHeight = 15
End Sub
[/vba]

куда припилить Application.Dialogs(xlDialogRowHeight).Show чтоб задать высоту через диалоговое окно?

Автор - Gjlhzl
Дата добавления - 23.01.2024 в 17:27
Gustav Дата: Вторник, 23.01.2024, 18:01 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2649
Репутация: 1114 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
Здравствуйте! В последний If и припилить:

[vba]
Код
Sub Высота_строк()
    Dim i As Long, rng As Range, ac As Range
    For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
        If Cells(i, 8) = "*" Then
            If rng Is Nothing Then Set rng = Rows(i) Else Set rng = Union(rng, Rows(i))
        End If
    Next i
    'If Not rng Is Nothing Then rng.RowHeight = 15
    If Not rng Is Nothing Then
        Set ac = Selection 'запоминание активного выделения (ячейки) перед выполнением
        rng.Select
        Application.SendKeys "15" 'значение по умолчанию для диалога
        Application.Dialogs(xlDialogRowHeight).Show
        ac.Select 'восстановление активного выделения (ячейки) после выполнения
    End If
End Sub
[/vba]


МОИ: Ник, Tip box: 41001663842605
 
Ответить
СообщениеЗдравствуйте! В последний If и припилить:

[vba]
Код
Sub Высота_строк()
    Dim i As Long, rng As Range, ac As Range
    For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
        If Cells(i, 8) = "*" Then
            If rng Is Nothing Then Set rng = Rows(i) Else Set rng = Union(rng, Rows(i))
        End If
    Next i
    'If Not rng Is Nothing Then rng.RowHeight = 15
    If Not rng Is Nothing Then
        Set ac = Selection 'запоминание активного выделения (ячейки) перед выполнением
        rng.Select
        Application.SendKeys "15" 'значение по умолчанию для диалога
        Application.Dialogs(xlDialogRowHeight).Show
        ac.Select 'восстановление активного выделения (ячейки) после выполнения
    End If
End Sub
[/vba]

Автор - Gustav
Дата добавления - 23.01.2024 в 18:01
Gjlhzl Дата: Вторник, 23.01.2024, 18:46 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 110
Репутация: 0 ±
Замечаний: 0% ±

Gustav, спасибо большое
 
Ответить
СообщениеGustav, спасибо большое

Автор - Gjlhzl
Дата добавления - 23.01.2024 в 18:46
Gjlhzl Дата: Вторник, 23.01.2024, 18:54 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 110
Репутация: 0 ±
Замечаний: 0% ±

Gustav, а если есть в строках объединенные ячейки то прихватывает и эти строки к тем что в условии и меняет и их высоту
это можно как то обойти?
 
Ответить
СообщениеGustav, а если есть в строках объединенные ячейки то прихватывает и эти строки к тем что в условии и меняет и их высоту
это можно как то обойти?

Автор - Gjlhzl
Дата добавления - 23.01.2024 в 18:54
Gustav Дата: Вторник, 23.01.2024, 19:44 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2649
Репутация: 1114 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
а если есть в строках объединенные ячейки

Тогда можно попробовать принципиально иной подход. Запрос высоты строки сделать перед циклом, через InputBox вместо DialogBox. А высоты строк менять по одной, не объединяя их перед операцией. Похоже, именно предварительное объединение нужных строк мешает при наличии объединенных ячеек.
[vba]
Код
Sub Высота_строк_2()
    Dim i As Long, rh As Double, ac As Range
    Set ac = Selection 'запоминание активного выделения (ячейки) перед выполнением
    rh = CDbl(Application.InputBox("Высота строки:", "Высота строки"))
    Application.ScreenUpdating = False
    For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
        If Cells(i, 8) = "*" Then
            Rows(i).RowHeight = rh
        End If
    Next i
    Application.ScreenUpdating = True
    ac.Select 'восстановление активного выделения (ячейки) после выполнения
End Sub
[/vba]


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
а если есть в строках объединенные ячейки

Тогда можно попробовать принципиально иной подход. Запрос высоты строки сделать перед циклом, через InputBox вместо DialogBox. А высоты строк менять по одной, не объединяя их перед операцией. Похоже, именно предварительное объединение нужных строк мешает при наличии объединенных ячеек.
[vba]
Код
Sub Высота_строк_2()
    Dim i As Long, rh As Double, ac As Range
    Set ac = Selection 'запоминание активного выделения (ячейки) перед выполнением
    rh = CDbl(Application.InputBox("Высота строки:", "Высота строки"))
    Application.ScreenUpdating = False
    For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
        If Cells(i, 8) = "*" Then
            Rows(i).RowHeight = rh
        End If
    Next i
    Application.ScreenUpdating = True
    ac.Select 'восстановление активного выделения (ячейки) после выполнения
End Sub
[/vba]

Автор - Gustav
Дата добавления - 23.01.2024 в 19:44
Gjlhzl Дата: Среда, 24.01.2024, 09:01 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 110
Репутация: 0 ±
Замечаний: 0% ±

Gustav, спасибо, все отлично работает!
 
Ответить
СообщениеGustav, спасибо, все отлично работает!

Автор - Gjlhzl
Дата добавления - 24.01.2024 в 09:01
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Высота строк по условию через диалоговое окно (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!