Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 След.
VBA добавить чек-бокс на лист и сохранить его значение в массив
 
tolstak, тогда сделаю проще:)
Код
[A1:D1000000]
VBA добавить чек-бокс на лист и сохранить его значение в массив
 
tolstak, так правильно? :)
Код
If allowedToSpace Is Nothing Then Set allowedToSpace = UNION([B:B],[D:D],[F:F])
VBA добавить чек-бокс на лист и сохранить его значение в массив
 
Юрий М, ок, понял:)
VBA добавить чек-бокс на лист и сохранить его значение в массив
 
Тоесть через переменную передавать? Встроенной функции нет...?:)))
VBA добавить чек-бокс на лист и сохранить его значение в массив
 
Цитата
Юрий М написал:
нет - разговор про LastRow ))
До последней не пустой ячейки))) Это оно?
VBA добавить чек-бокс на лист и сохранить его значение в массив
 
tolstak, очень круто получилось! я аж завис жмякая пробел:)

Только можно как то диапазон [A1:D15] изменить на [A1:до конца...] или только вариант передавать значение в переменной?
Изменено: prostor - 22.08.2017 23:55:09
VBA строковая функция Абракадабра
 
Приветствую,

Собственно, возник такой вопрос - как исправлять абракадабру в строках? В стандартных строковых функциях такого нет, на сколько я понял...
зы. В моем понимании, абракадабра, это когда вводишь русское слово, в английской раскладке (или наоборот) и получается что то вроде такого: Gkfytnf "rctkm
вместо: Планета Эксель

Прошу вашей помощи. Мой мозг пока это не может осилить:)

Файл с демо-данными прикрепил. Заранее, благодарю
Изменено: prostor - 22.08.2017 23:51:21
VBA добавить чек-бокс на лист и сохранить его значение в массив
 
Цитата
Юрий М написал:
В массив - для чего? Что с этим массивом делать, куда его выгружать. Ведь массив не ради массива?
как вариант, после заполнения таблицы - разблокировать диапазон и выкатить массив на лист в соответствующие ячейки...
Цитата
Юрий М написал:
Ещё вариант: создать выпадающий список (один) или ComboBox (тоже один) на три позиции: Да/Нет/Неизвестно. Список (ComboBox) позиционировать только в заданном диапазоне в активной ячейке.
Выпадающий список, первым делом подумал за него, но не вариант, ибо на один тык больше выходит. На объеме это много...
КомбоБокс на три позиции - попробую, с позиционирование... идея вроде здравая.

Спасибо:)
VBA добавить чек-бокс на лист и сохранить его значение в массив
 
Цитата
Юрий М написал:
На ввод пробела можно реагировать точно также, как на постановку галки в ЧекБоксе.
Буду грызть гранит науки:) Думаю, постепенно в теме разберусь и сделаю задуманное..)))
VBA добавить чек-бокс на лист и сохранить его значение в массив
 
Юрий М, 100500 номенклатур, делаю визуальный осмотр на приемке и раз в пол года, на наличие дефектов и тп. Бегать с планшеткой и карандашом, как то напряжно. А вот работать с тремя колонками в excel уже удобней...
VBA добавить чек-бокс на лист и сохранить его значение в массив
 
Цитата
RAN написал: коим образом использование даблклик или правый клик снижает функционал?
Даблклик - нет у меня мышки для этого:) на тачпаде не удобно:) ну и на пробел нет реакции как у чекбокса.
Под правым кликом живет менюшка... так пусть себе живет спокойно, зачем ее выселять:)
VBA добавить чек-бокс на лист и сохранить его значение в массив
 
Цитата
Юрий М написал:
Куда запоминать ввод?
В массив, например...
Цитата
Юрий М написал:
И вообще - покажите на простом примере, что Вы хотите получить и зачем это нужно?
Так последний файлик в этой теме, очень хорошо демонстрирует что я хочу и зачем это нужно.
1000 строк * 3 колонки = 3000 чекбоксов - это создает определенные неудобства из-за резкого снижения быстродействия.
В силу своей ограниченности знания VBA, я не знаю как решить это проблемку, и можно ли ее вообще как то решить, без потери функционала чекбоксов, но получив работу excel без тормозов... вот
VBA добавить чек-бокс на лист и сохранить его значение в массив
 
Продублировал, что бы убедится, что мы понимаем друг друга верно:)

Пробел - ввод символа, я это понимаю:) Может тогда заблокировать диапазон (запретить ввод в диапазоне), но при этом считывать нажатые клавиши и запоминать выделенную ячейку? так можно?:)
VBA добавить чек-бокс на лист и сохранить его значение в массив
 
Цитата
Юрий М написал: Можно: событие Worksheet_SelectionChange...Worksheet_BeforeDoubleClick или Worksheet_BeforeRightClick.
Worksheet_SelectionChange - почти то что надо, но оно же срабатывает именно на выделение ячейки, это не канает, ибо может быть случайное выделение. Ну и такой еще момент есть, когда работаешь в таблице, последовательно с ячейками, перемещаешся вверх/вниз стрелками на клавиатуре, а это уже это выделение...

Worksheet_BeforeRightClick - правый клик, это все же правый, не левый... Worksheet_BeforeDoubleClick - самое оно, в данной ситуации, но у меня нет мышки и я не уверен что буду ей когда либо пользоваться, так же, не проверял, но предполагаю, что это событие не реагирует на кнопку пробел... :)

Вот если можно было бы накатать такую функцию, которая в точности повторяла свойства реагирования чек-бокса, - было бы люкс : левый клик мыши / тап на тачпаде, выделеная ячейка + жмякнутый пробел...
Изменено: prostor - 21.08.2017 19:44:47
VBA добавить чек-бокс на лист и сохранить его значение в массив
 
Цитата
Юрий М написал:
Ввод указанного символа - уже событие.  
Вввод символа это понятно. но всетаки хочется полный аналог чек-бокса, но без "этих тяжелых элементов". Типа, левыый клик по ячейке - отрисовалась галочка...

В случае, если вариант только ввода символа с клавиатуры, - принципиальной разницы нет, что вводить, на мой взгляд, хоть букву Ё :)
VBA добавить чек-бокс на лист и сохранить его значение в массив
 
Думал об этом тоже... Но тогда возникает еще такой вопрос:
Возможно ли как то прикрутить к этому псевдо-чекбоксу, такие же свойства реагирования на события, как у настоящего. А именно: клик левой кнопкой мыши, кнопка пробел на клавиатуре?
VBA добавить чек-бокс на лист и сохранить его значение в массив
 
Nordheim, что то вообще не заводится... выдает ошибку на строке dic1.Add CheckBoxes, 0. Что то про ассоциации...((
VBA Worksheet Change вместо ChekBox
 
Юрий М, Оба варианта отлично сработали. Взял с Union.

Большущее Спасибо!:)
VBA Worksheet Change вместо ChekBox
 
Юрий М,  Не могу понять как задать Target.Offset для 6й колонки (центральная)... Вроде все правильно, шаг влево, шаг вправо...

Вроде, как я понимаю, заполняется диапазон От и До, а не ячейка с шагом влево и шагом вправо...
Код
           If Target.Column = 6 Then 
                With Target
                    .Interior.ColorIndex = 15
                    .Value = "YES"
                End With
                With Range(Target.Offset(0, -1), Target.Offset(0, 1))
                    .Value = "Not"
                    .Interior.ColorIndex = xlNone
                End With
            End If
Изменено: prostor - 20.08.2017 00:21:42
VBA Worksheet Change вместо ChekBox
 
Юрий М,

Заработало... Перед последним IFом надо было поставить:) а я за него вписал... не внимательный..
Код
   Application.EnableEvents = True
    End If
End Sub
VBA Worksheet Change вместо ChekBox
 
Юрий М,
Цитата
Юрий М написал:
Выполните эту строку в окне Immediate
Один раз сработало... только один

Эта строчка ничего не поменяла
Код
...
Application.EnableEvents = True
End Sub
VBA Worksheet Change вместо ChekBox
 
Юрий М, да, только для столбца Е.
У меня вообще ничего не происходит... может какую-то библиотеку надо включить?
VBA Worksheet Change вместо ChekBox
 
Юрий М, Что то вообще не заводится... что не так?
Код
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'Работаем в диапазоне из трех колонок E, F, G
    If Target.Cells.Count > 1 Then Exit Sub
    
    If Not Intersect(Target, Range("E2:E100, F2:F100, G2:G100")) Is Nothing Then
        Application.EnableEvents = False 'Отключили события, иначе вызываем рекурсию

        If Target.Value = 1 Then 'Проверяем содержимое ячейки, если единица, то...
            If Target.Column = 5 Then 'Проверяем номер колонки, если пять, то...
                With Target
                    .Interior.ColorIndex = 15
                    .Value = "YES"
                End With
                With Range(Target.Offset(0, 1), Target.Offset(0, 2))
                    .Value = "Not"
                    .Interior.ColorIndex = xlNone
                End With
            End If
        End If
    End If
     Application.EnableEvents = true 'Включили события, иначе вызываем рекурсию <--- Добавлено Ю.М.
End Sub
VBA Worksheet Change вместо ChekBox
 
Цитата
Юрий М написал:
Тогда рассмотрите вариант замены ввода единички на даблклик )
Уже побывал, неудобно, я мышку в руках не держал лет 10...:)
VBA Worksheet Change вместо ChekBox
 
Цитата
Юрий М написал:
prostor , не нужно писать через строку.
Не понял...

Цитата
Юрий М написал:
А зачем вводить единичку? Какова уель?
На чекбоксе ставим галочку, тут вводим единичку. Можно вводить что угодно...:)
VBA Worksheet Change вместо ChekBox
 
Приветствую,

Это продолжение темы про чекбоксы, так сказать альтернативное решение, если надо чекать много-много строк.
---
Собственно, заюзал кое-как Worksheet Change, работает почти как надо, но кода нагородил, кажись много, лишнего:) И еще вылазит ошибка, если на листе выделить заполненный диапазон и удалить содержимое ячеек.

Буду благодарен за исправления и улучшения. Уверен, можно как-то изящней все оформить:)

Файл приложил..
---
Рабочие колонки E, F, G. Жмем циферку 1 на клавиатуре.
Изменено: prostor - 19.08.2017 21:45:10
VBA добавить чек-бокс на лист и сохранить его значение в массив
 
tolstak, Nordheim, а можно как-то сделать, что бы сама ячейка реагировала на клик (событие) и красилась в цвет, без чекбоксов... ну и дальше снимать с ячейки цвет...? как вариант...:)
---

Или как вариант 2: поместить на лист три кнопки (Да, Нет, Неизвестно) и нажатие на кнопку добавляло значение в ячейку ряда, а выделение ряда менялось бы динамически вниз, после нажатия одной из кнопки... Только кнопки должны быть плавающие - менять положение следом за скролом:)
Изменено: prostor - 19.08.2017 15:14:31
VBA добавить чек-бокс на лист и сохранить его значение в массив
 
Уже было подумал, что все интересное позади, но не тут то было:) Веселье продолжается...

Такая вот ситуация: 3 колонки * 1000 строк = 3000 чекбоксов...
Итог: excel подвисает, минуты на две при добавлении чекбоксов на лист и выдает ошибку при попытке удаления чекбоксов макросом. Ну и еще притормаживает (самую малость) при скроле листа.
Вопрос: что в таких ситуация обычно делают профи? :))))

Все, на что хватило моих знаний, - отключить всякую активность excel при старте модуля и включить на финише...
Дальше пропасть. Прошу вашей помощи! Файлик с демо-данными приложил.
VBA добавить чек-бокс на лист и сохранить его значение в массив
 
tolstak, Nordheim, спасибо за вашу помощь! :)

Начинаю чуток лучше разбираться в коде, мне это нравится..:)
VBA добавить чек-бокс на лист и сохранить его значение в массив
 
tolstak, верно понимаю, что IF срабатывает когда в памяти нет словаря (после закрыл-открыл файл) - далее создается нужный словарь и в него снимается текущее состояние чек-боксов?

Сорри за дотошность, не очень хорошо еще разбираюсь в коде, хочу все-все понять...:)
Страницы: 1 2 3 След.
Наверх