Подскажите плз как сделать следующее, если вообще возможно--> хочу создать userform с refedit, чтобы возможно было выделять диапазон ячеек другой книги. Если делать так userform.show 0, то сама форма ни на что не реагирует, да и вообще весь excel виснит. Попутно подскажите как: -правильно использовать set a = range(refedit.value), если были выделены несмежные ячейки. почему-то уходит в ошибку. -как получить диапазон только видимых ячеек при помощи все с той же refedit. Заранее спасибо.
Подскажите плз как сделать следующее, если вообще возможно--> хочу создать userform с refedit, чтобы возможно было выделять диапазон ячеек другой книги. Если делать так userform.show 0, то сама форма ни на что не реагирует, да и вообще весь excel виснит. Попутно подскажите как: -правильно использовать set a = range(refedit.value), если были выделены несмежные ячейки. почему-то уходит в ошибку. -как получить диапазон только видимых ячеек при помощи все с той же refedit. Заранее спасибо.WeRiX
Set rRange = Application.InputBox(Prompt:="выбираем диапазон ", _ Title:="Выбор диапапзона ", Type:=8) For Each cel In rRange.Cells.SpecialCells(xlCellTypeVisible)
Next
[/vba]
Можно так [vba]
Код
Set rRange = Application.InputBox(Prompt:="выбираем диапазон ", _ Title:="Выбор диапапзона ", Type:=8) For Each cel In rRange.Cells.SpecialCells(xlCellTypeVisible)
Если пытаетесь сделать какую-то универсальную процедуру, которая будет лежать, например, в надстройке и должна работать с любыми листами и книгами, то рано радуетесь. У Application.InputBox (....., Type:=8) проблема - это не работает при вызове с листа, на котором есть УФ с формулами листа внутри и не всегда работает с другими листами и книгами. Это обсуждалось НА СТАРОЙ ПЛАНЕТЕ Там же было предложено альтернативное решение, которое с тех пор ни разу меня не подвело, хотя я и использую его во многих своих процедурах.
[vba]
Код
Private Sub test_ApplicationInputBoxType0() Dim rRange As Range Dim Addr: Addr = Application.InputBox("Укажите ячейку", "Выбор ячейки", "=" & Selection.Address, Type:=0) 'If TypeName(Addr) = "Boolean" Then Exit Sub ' если нажали "Отмена", то Addr = False If VarType(Addr) = vbBoolean Then Exit Sub ' если нажали "Отмена", то Addr = False Set rRange = Range(Trim(Mid(Application.ConvertFormula(Addr, xlR1C1, xlA1, True), 2))) MsgBox rRange.AddressLocal(0, 0, 1, 1) End Sub
Private Sub test_ApplicationInputBoxType8() ' http://www.planetaexcel.ru/forum.php?thread_id=14184 ' http://www.planetaexcel.ru/forum.php?thread_id=15119 — "Проблемы с Application.InputBox (....., Type:=8) - не всякие значения хочет принимать" Dim rRange As Range On Error GoTo Error_Exit Application.DisplayAlerts = False Set rRange = Application.InputBox("Укажите ячейку", "Выбор ячейки", Type:=8) Application.DisplayAlerts = True On Error GoTo 0 MsgBox rRange.AddressLocal(0, 0, 1, 1) Error_Exit: If Err Then MsgBox "Error " & Err.Number & " (" & Err.Description & ")" End Sub
[/vba]
Если пытаетесь сделать какую-то универсальную процедуру, которая будет лежать, например, в надстройке и должна работать с любыми листами и книгами, то рано радуетесь. У Application.InputBox (....., Type:=8) проблема - это не работает при вызове с листа, на котором есть УФ с формулами листа внутри и не всегда работает с другими листами и книгами. Это обсуждалось НА СТАРОЙ ПЛАНЕТЕ Там же было предложено альтернативное решение, которое с тех пор ни разу меня не подвело, хотя я и использую его во многих своих процедурах.
[vba]
Код
Private Sub test_ApplicationInputBoxType0() Dim rRange As Range Dim Addr: Addr = Application.InputBox("Укажите ячейку", "Выбор ячейки", "=" & Selection.Address, Type:=0) 'If TypeName(Addr) = "Boolean" Then Exit Sub ' если нажали "Отмена", то Addr = False If VarType(Addr) = vbBoolean Then Exit Sub ' если нажали "Отмена", то Addr = False Set rRange = Range(Trim(Mid(Application.ConvertFormula(Addr, xlR1C1, xlA1, True), 2))) MsgBox rRange.AddressLocal(0, 0, 1, 1) End Sub
Private Sub test_ApplicationInputBoxType8() ' http://www.planetaexcel.ru/forum.php?thread_id=14184 ' http://www.planetaexcel.ru/forum.php?thread_id=15119 — "Проблемы с Application.InputBox (....., Type:=8) - не всякие значения хочет принимать" Dim rRange As Range On Error GoTo Error_Exit Application.DisplayAlerts = False Set rRange = Application.InputBox("Укажите ячейку", "Выбор ячейки", Type:=8) Application.DisplayAlerts = True On Error GoTo 0 MsgBox rRange.AddressLocal(0, 0, 1, 1) Error_Exit: If Err Then MsgBox "Error " & Err.Number & " (" & Err.Description & ")" End Sub