Страницы: 1
RSS
Поиск в именах листа по значению из ячейки
 
Всем привет.

Есть колонка со значениями. Есть листы, имена которых соответствуют значениям в колонках. Как можно найти и выделить такие листы макросом?
 
Код
=НЕ(ЕОШ(ДВССЫЛ("'"&A1&"'!A1")))
 
МатросНаЗебре,
не похоже на макрос :)
 
И правда )
Код
Sub ПерейтиНаЛист()
    Sheets(ActiveCell.Value).Select
End Sub
 
МатросНаЗебре,
это он находит по одной ячейке. А если выделять диапазон?
 
Цитата
написал:
А если выделять диапазон?
сделайте цикл по значениям
Код
for each cell in selection
    Sheets(cell).Select
next cell
Не бойтесь совершенства. Вам его не достичь.
 
Mershik,
Цитата
Subscript of out range
 
,
ну это кусок кода а не  весь был, я не знаю что вы там выделяете, может название листа с тким как в ячейке просто нет
Код
Sub mrshkei()
Dim cell As Range, arr, k As Long
ReDim arr(1 To Selection.Cells.Count): k = 1
For Each cell In Selection
    arr(k) = CStr(cell)
    k = k + 1
Next cell
Sheets(arr).Select
End Sub
Изменено: Mershik - 19.11.2021 15:52:52
Не бойтесь совершенства. Вам его не достичь.
 
Идея такая - макрос ищет по значению в столбце значение. Открывает лист, выделяет лист, который называется так же, и вставляет (пускай в А1) скопированный диапазон.
Изменено: Breathe of fate - 19.11.2021 16:01:00
 
Один вопрос - одна тема. Здесь - выделение листов
 
Этот код для выделения листов. Имеется в виду, одновременное выделение всех листов, названия которых есть в выделенном диапазоне.
Код
Option Explicit

Sub Макрос2()
     
    Dim r As Range
    On Error Resume Next
    Set r = Intersect(Selection, ActiveSheet.UsedRange)
    On Error GoTo 0
    If Not r Is Nothing Then
        Dim arr As Variant
        If r.Cells.Count = 1 Then
            ReDim arr(1 To 1)
            arr(1) = r.Value
        Else
            arr = Intersect(Selection, ActiveSheet.UsedRange)
        End If
        Dim brr As Variant
        
        Dim v As Variant
        On Error Resume Next
        For Each v In arr
            Err.Clear
            With Sheets(v): End With
            If Err = 0 Then
                If IsEmpty(brr) Then
                    ReDim brr(0 To 0)
                Else
                    ReDim Preserve brr(0 To UBound(brr) + 1)
                End If
                brr(UBound(brr)) = v
            End If
        Next
        On Error GoTo 0
        Sheets(brr).Select
    End If
End Sub
Изменено: МатросНаЗебре - 19.11.2021 16:01:04
 
DEL
Изменено: МатросНаЗебре - 19.11.2021 16:08:13 (Была правка по предыдущему сообщению)
 
Спасибо, всё работает :)
 
Цитата
Breathe of fate написал: найти и выделить
Вставка диапазонов, редактирование - другая тема!. А если бы позже выяснилось, что нужно еще 5 задач реализовать?
Прошу соблюдать правила форума. Это касается  и автора, и помогающего
Страницы: 1
Наверх