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

Страницы: 1
Универсальный обработчик событий контролов юзерформы
 
Всем привет,

Пытаюсь сделать универсальный обработчик событий (Change) для определенных контролов (комбобокс и текстбокс) на форме, по аналогии с рабочим кодом (закомментирован) обработчика для одного контрола, но возникает ошибка.

Подскажите, пожалуйста, как лучше это реализовать в одном классе это, не плодить же по классу на каждый тип контрола.

класс clsEventHandler_Universal
Код
Option Explicit

Private WithEvents mControl As MSForms.Control    '<-- тут ошибка возникает

Public Sub AssignControl(c As MSForms.Control)
    Set mControl = c
End Sub

Private Sub mControl_Change()
Debug.Print TypeName(mControl)
    Select Case True
        Case TypeName(mControl) = "TextBox"
            Debug.Print "txt", mControl.Name
        Case TypeName(mControl) = "ComboBox"
            Debug.Print "cbo", mControl.Name
    End Select
End Sub
юзер форма
Код
Private eventHandlerCollection As New Collection

Private Sub UserForm_Initialize()
    Dim c As Control

    Dim handler As clsEventHandler_Universal
    For Each c In Controls
        If TypeName(c) = "ComboBox" Or _
           TypeName(c) = "TextBox" Then
            Set handler = New clsEventHandler_Universal
            handler.AssignControl c
            eventHandlerCollection.Add handler
        End If
    Next    
End Sub
Изменено: user0 - 24.08.2022 09:53:02
Обрезка строк по горизонтали при печати
 
Всем привет,
Подскажите, чем вызвано такая обрезка строк по горизонтали в при печати и можно ли это исправить не копируя данные в новый файл.
Как будто с масштабированием у файла какие-то проблемы.


В окне экселя это еще заметно по масштабу заголовков (в обоих файлах 100% стоит).


Добавил нормальный файл, как оно должно выглядеть.
Изменено: user0 - 17.08.2022 10:35:42
Разница между Resume на GoTo
 
День добрый,

Проблема
Столкнулся с тем что при определенных условиях следующий код при возникновении ошибки в test_2 останавливается на строке Resume proc_exit, открывается окно vba и эта строка выделяется желтым, никакого сообщения об ошибке не выводится (поведение как если бы там было написано Stop).
Если заменить Resume на GoTo, то отрабатывает как и задумано, без остановок.
Код
Public Sub test_1()
 On Error GoTo proc_err
    Call test_2 

proc_exit:
    Debug.Print "proc_exit"
    Exit Sub
proc_err:
    Debug.Print "proc_err", Err.Description
    Resume proc_exit
   'GoTo proc_exit
End Sub

Function test_2()
    Debug.Print sapSession.findById("wnd[0]/usr/ctxtZL22D-MTART").Text
End Function

Условия
Если протестировать этот упрощенный кусок, то работет и Resume и GoTo, но в реале в test_2 идет обращение к контролу на форме SAP (через SAP GUI Scripting).
Без обработки ошибок будет сообщение об ошибке "run-time error 619: Control could not be found by id." (см скриншот), так как такого контрола нет на форме. Вроде бы никакого криминала.

Вопрос
Подскажите, чем обусловлена разница в поведении с Resume и GoTo при обработке ошибок в данном случае.
Изменено: user0 - 09.05.2022 10:49:52
Даблклик при открытии формы выделяет строку в списке ListBox
 
Всем привет,

Открываю форму по даблклику на ячейках с данными в столбце А (открывается в центре окна экселя) и выделяю текущую строку в списке формы.
Возникла проблема - если так совпадает что список в форме открывается поверх курсора, то автоматически выделяется строка в списке, в том месте где находится курсор. Как будто я кликаю по списку уже после открытия формы.

Чтобы воспроизвести эффект надо сделать окно экселя маленьким (см картинку), например:
1) при даблклике на ячейке A11, открывается форма и в списке уже выделена строка на том же уровне - так не должно быть.
2) при даблклике на ячейке A23, открывается форма, список в форме находтся не под курсором и выделяется корректное значение. Все ок, так и должно быть.

Как убрать такое поведение?

кросспост
Заливка областей, формат диаграммы
 
Добрый день,
Помогите, пожалуйста, доработать диаграмму с временными отрезками.

Необходимо:
1) закрасить 2 области с 21 по 6 часов
2) добавить линии на каждые 0:00

Excel 2013 - ссылка на источних данных для сводной
 
После установки Excel 2013 (что превью, что финала) изменилось поведение системы при обработке ссылок на источник данных для сводной таблицы.    
 
Если файл сохраняется в Excel 2013, то после любой операции с файлом (переименование/перемещение/копирование) относительная ссылка на источник данных для сводной преобразуется в абсолютную. Ссылка на данные может быть задана простым диапазоном или проименованым, на этом же листе или соседнем - без разницы. Местоположение файла тоже роли не играет, у меня так происходит и на локальном диске (рабочем столе) и сетевом и внешнем.  
 
Сталкивался ли кто-нибудь с таким поведением Excel 2013 и если да то как поборол? С файлами, сохраненные в Excel 2010 на той же машине таких метаморфоз не случается.  
 
кросспост  
http://www.excel-vba.ru/forum/index.php?topic=1718
Расчет передвижения персонала и необходимых транспортных средств
 
Добрый день,  
 
Помогите, пожалуйста, решить задачу на расчет кол-ва перемещающегося персонала и транспорта, необходимого для его перемещения.  
 
Дано:    
Personnel – несколько групп персонала, для которых установлена опреденная длительность вахты, время заезда и срока пребывания на объекте.  
Crewchange – кол-во персонала, которое необходимо переместить (мобилизовать/демобилизлвать, сменить по окончанию вахты) четырьмя видами транспорта (вертолет-и-самолет или судно-и-поезд).  
Transport – кол-во рейдов того или иного вида транспорта, необходимое для перевозки людей в заданную неделю.  
 
Сейчас люди суммируются по типу транспортного средства через цветовое кодирование (добавлена функция ColorFunction). Но суммируются без учета длительности вахт.  
 
Необходимо добавить возможность распределения перемещающегося персонала в зависимости от времени заезда/выезда с объекта и длительности вахты (желтым выделено - как это примерно должно выглядеть).
Рассчет задержки из-за непогоды
 
Доброго времени суток,  
 
Помогите, пожалуйста, с решением задачи на вычисление задержки судна(ов) в порту(ах) из-за непогоды. Критерии погоды могут меняться, соответственно нельзя заранее просчитать вероятную задержку в определенном месяце. Неизменным остается только время на обработку судна.  
 
Изменяющиеся из-за критериев "непогоды" вводные выделено желтым в примере. Я рассчитал задержу из-за непогоды для нескольких месяцев, но это приблизительный "расчет на пальцах", с таблицей где приведены все дни месяца.. и, к сожалению, он не работает при изменяемых исходных значениях.  
 
зы: пока изучаю формулу вероятность
Вычисление максимума
 
Доброго времени суток,  
 
Подскажите как вычислить максимум для повторяющихся нечисловых значений. В частности, данные за несколько месяцев по кол-ву прибывающих и убывающих людей в день. Необходимо найти найти максимальное кол-во прибывающих (On) и убывающих (Off) за все время для каждого дня недели и построить график. Пытаюсь сделать это сводной табл, сводным графиком, но что-то не выходит.  
 
ps. может еще подскажете, как на графике выстроить дни недели (буквенные обозначения) по порядку, вез использования цифр.  
 
Файл-пример во вложении. В примере, в сводной табл. указаны просто общее кол-во прибывших, убывших с разбивкой по дням.
Страницы: 1
Наверх