Добрый день. Я хочу, чтобы пользователю макроса, который я пишу, открывалось какое-то диалоговое окно с различными уточняющими вопросами: один из них - на каком листе находятся такие-то данные. Пользователь кликает на нужный лист и макрос продолжает работу. Application.Inputbox в этом как-то не очень хочет помогать - ему не достаточно выбора только листа, все время на что-нибудь ругается в зависимости от различных type:=
Для примера, как я это вижу:
[vba]
Код
Option Explicit Public strData as String 'Переменная для наименования листов в книге
'Переменные для листов Public shtData1 as Worksheet Public shtData2 as Worksheet Public shtData3 as Worksheet
'----Еще куча разных переменных, не относящихся к посту
Public Sub Links_Values()
strData = 'Здесь вызывается диалог с пользователем, где он кликает на один из листов в текущей книге Set shtData1 = Thisworkbook.Worksheets(strData) strData = 'Здесь вызывается диалог с пользователем, где он кликает на один из листов в текущей книге Set shtData2 = Thisworkbook.Worksheets(strData) strData = 'Здесь вызывается диалог с пользователем, где он кликает на один из листов в текущей книге Set shtData2 = Thisworkbook.Worksheets(strData)
'----Дальнейшее выполнение макроса
End Sub
[/vba]
Возможен такой вариант и с помощью чего это можно осуществить?
Добрый день. Я хочу, чтобы пользователю макроса, который я пишу, открывалось какое-то диалоговое окно с различными уточняющими вопросами: один из них - на каком листе находятся такие-то данные. Пользователь кликает на нужный лист и макрос продолжает работу. Application.Inputbox в этом как-то не очень хочет помогать - ему не достаточно выбора только листа, все время на что-нибудь ругается в зависимости от различных type:=
Для примера, как я это вижу:
[vba]
Код
Option Explicit Public strData as String 'Переменная для наименования листов в книге
'Переменные для листов Public shtData1 as Worksheet Public shtData2 as Worksheet Public shtData3 as Worksheet
'----Еще куча разных переменных, не относящихся к посту
Public Sub Links_Values()
strData = 'Здесь вызывается диалог с пользователем, где он кликает на один из листов в текущей книге Set shtData1 = Thisworkbook.Worksheets(strData) strData = 'Здесь вызывается диалог с пользователем, где он кликает на один из листов в текущей книге Set shtData2 = Thisworkbook.Worksheets(strData) strData = 'Здесь вызывается диалог с пользователем, где он кликает на один из листов в текущей книге Set shtData2 = Thisworkbook.Worksheets(strData)
'----Дальнейшее выполнение макроса
End Sub
[/vba]
Возможен такой вариант и с помощью чего это можно осуществить?Awallon
Application.InputBox("...", "...", Type:=8), который по идее необходимо использовать для получения ссылок на диапазоны, не корректно работает на других листах и на листах, в которых есть ячейки с УФ формулой Для уверенного получения ссылок на диапазоны я использую такой "костыль":
[vba]
Код
Sub test_ApplicationInputBoxType0() ' замена Application.InputBox("...", "...", Type:=8), не работающего на других листах и на листах с УФ формулой ' 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 Dim Addr: Addr = Application.InputBox("Укажите ячейку", "Выбор ячейки", "=" & Selection.Address, Type:=0) 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
[/vba]
Application.InputBox("...", "...", Type:=8), который по идее необходимо использовать для получения ссылок на диапазоны, не корректно работает на других листах и на листах, в которых есть ячейки с УФ формулой Для уверенного получения ссылок на диапазоны я использую такой "костыль":
[vba]
Код
Sub test_ApplicationInputBoxType0() ' замена Application.InputBox("...", "...", Type:=8), не работающего на других листах и на листах с УФ формулой ' 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 Dim Addr: Addr = Application.InputBox("Укажите ячейку", "Выбор ячейки", "=" & Selection.Address, Type:=0) 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