Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Создание именованного диапазона в разных местах по условию - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Создание именованного диапазона в разных местах по условию (Макросы/Sub)
Создание именованного диапазона в разных местах по условию
Kamikadze_N Дата: Среда, 25.01.2017, 11:39 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 75
Репутация: 6 ±
Замечаний: 0% ±

Excel 2010
Добрый день. Подскажите пожалуйста как заставить макрос создавать Именованный диапазон, со сдвигом на две клетки вправо при условии, что над этими клетками пустая ячейка. Файл примера прилагается, код по максимуму откомментировал, за ранее спасибо.
К сообщению приложен файл: 2108989.xlsm (24.5 Kb)
 
Ответить
СообщениеДобрый день. Подскажите пожалуйста как заставить макрос создавать Именованный диапазон, со сдвигом на две клетки вправо при условии, что над этими клетками пустая ячейка. Файл примера прилагается, код по максимуму откомментировал, за ранее спасибо.

Автор - Kamikadze_N
Дата добавления - 25.01.2017 в 11:39
Karataev Дата: Среда, 25.01.2017, 12:00 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 1334
Репутация: 533 ±
Замечаний: 0% ±

Excel
[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("B:B")) Is Nothing Then
       UserForm1.Show
    
    'если у нас отсутствует значение в именованом диапазоне мы его добавим
       
    If IsEmpty(Target) Then Exit Sub   'если нажата клавиша эскейп то заканчиваем работу с выделеной ячейкой
       
    If WorksheetFunction.CountIf(Worksheets("dbTresh").Range("ФИО"), Target) = 0 Then   'выполняем поиск в диапазоне на наличие там имеющегося значения
          lReply = MsgBox("Добавить новое значение  " & _
                         Target & " в БД?", vbYesNo + vbQuestion)
          If lReply = vbYes Then
                   
          'вставляем в именованый диапазон новое значение
            
            sch = 4
            Do While Worksheets("dbTresh").Cells(sch, 1) <> "" 'Находим первую пустую строку в именованом диапазоне
                sch = sch + 1
            Loop
                      
            Worksheets("dbTresh").Cells(sch, 1) = Target  'присваиваем этой строке значение из комбобокс
            
            'создаем именованный диапазон для этого найдем его местоположение в БД
            Sheets("dbDiap").Select
            schI = 1
            Do While Worksheets("dbDiap").Cells(3, schI) <> "" 'Находим первый пустой столбец
                schI = schI + 2
            Loop
            
            'собственно как заставить создаваться Диапазон в зависимости от Толбца?
            Worksheets("dbDiap").Cells(3, schI) = Target.Value
            ActiveWorkbook.Worksheets("dbDiap").Names.Add Name:=Target.Value, _
                RefersTo:=Worksheets("dbDiap").Cells(3, schI).Resize(9)
            
            End If
        End If
    End If
End Sub
[/vba]
 
Ответить
Сообщение[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("B:B")) Is Nothing Then
       UserForm1.Show
    
    'если у нас отсутствует значение в именованом диапазоне мы его добавим
       
    If IsEmpty(Target) Then Exit Sub   'если нажата клавиша эскейп то заканчиваем работу с выделеной ячейкой
       
    If WorksheetFunction.CountIf(Worksheets("dbTresh").Range("ФИО"), Target) = 0 Then   'выполняем поиск в диапазоне на наличие там имеющегося значения
          lReply = MsgBox("Добавить новое значение  " & _
                         Target & " в БД?", vbYesNo + vbQuestion)
          If lReply = vbYes Then
                   
          'вставляем в именованый диапазон новое значение
            
            sch = 4
            Do While Worksheets("dbTresh").Cells(sch, 1) <> "" 'Находим первую пустую строку в именованом диапазоне
                sch = sch + 1
            Loop
                      
            Worksheets("dbTresh").Cells(sch, 1) = Target  'присваиваем этой строке значение из комбобокс
            
            'создаем именованный диапазон для этого найдем его местоположение в БД
            Sheets("dbDiap").Select
            schI = 1
            Do While Worksheets("dbDiap").Cells(3, schI) <> "" 'Находим первый пустой столбец
                schI = schI + 2
            Loop
            
            'собственно как заставить создаваться Диапазон в зависимости от Толбца?
            Worksheets("dbDiap").Cells(3, schI) = Target.Value
            ActiveWorkbook.Worksheets("dbDiap").Names.Add Name:=Target.Value, _
                RefersTo:=Worksheets("dbDiap").Cells(3, schI).Resize(9)
            
            End If
        End If
    End If
End Sub
[/vba]

Автор - Karataev
Дата добавления - 25.01.2017 в 12:00
Kamikadze_N Дата: Среда, 25.01.2017, 13:20 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 75
Репутация: 6 ±
Замечаний: 0% ±

Excel 2010
То что надо! спасибо большое!
 
Ответить
СообщениеТо что надо! спасибо большое!

Автор - Kamikadze_N
Дата добавления - 25.01.2017 в 13:20
Kamikadze_N Дата: Среда, 25.01.2017, 14:18 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 75
Репутация: 6 ±
Замечаний: 0% ±

Excel 2010
Подскажите пожалуйста таким образом случайно не динамический диапазон создается?


Сообщение отредактировал Kamikadze_N - Среда, 25.01.2017, 14:19
 
Ответить
СообщениеПодскажите пожалуйста таким образом случайно не динамический диапазон создается?

Автор - Kamikadze_N
Дата добавления - 25.01.2017 в 14:18
Karataev Дата: Среда, 25.01.2017, 14:43 | Сообщение № 5
Группа: Проверенные
Ранг: Старожил
Сообщений: 1334
Репутация: 533 ±
Замечаний: 0% ±

Excel
Если данные добавлять снизу, то диапазон не включит в себя эти нижние данные. Если же добавлять строки внутри диапазона, то строки будут включены в диапазон, то есть диапазон расширится.
 
Ответить
СообщениеЕсли данные добавлять снизу, то диапазон не включит в себя эти нижние данные. Если же добавлять строки внутри диапазона, то строки будут включены в диапазон, то есть диапазон расширится.

Автор - Karataev
Дата добавления - 25.01.2017 в 14:43
Kamikadze_N Дата: Среда, 25.01.2017, 15:12 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 75
Репутация: 6 ±
Замечаний: 0% ±

Excel 2010
Karataev, А вы случайно не подскажите как этот диапазон распространить на всю книгу. Прост при создании макросом именованные диапазоны работают только на листе bdDiap. А нужно что бы они были доступны во всей книге.
 
Ответить
СообщениеKarataev, А вы случайно не подскажите как этот диапазон распространить на всю книгу. Прост при создании макросом именованные диапазоны работают только на листе bdDiap. А нужно что бы они были доступны во всей книге.

Автор - Kamikadze_N
Дата добавления - 25.01.2017 в 15:12
Karataev Дата: Среда, 25.01.2017, 15:42 | Сообщение № 7
Группа: Проверенные
Ранг: Старожил
Сообщений: 1334
Репутация: 533 ±
Замечаний: 0% ±

Excel
Я специально создавал имя на листе. Если нужно в книге, то так (то есть просто не указывайте лист):
[vba]
Код
ActiveWorkbook.Names.Add Name:=Target.Value, RefersTo:=Worksheets("dbDiap").Cells(3, schI).Resize(9)
[/vba]


Сообщение отредактировал Karataev - Среда, 25.01.2017, 15:43
 
Ответить
СообщениеЯ специально создавал имя на листе. Если нужно в книге, то так (то есть просто не указывайте лист):
[vba]
Код
ActiveWorkbook.Names.Add Name:=Target.Value, RefersTo:=Worksheets("dbDiap").Cells(3, schI).Resize(9)
[/vba]

Автор - Karataev
Дата добавления - 25.01.2017 в 15:42
Kamikadze_N Дата: Среда, 25.01.2017, 16:02 | Сообщение № 8
Группа: Пользователи
Ранг: Участник
Сообщений: 75
Репутация: 6 ±
Замечаний: 0% ±

Excel 2010
Karataev, Спасибо большое еще раз, все теперь как часики работает!
 
Ответить
СообщениеKarataev, Спасибо большое еще раз, все теперь как часики работает!

Автор - Kamikadze_N
Дата добавления - 25.01.2017 в 16:02
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Создание именованного диапазона в разных местах по условию (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!