Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Выделение нескольких строк в таблице через форму, Не знаю, как выделить несколько строк в основной таблице, используя listbox multiselect extended
 
Nordheim, кажется понял!
При новом выделении в listbox, сначала выполняется
Код
Set rng = Range("a" & i + 2).Resize(, 4)
Затем, так как rng не пустой - происходят объедения с существующем rng.

Еще раз большое спасибо!
Наша суть отражается в наших повторяющихся действиях. Отсюда следует, что совершенство есть не действие, а привычка. Аристотель.
Выделение нескольких строк в таблице через форму, Не знаю, как выделить несколько строк в основной таблице, используя listbox multiselect extended
 
Nordheim, так. Большое спасибо!
Не могли бы пожалуйста пояснить код?
Просто я несколько дней уже бился с этой задачей, пытался записывать выделенные строки в массив, а потом его выделять, результата так и не получил.
А тут такая короткая запись и так хорошо работает.
Изменено: Valo - 28 Янв 2019 20:13:29
Наша суть отражается в наших повторяющихся действиях. Отсюда следует, что совершенство есть не действие, а привычка. Аристотель.
Выделение нескольких строк в таблице через форму, Не знаю, как выделить несколько строк в основной таблице, используя listbox multiselect extended
 
Приветствую вас, уважаемые эксперты!
Помогите пожалуйста решить вопрос с выделением строк в таблице.
Имеется условная таблица, на основе которой создается форма с listbox. По событию change могу выделять по одной строке в основной таблице, но очень бы хотелось иметь возможность выделить множество строк, причем непоследовательно.
Как добавить к уже выделенному диапазону новое выделение, не снимая старого?



Код
Option Explicit
Public Таблица1 As ListObject

Private Sub ListBox1_Change()
    Dim i As Integer
    
    For i = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(i) Then
            Таблица1.ListRows(i + 1).Range.Select
        End If
    Next
End Sub

Private Sub UserForm_Initialize()

    Set Таблица1 = ThisWorkbook.Worksheets("Лист1").ListObjects("Таблица1")
        
    With ListBox1
        ListBox1.Clear
        Dim i As Integer
        For i = 1 To Таблица1.ListRows.Count
            .AddItem
            .Column(0, .ListCount - 1) = Таблица1.DataBodyRange(i, 2)
            .Column(1, .ListCount - 1) = Таблица1.DataBodyRange(i, 4)
        Next
    End With
    
End Sub
Наша суть отражается в наших повторяющихся действиях. Отсюда следует, что совершенство есть не действие, а привычка. Аристотель.
Найти ошибку в макросе, При определенной условиях после закрытия формы, Excel вылетает
 
Приветствую!
Пишу достаточно большую программу и сломал уже себе весь мозг, пытаясь понять, почему после закрытия формы - программа вылетает.
Задача разобраться в причинах сбоя и соответственно помочь устранить проблему.
Цена вопроса: 500руб. на карту сбербанка.

p.s.
В тему обычных вопросов выкладывать проект не хочу.
Понимаю, что в чужом коде разбираться дело сомнительное, поэтому лучше наверное даже связаться по скайпу, чтобы я сразу указал, где происходит затык.
Наша суть отражается в наших повторяющихся действиях. Отсюда следует, что совершенство есть не действие, а привычка. Аристотель.
Событие для группы элементов управления с похожим именем, Выполнить событие для определенных контролов, не перебирая все, находящиеся на форме
 
Sanja, спасибо за подсказку! Как же мне сразу-то не пришло в голову присвоить значение при событии change  :sceptic: .
Результата добиться удалось, еще раз огромное спасибо!
Изменено: Valo - 4 Янв 2019 11:53:47
Наша суть отражается в наших повторяющихся действиях. Отсюда следует, что совершенство есть не действие, а привычка. Аристотель.
Событие для группы элементов управления с похожим именем, Выполнить событие для определенных контролов, не перебирая все, находящиеся на форме
 
Sanja, данную статью я читал. По моему она не очень подходит для моего случая.
По данной статье, у меня получилось сделать проверку вводимых данных в определенные тексбоксы.
Хотя честно сказать, проверку данных мне хотелось бы проводить в момент нажатия кнопки "Добавить", а не прямо во время ввода в текстбокс.
Ну и как занести данные в таблицу используя модуль класса я тоже не очень представляю.
Изменено: Valo - 4 Янв 2019 10:35:50
Наша суть отражается в наших повторяющихся действиях. Отсюда следует, что совершенство есть не действие, а привычка. Аристотель.
Событие для группы элементов управления с похожим именем, Выполнить событие для определенных контролов, не перебирая все, находящиеся на форме
 
Приветствую, уважаемые эксперты!
Прошу оказать помощь в решении следующей задачи:
  • Имеется форма.
  • Главный элемент управления, определяющий, что за параметры попадут в таблицу является multipage.
  • На каждой странице multipage находятся элементы управления, часть из которых имеет однотипное имя (txtD_19; txtD_20 и т.д.)
  • По нажатию на кнопку "Добавить"  - определяется в какой столбец добавить данные и затем они заносятся в таблицу.
На данный момент, разработанный мной макрос проверят все названия элементов на вкладке на соответствие маске, например like "txtD_*" и заносит данные в определенный столбец на основании названия элемента.

Так как в реальном проекте элементов управления много, то быстродействие такого способа не очень устраивает.
Пробовал прописывать код под каждый TextBox, быстродействие лучше, однако терпения писать код под каждый TextBox у меня не хватает, тем более, что каждый TextBox надо еще и проверить.

В уме я представляю себе следующий вариант решения:
Объединить в массив набор нужный элементов и проводить проверку только по элементам в этом массиве, а не на всей форме.
Однако, как реализовать такой алгоритм я не знаю и очень надеюсь на вашу помощь.

Прикладываю минимизированный пример.
Изменено: Valo - 4 Янв 2019 10:25:18
Наша суть отражается в наших повторяющихся действиях. Отсюда следует, что совершенство есть не действие, а привычка. Аристотель.
Макрос сохранения книги. Перехват ошибки при отказе от перезаписи
 
Nordheim, понял. Еще раз большое спасибо!
Наша суть отражается в наших повторяющихся действиях. Отсюда следует, что совершенство есть не действие, а привычка. Аристотель.
Макрос сохранения книги. Перехват ошибки при отказе от перезаписи
 
Nordheim, огромное спасибо! Смысл я понял. Отключаем DisplayAlerts, чтобы проверить наличие файла именно с помощью VBA.
Только зачем переменная fname, если и без нее работает?
Код
Sub Сохранение()

    Application.DisplayAlerts = False
    Папка = "D:\" & Range("A1")
    Подпапка = Range("A2")
    Путь = Папка & "\" & Подпапка
    Название = Range("A3")
    ИмяФайла = Путь & "\" & Название
    
    If Dir(Папка, vbDirectory) = "" Then
        MkDir (Папка)
        ChDir (Папка)
        Else: ChDir (Папка)
    End If
    
    If Dir(Путь, vbDirectory) = "" Then
        MkDir (Путь)
        ChDir (Путь)
        Else: ChDir (Путь)
    End If
    
    If ИмяФайла <> "" Then
        If MsgBox("Файл существует." & vbNewLine & "Хотите заменить?", vbYesNo) = vbNo Then Application.DisplayAlerts = True: Exit Sub
    End If
    
    ActiveWorkbook.SaveAs (ИмяФайла)
    Application.DisplayAlerts = True

End Sub
Изменено: Valo - 30 Ноя 2018 20:58:52
Наша суть отражается в наших повторяющихся действиях. Отсюда следует, что совершенство есть не действие, а привычка. Аристотель.
Макрос сохранения книги. Перехват ошибки при отказе от перезаписи
 
Nordheim, Ігор Гончаренко, если я отвечаю "НЕТ", то просто продолжаю работу с документом.
Изменено: Valo - 30 Ноя 2018 20:39:28
Наша суть отражается в наших повторяющихся действиях. Отсюда следует, что совершенство есть не действие, а привычка. Аристотель.
Макрос сохранения книги. Перехват ошибки при отказе от перезаписи
 
Здравствуйте, уважаемые эксперты!
Понимаю, что вопросов о сохранения книги с помощью макроса великое множество, но найти именно то, с чем у меня проблема - не получилось. Поэтому надеюсь на вашу помощь.
Собственно вот макрос, который я составил:
Код
Sub Сохранение()

    Папка = "D:\" & Range("A1")
    Подпапка = Range("A2")
    Путь = Папка & "\" & Подпапка
    Название = Range("A3")
    ИмяФайла = Путь & "\" & Название
    
    If Dir(Папка, vbDirectory) = "" Then
        MkDir (Папка)
        ChDir (Папка)
        Else: ChDir (Папка)
    End If
    
    If Dir(Путь, vbDirectory) = "" Then
        MkDir (Путь)
        ChDir (Путь)
        Else: ChDir (Путь)
    End If
    
    ActiveWorkbook.SaveAs (ИмяФайла)

End Sub
Меня почти полностью устраивает, как он работает, если бы не одно но:
Когда я сохраняю файл под уже существующем именем, то Excel меня вполне справедливо спрашивает, хочу ли я перезаписать файл.
Если я отвечаю "НЕТ", то появляется ошибка:

Мне бы хотелось, чтобы если я ответил "НЕТ", то ошибка бы не вылезала.

Можно в принципе написать вначале On erroe resume next, но что-то мне подсказывает, что это не лучший вариант.
Может есть способ предотвратить именно эту ошибку? Или как-то завершить макрос при ответе "НЕТ"?
Изменено: Valo - 30 Ноя 2018 20:10:43
Наша суть отражается в наших повторяющихся действиях. Отсюда следует, что совершенство есть не действие, а привычка. Аристотель.
Полные названия месяцев при группировке полей в сводной таблице, Вместо "янв" - январь, "фев" - февраль и т.д.
 
Приветствую, уважаемые эксперты!
Помогите пожалуйста решить следующую задачу.
В сводной таблице, при группировке дат по месяцам, отображаются сокращенные названия месяцев.
Очень хотелось бы понять, как отображать полные названия месяцев? Не "янв", а январь и т.д.
Не совсем еще понимаю, почему через обычный "формат ячеек" не получается поправить это дело?
Изменено: Valo - 12 Ноя 2018 20:08:10
Наша суть отражается в наших повторяющихся действиях. Отсюда следует, что совершенство есть не действие, а привычка. Аристотель.
Пользовательская функция для поиска пересечения в кросс-таблице по 2-м неточным числовым значениям осей
 
Бибигуль, vikttur, Jack Famous, то что нужно и даже больше! Огромное вам спасибо!
Наша суть отражается в наших повторяющихся действиях. Отсюда следует, что совершенство есть не действие, а привычка. Аристотель.
Пользовательская функция для поиска пересечения в кросс-таблице по 2-м неточным числовым значениям осей
 
Действительно, данные в таблице всегда отсортированы по возрастании снизу вверх по Y и слева направо по X.
Наша суть отражается в наших повторяющихся действиях. Отсюда следует, что совершенство есть не действие, а привычка. Аристотель.
Пользовательская функция для поиска пересечения в кросс-таблице по 2-м неточным числовым значениям осей
 
Jack Famous, договорились, я уже на все согласен  :) .
Продолжаю пытать мозг  :sceptic: :
Код
Function ПОБЛИЖБОЛ(ЗНАЧЕНИЯ As Range, ДИАПАЗОН_Y As Range, ДИАПАЗОН_X As Range, Искомый_Y, Искомый_X)

ПОБЛИЖБОЛ = Application.WorksheetFunction.Index(ЗНАЧЕНИЯ,
Application.WorksheetFunction.Match(Application.WorksheetFunction.Min(Application.WorksheetFunction.IF
(ДИАПАЗОН_Y >= Искомый_Y, ДИАПАЗОН_Y, """")), ДИАПАЗОН_Y, 0), 
Application.WorksheetFunction.Match(Application.WorksheetFunction.Min(Application.WorksheetFunction.IF(ДИАПАЗОН_X >= Искомый_X, ДИАПАЗОН_X, """")), ДИАПАЗОН_X, 0))

End Function
Изменено: Valo - 22 Фев 2018 21:34:52
Наша суть отражается в наших повторяющихся действиях. Отсюда следует, что совершенство есть не действие, а привычка. Аристотель.
Пользовательская функция для поиска пересечения в кросс-таблице по 2-м неточным числовым значениям осей
 
Юрий М,мне кажется #6, так как сам по себе "Поиск пересечения в кросс-таблице по 2м неточным числовым значениям осей" у меня имеется, а вот как из него пользовательскую функцию составить - неясно  :sceptic: .

Вот хороший вариант  :) :
Пользовательская функция VBA: поиск пересечения в кросс-таблице по 2-м неточным числовым значениям осей.
Изменено: Valo - 22 Фев 2018 21:06:25
Наша суть отражается в наших повторяющихся действиях. Отсюда следует, что совершенство есть не действие, а привычка. Аристотель.
Пользовательская функция для поиска пересечения в кросс-таблице по 2-м неточным числовым значениям осей
 
Юрий М, нет, прошу прощения. Нажал кнопку "создать" немного раньше времени, а отредактировать название уже не получается  :oops: .
Тема: Помощь при создании пользовательской функции в VBA с использованием стандартных формул EXCEL
Описание: В коде хотелось бы использовать стандартных формул EXCEL для возможности самостоятельного редактирования
Изменено: Valo - 22 Фев 2018 21:00:17
Наша суть отражается в наших повторяющихся действиях. Отсюда следует, что совершенство есть не действие, а привычка. Аристотель.
Пользовательская функция для поиска пересечения в кросс-таблице по 2-м неточным числовым значениям осей
 
Jack Famous, да. Дело в том, что мне часто приходится использовать различные варианты данной формулы (поиск может быть ближайшего меньшего значения или диапазон поиска может быть только по ДИАПАЗОН_X и т.д.). И мне хотелось быть получить пользовательскую функцию, на основе которой я смог бы создавать подобные.
Наша суть отражается в наших повторяющихся действиях. Отсюда следует, что совершенство есть не действие, а привычка. Аристотель.
Пользовательская функция для поиска пересечения в кросс-таблице по 2-м неточным числовым значениям осей
 
Уважаемые эксперты по Excel и VBA!
Многие часы ломаю голову, пытаясь написать пользовательскую функция с помощью разбора обозначений формул при записывании макроса, но все бес толку.
В работе часто приходится использовать достаточно большую формулу массива для поиска значения в диапазоне на пересечении ближайших больших значений по строкам и столбцам:

Код
{=ИНДЕКС(ЗНАЧЕНИЯ;
ПОИСКПОЗ(МИН(ЕСЛИ(ДИАПАЗОН_Y>=Искомый_Y;ДИАПАЗОН_Y;""));ДИАПАЗОН_Y;0);
ПОИСКПОЗ(МИН(ЕСЛИ(ДИАПАЗОН_X>=Искомый_X;ДИАПАЗОН_X;""));ДИАПАЗОН_X;0))}

Задача состоит в том, чтобы пользовательская функция приобрела вид:
Код
=ПОБЛИЖБОЛ(ЗНАЧЕНИЯ; ДИАПАЗОН_Y; Искомый_Y; ДИАПАЗОН_X; Искомый_X)

Прошу помощи в создании пользовательской функции в Excel средствами VBA, используя в коде уже имеющиеся в EXCEL формулы (ИНДЕКС; ПОИСКОПОЗ и т.д.).
Изменено: Valo - 23 Фев 2018 01:44:48
Наша суть отражается в наших повторяющихся действиях. Отсюда следует, что совершенство есть не действие, а привычка. Аристотель.
Список значений, удовлетворяющих условию
 
_Igor_61,то, что нужно. Большое спасибо!
Изменено: Valo - 31 Авг 2017 18:30:42
Наша суть отражается в наших повторяющихся действиях. Отсюда следует, что совершенство есть не действие, а привычка. Аристотель.
Список значений, удовлетворяющих условию
 
Приветствую!
Не могу решить казалось бы простую задачу.
Имеется столбец "Дата" и столбец "Доступно".
В столбце "Доступно" может присутствовать ноль.

Задача:
Создать список допустимых значений в поле "Выбрать дату".
Допустимыми значениями являются значения из столбца "Дата" для которых "Доступно" больше нуля.

Дата Доступно
01.02.2016
6
02.03.2016
0
01.07.2017
7
03.05.2017
4
26.06.2017
7
11.07.2017
0
В данном примере, хочу получить список из значений: 01.02.2016; 01.07.2017; 03.05.2017; 26.06.2017

Как вариант пробовал создавать отдельную таблицу с формулой, которая выводит значения больше ноля, а для нулевых выводит пустое значение "". Все бы хорошо, только при создании списка, в выбор "по стрелке" попадают эти самые пустые значения "".

Надеюсь на вашу помощь!
Изменено: Valo - 30 Авг 2017 20:39:11
Наша суть отражается в наших повторяющихся действиях. Отсюда следует, что совершенство есть не действие, а привычка. Аристотель.
Страницы: 1
Наверх