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

Страницы: 1 2 След.
Обращение к объектам на форме в VBA
 
К объектам TextBox  на форме можно обратиться по его имени Me.Controls( "TextBox" & i), или просто по индексу в коллекции создаваемых объектов Me.Controls(i) в порядке их добавления на форму. При этом индекс отображается в TabIndex.
Где то, что то я сделал и внутренний порядок изменился. Проставление  TabIndex в рукопашную через свойства или View - Tab Order,  не влияет на "внутренний счетчик".
Собственно вопрос - можно ли поменять индексы в коллекции элементов на форме?
Это необходимо для обработки их в цикле в определенном порядке.
Решение нашел  Me.Controls( "TextBox" & i) = aArray(i) при заполнении формы, и на сайте у П.Ю. Климова через массив имен в заданном порядке при выгрузке в таблицы.
Код
lCol = 1
For Each iName in aArray("TextBox1", "TextBox5",...)
.Cells(lRow, lCol).Value = Me.Controls(iName).Value
lCol = lCol +1
Next
пакетная обработка ТХТ файлов SpeedCam
 
Ребят, а ни кто не делал vbs для пакетной обработки файлов SpeedCam для навигаторов? Например с сайта SpeedCamOnline.ru загрузил по регионам и надо свести в 1 по уникальным сразу из нескольких текстовых. Задумался сделать, но пока руки не дошли да и как то не кошерно сначала в Экс, а потом пересохранять в текст (это то что умею).
Данные разделяются запятыми (для Навитела) уникальными будет связка X,Y,DIRECTION
IDX,X,Y,TYPE,SPEED,DIRTYPE,DIRECTION
4502,46.1937200,55.9920600,1,50,2,246
Контроль событий ComboBox, Контроль нажатия кнопок ComboBox без привязки к листу на котором он создан.
 
Подскажите пожалуйста, возможно ли контролировать события изменения ComboBox без привязки к листу на котором он создан?
Есть пример решения, хотелось бы вынести процедуру Private Sub TempCombo_KeyDown с модуля листа (Июнь в примере) на котором создан этот ComboBox. Но перенос его в модуль книги по аналогии с контролем события листа ни чего не дает:( А может я не смог задать правильный вопрос Google :(
Так, при активации столбцов B, D, F вызывается ComboBox и надо обработать потом события.
Установка цвета линии графического объекта (фигуры) в ВБА
 
Просьба владельцам Офиса 2010 и выше (или 2003) записать макрорекордером вставку фигуры на лист, изменение цвета и толщины линии, заливки и вставку текста. В 2007 макрорекордер шейпы не пишет  :(  
Полученный код прошу выложить в качестве образца.
2 KurbatovArtur – печать перечня объектов
 
Я немного напишу, как увидел Вашу тему, возможно, это не соответствует действительности и обидит Вас, но если на форуме нет ответов, то искать причину лучше в себе.
Я скачивал и смотрел выложенный файл. Сложилось впечатление, что это не Вы его делали, не знаете, как организованы данные, и что нужно сделать, а хотите просто получить готовый ответ. При этом форумчанам предлагается самостоятельно определить и сделать то, что Вам надо.
По сути, Вам необходим программный перебор данных в 1-й ячейке на скрытом листе со справочной информацией. Если бы Вы потрудились и описали задачу – вариант решения был бы минут через 5.
Если правильно понял надо:
Код
Sub Prnt_allObject() 'печать активного листа
Dim lRow As Long, rngObject As Range, rngTek As Range 'определяем переменные
Application.ScreenUpdating = False
With Worksheets("Имя скрытого листа справочника") ' определяем лист с которого берем данные
Set rngObject = .Range("b2:b20") 'указываем диапазон с данными для выборки объектов (номер, а не наименование)
For Each rngTek In rngObject
.Range("C5").Value = rngTek.Value 'вносим номер объекта в ячейку для расчетов
'-----------------------
'если надо по всем датам, делаем цикл по датам
For lRow = 25 To 37 '(где 25 это номер строки начала данных)
.Range("C25").Value = .Cells(lRow, "B").Value
Next lRow
'-----------------------
'если не успевает Экс рассчитать, ставим задержку (в примере 1 секунда)
'Application.Wait Time:=Now + TimeSerial(0, 0, 01)

'а здесь отправляем документ на печать, строчка из макрорекордера
ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:="HP LaserJet 1200 Series PCL 6 (Ne04:)", Collate:=True
Next
End With
Application.ScreenUpdating = True
End Sub


PS а вот нервничать, и поднимать тему в топ это лишнее...
ОФФ Юра выздоравливай!!!
 
Хотел бы пожелать скорейшего восстановления нашему модератору ЮрийМ!
ОФФ, (не) признанные гении форума
 
Итак, Владимир стал третьим!?  
http://www.planetaexcel.ru/forum.php?thread_id=37428  
Были Pavel55 и Анюточка,  
САША (и куда пропал) - просветленный  
И вот Владимир:) Поздравляем:)
настройка Excel 2007 и запуск макросов
 
Поменяли на работе ПК, поставили Win7, OFFICE2007, Каспера6 и файл вылетает с ошибкой не могу Скомпилировать проект и Automation error.  
Пока в суматохе не разобрался, но дома этот файл под 2007 открылся и даже фамилию не спросил. Библиотеки проверил, все одинаково подключено.  
Посмотреть все ли сервис паки на офис установлены не догадался:(  
Где смотреть и за что душить техподдержку? Может кто то подсказать?
Условное форматирование Ех2007
 
Посмотрите пожалуйста что не так делаю:(  
Сделал простенький табель учета. Для закрашивания нерабочих дней использую УФ.  
при этом не пойму что не так сделал. В заголовке при изменении месяца, ячейка AL1, перекрашивание идет сразу, а вот ниже 10 строки надо или выделять диапазон, или закрывать файл.  
Может ошибся с распространением условий УФ.
ОФФ/ как то Рождество прошло незаметно
 
Навеяло вывешенным шариком на сайте и людьми, возвращающимися вечером с корпоративов;)  
О праздновании Нового года или как меняются времена и нравы на опыте всего одной жизни.  
Детство, конец эпохи социализма в большой стране – числа 30 декабря ставим и наряжаем елку (сосну) в ночь с 31 декабря на 2 января празднуем Новый год. А 3 родители уже в большинстве случаев на работе.  
Рождество проходит незаметно, велика руководящая роль партии. Ну и, наконец, завершаем праздничную кутерьму празднованием Старого Нового года и выбрасываем елку.  
Юность, развал большой страны, так же проходит подготовка и празднованию Нового года, в череду праздников добавляется Рождество, теперь праздничное партсобрание заменено торжественным молебном, и по привычке, завершаем череду праздников выбрасыванием ели 15 января.  
Меняются эпохи, и вот мы взрослеем и уже становимся космополитами. По ощущениям на рубеже 2000 приходит в Россию католическое Рождество. Теперь, если и не ставим елки, то  начинаем праздновать с 24 декабря и далее по уже устоявшемуся графику.  
И вот с 2005 нам дарят десять дней каникул    
И теперь в ночь с 24 декабря на 15 января :)  
С наступающим Вас, дорогие Планетяне, опьянением и здоровья Вашей печени:)
Совмещение 2х разно размерных массивов
 
Столкнулся с задачей оптимальной обработки разно размерных массивов.    
В примере - лист Tabel и Prohod.  
Необходимо на листе Tabel заменить ФИО краткое на Полное из листа Prohod и проставить время входа/выхода на соответствующие даты.  
Сделал через Find перебирая по очереди все данные с листа Prohod, но как то медленно и кажется не совсем правильно;(
2 kuciy Re:Сохранение листа в заданную папку под заданным именем
 
Держите вариант.  
Кнопку не делал. По условию задачи - активный лист. Какой лист будет активным - не знаю.  
Имя файла формируется из значений ячеек во второй строке.  
Это все - дальше дерзайте сами.
Сосчитывание данных с листа в массив
 
Преамбула:)  
Начал использовать запись диапазона в массив  
arrData = Range(Cells(1, 1), Cells(LastRow, 1))  
Пока попадались задачи, что макрос явно запускается с заданного активного листа и ни каких проблем с переносом значений в массив и выгрузкой из массива небыло.  
Но вот столкнулся с задачей что макрос может быть вызван "из любого" места. Активировать принудительно лист не хочется, перебирать по ячейке, можно но:(  
Вопрос! Как можно сосчитать данные в массив с неактивного листа. У меня идет ошибка 13 когда я прописываю Sheets("name").Range("A1:A" & LastRow)  
В общем нужно корректно сосчитывать и вносить данные из/в ячеки /массив
Регистрация календаря mscal.ocx в Windows7
 
Пакет ОФ2007 домашний. Acces отсутствует. Соответственно нет и календарика.  
Вопрос: Как подключить календарик в Windows7 64bit?  
Как для ХР - скопировал файлик в sistem32, в Windows7  
выполняю Regsvr32 c:\windows\system32\mscal.ocx  
не проходит:(  
пишет что элемент отсутствует.  
Жалко, теперь мои файлы не имеют той функциональности;(
определение границ, размерности массива в ВБА
 
Как определить размерность массива myArr(1 to x, 1 to y)-?  
x = Ubound(myArr())  
а y-?  
 
Слэн, кажется, недавно показывал пример, но что то не найдусь:((  
 
И еще можно ли удалять записи из массива и как?  
Например для уменьшения кол-ва записей для последующей обработки и перебора после выполнения условий и выборки части данных удовлетворяющих условию.
Программное удаление записей в ListBox Combobox
 
Пытаюсь программно удалить записи из ListBox (несколько столбцов) на основании выбора значения в Combobox  
http://www.planetaexcel.ru/forum.php?thread_id=14804  
 
Курил сайт П.Ю.Климова, справку – не помогло   
По справке перед удалением ИСТИНА ОБЪЕКТ ИНДЕКС  
С помощью сайта создал конструкцию – но не работает.  
ListBox = frmReg.lbAuto  
For iCount = frmReg.lbAuto.ListCount - 1 To 1 Step -1  
   If frmReg.lbAuto.List(iCount, 11) <> frmReg.ComboBox1.Value Then  
      lbAuto.RemoveItem iCount    
   End If  
 
И еще – можно ли сразу присвоить значения?  
lbAuto.List = iMassiv()  
или очистить листбокс?  
ЗЫ ОФИС2007
Диаграммы в ОФ2007
 
В младшем офисе можно было создать "динамическую" диаграмму.    
Ряды данных именованной формулой через смещение, а значения для ряда уже =имя.  
Создал именованные диапазоны, пытаюсь присвоить значения ряду - ошибка:((  
Больше не поддерживается, или что то не то делаю?
Обработка события листа BeforeDoubleClick без входа в режим редактирования ячейки
 
Собственно и вопрос - нужно запустить макрос по событию листа BeforeDoubleClick( без входа в режим редактирования ячейки.  
Как то не смог найти найти свойство, и после даблклик попадаю в ячейку:((
Запуск макроса по событию в форме
 
Пытаюсь сделать макрос по перемещению ячеек на строку вверх/вниз.  
Если жать на кнопку ОК все работает, но хочу найти событие:(  
Изменение Spinbutton не запускает процедуру, только меняет значение (или не правильно Ф1 понял).  
При этом попытка прописать запуск на изменение TextBox тоже не дает результата. Не ловит программное изменение :(.
Ошибка выполнения макроса...
 
Хочу связать 2 книги. Первая называется ТаблицаСделок, вторая АрхивСделок.  
 
Т.е. при запуске/выходе параллельно запускается вторая.    
Все кажется правильно, макрос делал сам и он у меня работал, теперь же дает ошибку при попытке присвоения заданного листа переменной (код в Лист1)  
Set arhiwSht = Workbooks("АрхивСделок").Sheets("Лист1") 'назначаем переменной имя листа архивой книги  
и при закрытии когда хочу закрыть вторую книгу (ЭтаКнига)  
Workbooks("АрхивСделок").Close saveChanges:=True  
 
Было бы смешно, но что не так в коде или в настройках Ехс.  
Что могло произойти, кроме того что полностью переустановил все, и соответственно что-то может быть не подключил:((
Число прописью, пользовательские функции
 
2 Юрий М  
Юрий, выкладываю 2 файла, которые использую. К сожалению мне было достаточно того, что у меня есть и я не собирал решения которые выкладывали.  
А были надстройками,даже DLL, для боящихся макросов - формулами (vikttur-?)...  
Может кто скачивал - выложит, восстановим копилку.
Автофильтр в ВБА
 
Подскажите в чем проблема.    
Пытаюсь автофильтром в макросе выделить значения - все данные просто скрываются. При этом если войти в сам фильтр - условия и значения переданы правильно, нажимаш кнопочку ОК и все прекрасно фильтруется.
Что с сайтом?
 
Это только у меня - не мог зайти вчера на сайт и сегодня пару часов был без доступа.  
Хотя пингуется нормально, и ответ есть без пропуска и задержка не критична 58 -?
2 Raptor
 
Создал новую тему в догон...  
Почему нет?  
Это у меня, в напримерчике, рабочий вариант...  
Было-бы интересно без дополнительных вычислений тащить разницу именно предпоследний/крайний и не по диапазону, а в фиксированных ячейках...
ТО Новичек ВБА, Минск
 
Прошу прощения, в коде была допущена ошибка...  
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)  
 
Dim myRange As Range  
Dim rng, FilterData, k, aRange  
   
 Set myRange = Range("G5:G100")  
   
 On Error Resume Next  
       
   
 If Selection.Cells.Count > 1 Then Exit Sub  
   
   If Not Intersect(Target, myRange) Is Nothing Then  
         
       ActiveSheet.AutoFilterMode = False  
   
 'rng = Range("B2")  
   
       k = Target.Value  
   
           Application.ScreenUpdating = False  
 
           FilterData = "=" & k  
               If IsEmpty(FilterData) Then Exit Sub  
           ' Фильтровать  
                   With ActiveSheet  
                       .UsedRange  
                       LastRow = .Cells.SpecialCells(xlCellTypeLastCell).Row  
                       Set aRange = Range("G4", Cells(LastRow, "G"))  
                       aRange.AutoFilter Field:=1, Criteria1:=FilterData  
                   End With  
     
           Call copyTo 'вызов макроса копирования был после проверки условия и срабатывал при любом дабл клик...  
     
   End If  
 
 If ActiveCell.Rows.Hidden Then  
   ' Если активная ячейка попала на скрытый ряд - стать ниже последней строки фильтра  
   Cells(rng.Cells(1, 1).Offset(rng.Rows.Count, 0).Row, ActiveCell.Column).Select  
 End If  
   
   
   
 ActiveSheet.AutoFilterMode = False  
 Application.ScreenUpdating = True  
 
End Sub
Что не так с макросом?
 
Пытался помочь, но у пользователя "вылетает" ошибка, которой нет у меня.  
Что это может быть?  
Файл и тема по ссылке  
http://www.planetaexcel.ru/forum.php?thread_id=5144
Пятничный OffTop
 
Собрал пару - тройку ссылок по форуму из серии:  
- Чего хочет Ирена?  
Для новичков - ответ что это означает.  
И вот они главные вопросы форума:  
1. Чего хочет пользователь?  
2. А кому это, вообще-то, надо?  
Планирую продолжать подборку.
Сквозное суммирование ячейки по листам.
 
Как передать в Сумм() имена листов,  
вычисляемые в зависимости от выполнения условий?  
Что-то ни как не могу сообразить, кризис жанра? Или просто пора отдохнуть.
Вычисление формулы массива в ВБА
 
Необходимо переменной передать значение вычисляемое функцией массива. {=МАКС(ДЛСТР(D4:D10))}  
Но к сожалению я ее даже в ячейку листа ввести программно не могу. Не могу понять где ошибка, но не получается... Уже почти все варианты перебрал с http://msoffice.nm.ru/faq/macros/worksheets.htm#faq94.
Проверка наличия скрытых строк, столбцов на листе.
 
Написал макрос по скрытию столбцов, и понял что не знаю существует ли возможность проверки есть/нет скрытых на листе.  
Ведь этот текст можно было легко сократить, если при открытии файла сразу проверить скрытые строки/столбцы.  
Переменная описывает состояние/наличие скрытых и обращаемся только к переменной.  
 
Подскажите пожалуйста, или ссылочку дайте. А то гугл слишком много выдает....  
 
Да и с кнопкой перемудрил. Нужно было ее завязать на ячейку и уже в ячейке менять текст.  
 
Sub ColumnHideShow()  
Dim rng As Range  
Dim i As Long, iRow As Long, iClm As Long  
Dim strKnopka As String  
   
   
 'пропускаем ошибки  
 On Error Resume Next  
    'отключаем обновление и контроль событий  
     Application.ScreenUpdating = False  
     Application.EnableEvents = False  
     
'снимаем текст в кнопке  
   
    ActiveSheet.Shapes("AutoShape 2").Select  
    strKnopka = Selection.Characters.Text  
    Range("A1").Activate  
   
 'отображаем все столбцы  
 If strKnopka = "Отобразить все" Then  
 ActiveSheet.Range(Cells(, 1), Cells(1, Columns.Count)).EntireColumn.Hidden = False  
 strKnopka = "Скрыть столбцы"  
   
 'скрываем пустые столбцы в используемом диапазоне данных  
   Else: With ActiveSheet.UsedRange  
         
       iRow = .Row + .Rows.Count - 1  
       iClm = .Column + .Columns.Count - 1  
       .Range(Cells(1, 1), Cells(1, iClm)).EntireColumn.Hidden = False  
         
           For i = iClm To 1 Step -1  
         
               Set rng = Range(Cells(1, i), Cells(Rows.Count, i)).Find(What:="?*", LookIn:=xlFormulas, _  
                   LookAt:=xlWhole, SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat:=False)  
           
               If rng Is Nothing Then .EntireColumn(i).Hidden = True  
           
           Next i  
             
        strKnopka = "Отобразить все"  
         
     End With  
       
  End If  
       
     'устанавливаем подпись кнопки  
    ActiveSheet.Shapes("AutoShape 2").Select  
    Selection.Characters.Text = strKnopka  
    Range("A1").Activate  
 
   
 Application.EnableEvents = True  
 Application.ScreenUpdating = True  
End Sub
Страницы: 1 2 След.
Наверх