Есть выпадающий список и 6-ть. колонок с заглавием "Объект сравнения №..." Ожидаемый результат: при выборе из выпадающего списка (ВС) количество объектов сравнения (например 3 шт.) остальные колонки (Объект сравнения №4, №5, №6) должны скрываться.
Пробовал применить следующий макрос: [vba]
Код
Option Explicit Sub test() Dim sht As Worksheet Dim a As Integer
Set sht = ThisWorkbook.Worksheets("СП")
If sht.Cells(3, 4) = 1 Then For a = 6 To 10 sht.Columns(a).Hidden = True Next a Else For a = 6 To 10 sht.Columns(a).Hidden = False Next a End If If sht.Cells(3, 4) = 2 Then For a = 7 To 10 sht.Columns(a).Hidden = True Next a Else For a = 7 To 10 sht.Columns(a).Hidden = False Next a End If If sht.Cells(3, 4) = 3 Then For a = 8 To 10 sht.Columns(a).Hidden = True Next a Else For a = 8 To 10 sht.Columns(a).Hidden = False Next a End If If sht.Cells(3, 4) = 4 Then For a = 9 To 10 sht.Columns(a).Hidden = True Next a Else For a = 9 To 10 sht.Columns(a).Hidden = False Next a End If If sht.Cells(3, 4) = 5 Then For a = 10 To 10 sht.Columns(a).Hidden = True Next a Else For a = 10 To 10 sht.Columns(a).Hidden = False Next a End If If sht.Cells(3, 4) = 6 Then For a = 11 To 11 sht.Columns(a).Hidden = True Next a Else For a = 11 To 11 sht.Columns(a).Hidden = False Next a End If End Sub
[/vba]
Результат: программа отображает 5-ть колонок при значениях ВС от 1 до 5 и 6-ть колонок при значении 6.
Добрый день, друзья, помогите с решением.
Есть выпадающий список и 6-ть. колонок с заглавием "Объект сравнения №..." Ожидаемый результат: при выборе из выпадающего списка (ВС) количество объектов сравнения (например 3 шт.) остальные колонки (Объект сравнения №4, №5, №6) должны скрываться.
Пробовал применить следующий макрос: [vba]
Код
Option Explicit Sub test() Dim sht As Worksheet Dim a As Integer
Set sht = ThisWorkbook.Worksheets("СП")
If sht.Cells(3, 4) = 1 Then For a = 6 To 10 sht.Columns(a).Hidden = True Next a Else For a = 6 To 10 sht.Columns(a).Hidden = False Next a End If If sht.Cells(3, 4) = 2 Then For a = 7 To 10 sht.Columns(a).Hidden = True Next a Else For a = 7 To 10 sht.Columns(a).Hidden = False Next a End If If sht.Cells(3, 4) = 3 Then For a = 8 To 10 sht.Columns(a).Hidden = True Next a Else For a = 8 To 10 sht.Columns(a).Hidden = False Next a End If If sht.Cells(3, 4) = 4 Then For a = 9 To 10 sht.Columns(a).Hidden = True Next a Else For a = 9 To 10 sht.Columns(a).Hidden = False Next a End If If sht.Cells(3, 4) = 5 Then For a = 10 To 10 sht.Columns(a).Hidden = True Next a Else For a = 10 To 10 sht.Columns(a).Hidden = False Next a End If If sht.Cells(3, 4) = 6 Then For a = 11 To 11 sht.Columns(a).Hidden = True Next a Else For a = 11 To 11 sht.Columns(a).Hidden = False Next a End If End Sub
[/vba]
Результат: программа отображает 5-ть колонок при значениях ВС от 1 до 5 и 6-ть колонок при значении 6.Вася_Пупкин
Sub test() Dim sht As Worksheet, cnt As Integer Application.ScreenUpdating = False With ThisWorkbook.Worksheets("ÑÏ") cnt = .Cells(3, 4) .Columns(5).Resize(, 6).Hidden = True .Columns(5).Resize(, cnt).Hidden = False End With Application.ScreenUpdating = True End Sub
[/vba] [p.s.]чтобы код был вот такой красивый, используйте теги Код (кнопка #)[/p.s.]
Привет, Вася попробуйте так [vba]
Код
Sub test() Dim sht As Worksheet, cnt As Integer Application.ScreenUpdating = False With ThisWorkbook.Worksheets("ÑÏ") cnt = .Cells(3, 4) .Columns(5).Resize(, 6).Hidden = True .Columns(5).Resize(, cnt).Hidden = False End With Application.ScreenUpdating = True End Sub
[/vba] [p.s.]чтобы код был вот такой красивый, используйте теги Код (кнопка #)[/p.s.]nilem
Option Explicit Sub test() Dim sht As Worksheet Dim i As Integer Dim num As Byte
Set sht = ThisWorkbook.Worksheets(СП") num = sht.Cells(3, 4) For i = 5 To num + 4 sht.Columns(i).Hidden = False Next i For i = num + 5 To 10 sht.Columns(i).Hidden = True Next i End Sub
[/vba] [p.s.]Без необходимости не стоит файл в архив пихать, многим лень заниматься распаковкой
Или с циклами [vba]
Код
Option Explicit Sub test() Dim sht As Worksheet Dim i As Integer Dim num As Byte
Set sht = ThisWorkbook.Worksheets(СП") num = sht.Cells(3, 4) For i = 5 To num + 4 sht.Columns(i).Hidden = False Next i For i = num + 5 To 10 sht.Columns(i).Hidden = True Next i End Sub
[/vba] [p.s.]Без необходимости не стоит файл в архив пихать, многим лень заниматься распаковкой Udik
Проработал сабж. Немного усложню вопрос. При выборе значения 1-6 выпадающего списка листа "СП", на листе "СП" должно остаться соответствующее число колонок E-J, значения остальных колонок должны быть исключены из расчёта. На листах "А-1" и "Расчет Км СП " нужно скрыть соответствующие группы полей (подсвечено заливкой).
Проработал сабж. Немного усложню вопрос. При выборе значения 1-6 выпадающего списка листа "СП", на листе "СП" должно остаться соответствующее число колонок E-J, значения остальных колонок должны быть исключены из расчёта. На листах "А-1" и "Расчет Км СП " нужно скрыть соответствующие группы полей (подсвечено заливкой).Вася_Пупкин