Всем доброго утра! Подскажите уважаемые, в книге в разных местах есть проверки. Как найти все эти проверки и проставить на них гиперссылки. Ячейки, которые надо найти можно покрасить или сделать именованными (так вроде именованный диапазон называется), чтобы макросу было проще найти. Пример прилагаю.
Я в VBA ноль, но буду благодарен за любую наводку
Всем доброго утра! Подскажите уважаемые, в книге в разных местах есть проверки. Как найти все эти проверки и проставить на них гиперссылки. Ячейки, которые надо найти можно покрасить или сделать именованными (так вроде именованный диапазон называется), чтобы макросу было проще найти. Пример прилагаю.
Я в VBA ноль, но буду благодарен за любую наводкуSanchez
Sub www() Dim c As Range, f$, sh As Worksheet, r As Range, s$ Application.FindFormat.Clear Application.FindFormat.Font.ColorIndex = 3 For Each sh In ThisWorkbook.Worksheets If sh.Name <> "Лист1" Then With sh.UsedRange Set c = .Find("*", LookIn:=xlValues, SearchFormat:=True) If Not c Is Nothing Then
s = c.Address(external:=-1) f = s Do Set r = Sheets("Лист1").[a65536].End(xlUp)(2) Sheets("Лист1").Hyperlinks.Add Anchor:=r, Address:="", SubAddress:=f r.Hyperlinks(1).TextToDisplay = c.Text Set c = .Find("*", c, LookIn:=xlValues, SearchFormat:=True) f = c.Address(external:=-1) Loop While Not c Is Nothing And f <> s End If End With End If Next End Sub
[/vba]
Sanchez, по цвету шрифта:
[vba]
Код
Sub www() Dim c As Range, f$, sh As Worksheet, r As Range, s$ Application.FindFormat.Clear Application.FindFormat.Font.ColorIndex = 3 For Each sh In ThisWorkbook.Worksheets If sh.Name <> "Лист1" Then With sh.UsedRange Set c = .Find("*", LookIn:=xlValues, SearchFormat:=True) If Not c Is Nothing Then
s = c.Address(external:=-1) f = s Do Set r = Sheets("Лист1").[a65536].End(xlUp)(2) Sheets("Лист1").Hyperlinks.Add Anchor:=r, Address:="", SubAddress:=f r.Hyperlinks(1).TextToDisplay = c.Text Set c = .Find("*", c, LookIn:=xlValues, SearchFormat:=True) f = c.Address(external:=-1) Loop While Not c Is Nothing And f <> s End If End With End If Next End Sub
Могли бы вы подсказать, как вместо гипер ссылок сделать обычные ссылки. Как-то примерно так она ставится (это я записью макроса делал) ActiveCell.FormulaR1C1 = "=Лист2!R[7]C[-8]"
Стиль формулы R1C1 я конечно не использую, так как не понимаю его, но макрос почему-то только так записывает Я раз в 2 недели пробовал решить эту проблему, но увы.
Спасибо большое уважаемый!
Могли бы вы подсказать, как вместо гипер ссылок сделать обычные ссылки. Как-то примерно так она ставится (это я записью макроса делал) ActiveCell.FormulaR1C1 = "=Лист2!R[7]C[-8]"
Стиль формулы R1C1 я конечно не использую, так как не понимаю его, но макрос почему-то только так записывает Я раз в 2 недели пробовал решить эту проблему, но увы.Sanchez
Сообщение отредактировал Sanchez - Пятница, 30.08.2013, 23:44
Еще проще, но зачем Вы сразу просили гиперcсылки? [vba]
Код
Sub www() Dim c As Range, f$, sh As Worksheet, s$ Application.FindFormat.Clear Application.FindFormat.Font.ColorIndex = 3 For Each sh In ThisWorkbook.Worksheets If sh.Name <> "Лист1" Then With sh.UsedRange Set c = .Find("*", LookIn:=xlValues, SearchFormat:=True) If Not c Is Nothing Then s = c.Address(external:=-1) f = s Do Sheets("Лист1").[a65536].End(xlUp)(2).Formula = "=" & f Set c = .Find("*", c, LookIn:=xlValues, SearchFormat:=True) f = c.Address(external:=-1) Loop While Not c Is Nothing And f <> s End If End With End If Next End Sub
[/vba]
Еще проще, но зачем Вы сразу просили гиперcсылки? [vba]
Код
Sub www() Dim c As Range, f$, sh As Worksheet, s$ Application.FindFormat.Clear Application.FindFormat.Font.ColorIndex = 3 For Each sh In ThisWorkbook.Worksheets If sh.Name <> "Лист1" Then With sh.UsedRange Set c = .Find("*", LookIn:=xlValues, SearchFormat:=True) If Not c Is Nothing Then s = c.Address(external:=-1) f = s Do Sheets("Лист1").[a65536].End(xlUp)(2).Formula = "=" & f Set c = .Find("*", c, LookIn:=xlValues, SearchFormat:=True) f = c.Address(external:=-1) Loop While Not c Is Nothing And f <> s End If End With End If Next End Sub