Sub SVZ()
Dim rRange As Range
Dim x As Range
Do
On Error Resume Next
Set rRange = Application.InputBox(Prompt:="Select the formulas", _
Title:="VALUES ONLY", Type:=8)
If rRange Is Nothing Then Exit Do
If rRange Is x Then Exit Do
Set x = rRange
rRange = rRange.Value
Loop Until rRange Is Nothing
End Sub
Специальная вставка. Значения.
Код:
Необходимо чтобы он заработал при включенном автофильтре, т.е. если фильтр выделяет 2,4,7ю строки, то при выделении диапазона A2:A7 значения должны вставляться только в A2,A4,A7. При этом A3,A5,A6 должны остаться нетронутыми.
Возможноли это и если да, то как?
P.S. Буду рад любой критике существующего макроса.
Код:
If Лист1.AutoFilterMode = True Then
If Лист1.FilterMode = True Then
With Лист1.AutoFilter
For Each iCell In .Range.SpecialCells(xlVisible)
iCell.Value = iCell.Value
Next
End With
End If
End If
If Лист1.FilterMode = True Then
With Лист1.AutoFilter
For Each iCell In .Range.SpecialCells(xlVisible)
iCell.Value = iCell.Value
Next
End With
End If
End If
Цитата:
Originally posted by pashulka
Код:
If Лист1.AutoFilterMode = True Then
If Лист1.FilterMode = True Then
With Лист1.AutoFilter
For Each iCell In .Range.SpecialCells(xlVisible)
iCell.Value = iCell.Value
Next
End With
End If
End If
If Лист1.FilterMode = True Then
With Лист1.AutoFilter
For Each iCell In .Range.SpecialCells(xlVisible)
iCell.Value = iCell.Value
Next
End With
End If
End If
Спасибо, именно этого мне и не хватало!
Только я использовал часть кода без if - не будет ли проблемм?
Код:
For Each icell In rRange.SpecialCells(xlVisible)
icell.Value = icell.Value
Next
icell.Value = icell.Value
Next
Если убрать все инструкции If Then Else, то "теряется" привязка к установленному и применённому автофильтру, т.е. сокращённый вариант будет работать с любым диапазоном. Если это допустимо, то можно оставить всё как есть (конечно при условии, что rRange действительно представляет собой об'ект Range)