Страницы: 1
RSS
Как привязаться к ячейкам с текстовым идентификатором, чтобы макрос действовал в определенном диапазоне?
 
Здравствуйте. Как сделать, чтобы макрос начал действовать с привязкой к определенной ячейке и до конца определенной ячейке, т.е. у нас допустим в этом же листе есть объединённая ячейка Товары, вот и было бы привязка к наименованию этой ячейки. Ниже в коде   в строке Dim U As RangeSet U = Sheets("Лист1").Range("от ячейки с текстом "Товары":до ячейки с наименованием "Работа""), нужно прописать: между ячейкой (смотри вложение) с текстом Товары  и ячейкой с текстом Работа, т.е. тем самым мы указываем, что в случае, если пользователь работает в диапазоне между этими двумя строками, то действует этот макрос, а если нет (выше строки товары или ниже строки работа), то не действует, там пользователь просто вручную вбивает определенные данные.
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
'Application.ScreenUpdating = False
Dim U As Range
Set U = Sheets("Лист1").Range("от ячейки с текстом "Товары":до ячейки с наименованием "Работа"")
If Not Intersect(Target, U) Is Nothing Then
Level1.Show
End If
'Application.ScreenUpdating = True
End Sub
Просто у меня в этой форме, заказ будет еще распределятся по категориям, Товары, работы и прочее, причем заполнятся будет как выше области товары, так и ниже области товары, но там заполнение будет по другому выпадающему списку, простой выпадающий список, с ссылкой на один лист, где нет градации по ценам, просто выбрали номенклатуру и у нас автоматом подтянулась цена!
Изменено: Дмитрий С - 15.06.2021 13:29:49
 
Код
If Not Intersect(Target, Range(Range("A5"), Range("Z9"))) Is Nothing Then
 
МатросНаЗебре, Здравствуйте. Так здесь тоже привязка идет не к значению (товары, работа) а к конкретной ячейке А5, Z9, но у меня они в разных заказах, будут разные!  
 
Как вариант, используйте метод Find для поиска нужных ячеек.
 
Код
    Dim r As Range
    On Error Resume Next
        Set r = ActiveSheet.UsedRange.Find(What:="Работа", LookAt:=xlWhole)
    On Error GoTo 0
    If Not r Is Nothing Then
        Dim t As Range
        On Error Resume Next
            Set t = ActiveSheet.UsedRange.Find(What:="Товары", LookAt:=xlWhole)
            Set t = t.MergeArea
        On Error GoTo 0
        If Not t Is Nothing Then
            If Not Intersect(Target, Range(t, r)) Is Nothing Then
                Debug.Print "YOUR CODE"
            End If
        End If
    End If
Изменено: МатросНаЗебре - 15.06.2021 17:26:46 (Is Nothing)
 
МатросНаЗебре,Спасибо, попробую!
 
МатросНаЗебре, Здравствуйте, не получается, вообще ни как не реагирует, щелкал разные столбцы, в диапазоне между словом работы и Услуги.
В представленном коде снизу есть закомментированный код, он работает, но в диапазоне от A7 до A500, а мне нужно чтобы было только между двумя строками, ниже я скинул скрин, как у меня на самом деле.
Это код:
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
''Application.ScreenUpdating = False
 Dim U As Range
    On Error Resume Next
    Set U = ActiveSheet.UsedRange.Find(What:="Работы", LookAt:=xlWhole)
    On Error GoTo 0
    If Not U Is Nothing Then
        Dim t As Range
        On Error Resume Next
            Set t = ActiveSheet.UsedRange.Find(What:="Услуги", LookAt:=xlWhole)
            Set t = t.MergeArea
        On Error GoTo 0
        If Not t Is Nothing Then
            If Not Intersect(Target, Range(t, U)) Is Nothing Then
                Debug.Print "YOUR CODE"
            End If
        End If
    End If
'Dim U As Range
'Set U = Sheets("Áëàíê çàêàçà").Range("A7:A500")
'If Not Intersect(Target, U) Is Nothing Then
'Level1.Show
'End If
''Application.ScreenUpdating = True
End Sub

Из него видно, что до строки Работы, будет заполнятся категория товары и разная категория, которая вручную набивается, а после услуги тоже будет забиваться с помощью простого выпадающего списка. ВЫШЕ строки РАБОТЫ и НИЖЕ строки УСЛУГИ, я все сделал, а вот теперь нужно сделать между строками С РАБОТЫ и УСЛУГИ.

Изменено: Дмитрий С - 17.06.2021 12:27:20
 
А если вставить Ваш код вместо
Код
Debug.Print "YOUR CODE"
 
МатросНаЗебре, все понял, свой код то не вставил, а как еще указать, чтобы код данный срабатывал ТОЛЬКО В ПЕРВОМ СТОЛБЦЕ, но ТАКЖЕ МЕЖДУ СТРОКАМИ. Сейчас код свой вставил, все работает, но только во всех столбцах, а мне нужно только в первой
 
Код
If Not Intersect(Target, Range(t, U), Columns("A:A")) Is Nothing Then
Строка 15 в #7.
Изменено: МатросНаЗебре - 17.06.2021 13:08:52
 
МатросНаЗебре, Большое спасибо, теперь супер! Хорошего дня
Страницы: 1
Наверх