2013-07-09 1 views
1

У меня есть таблица (A3-6), которая скрывает строки в соответствии с числом, введенным в ячейку над таблицей (A1). В столбце Row A3-6 пользователь выбирает опцию в ячейке, которая имеет список данных valadation. Теперь я хочу, чтобы каждая из скрытых ячеек устанавливала значения в скрытых ячейках по умолчанию.Для каждой скрытой ячейки задайте значение в ячейке в этой скрытой ячейке

Dim i As Long 
     For i = 2 To 10 
      If (Rows("2:10").Hidden = True) Then 
       'Set the default values for the cell? 
     End If 
     Next i 

Этот код скрывает строки в соответствии с номером, введенным в A1

If Target.Address = "$A$1" Then 
     Rows("3:6").Hidden = True 
     Rows("2:" & 2 + Val(Target.Value)).Hidden = False 
    End If 

enter image description here

+0

Что вы подразумеваете под значением «по умолчанию»? Будет ли работать инструкция типа «Ячейки (2,2) =« MyDefaultValue »? –

+0

Ну, есть небольшая таблица размером около 5 клеток со значениями в каждой ячейке. Я использовал это для создания списка проверки данных, а параметр 1 из раскрывающегося списка является значением по умолчанию. В столбце B пользователь может выбрать только опцию из этого списка. Ответит ли это на ваш вопрос @ d-стройер? –

+0

Извините за длинный ответ, но да, это сработает! –

ответ

1

Это может возможно дать вам несколько идей:

Sub resetHiddenRangeValue() 

    Dim rngMyRange As Range, rngVisible As Range, rngCell As Range 

    Set rngMyRange = Range("A3:A6") 
    Set rngVisible = Range("A3:A6").SpecialCells(xlCellTypeVisible) 

    For Each rngCell In rngMyRange 
     If Intersect(rngCell, rngVisible) Is Nothing Then 
      ' Is the default value rngcell.offset(0,6).value? 
      rngCell.Value = "My Default Value" 
     End If 
    Next rngCell 

End Sub 

Это можно избежать цикла, но его немного сложнее:

Sub resetHiddenRangeValueNoLooping() 

    Dim rngMyRange As Range, rngVisible As Range, rngHidden As Range, varVisible As Variant 

    Set rngMyRange = Range("A3:A6") 
    Set rngVisible = Range("A3:A6").SpecialCells(xlCellTypeVisible) 

    ' Trick: store the initial values of the visible range to a variant array 
    varVisible = rngVisible.Value 

    ' Substitute the contents of rngVisible with something random 
    rngVisible.Value = "Blah_Blah_Blah" 

    ' Use the Columndifferences method to set the hidden range 
    Set rngHidden = rngMyRange.ColumnDifferences(rngVisible(1, 1)) 

    ' Fill up the range with the default value-can also be an array or range of values 
    rngHidden.Value = "My Default Value" 

    ' restore the original values of the visible range 
    rngVisible.Value = varVisible 

End Sub 
+1

Также я думаю, что в вашем первом сегменте кода, если вы замените '(Rows (« 2:10 »). Hidden = True)' с 'Cells (i, 1) .hidden = True', а затем установите' Cells (i , 1) = "My Default Value" 'он должен работать. – Ioannis

+0

Я пробовал цикл, и он сработал. Cheers –

+0

Да, хороший (но я был в ванной, следовательно, задержка :)) – Ioannis

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