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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 145 След.
Настройка вертикального скрола в UserForm через Свойство ScrollBars, Отключение скролла у встроенных кнопок в пользовательской форме
 
... и не забудьте про свойство Frame.ScrollHeight.
Изменено: sokol92 - 27.11.2022 17:10:42
Владимир
Американский формат даты перевести в нормальный вид
 
В подобных случаях обычно достаточно:
Код
Sub test()
  With Selection
    .NumberFormat = "m/d/yyyy"
    .Value = .Value
  End With
End Sub
Владимир
Визуально не отличимые не индетичные текстовые значения, Визуально не отличимые не индетичные текстовые значения
 
Остается добавить, что движок нашего форума не дружит с неразрывным пробелом.  :)
Изменено: sokol92 - 11.11.2022 15:13:06
Владимир
Визуально не отличимые не индетичные текстовые значения, Визуально не отличимые не индетичные текстовые значения
 
Почитайте раздел "Символы пробела в Unicode" здесь.
Владимир
Формула расчета от обратного, Расчет ЗП от обратного
 
Посмотрите аналогичную тему здесь.
Владимир
Доступ к коллекции собственного класса через default свойство, Доступ к элементу коллекции из класса
 
В примере  из #5 свойство Rows объекта Table должно возвращать объект типа Rows. Однако реализация свойствo Item в объекте Rows  объект не возвращает.
Владимир
ДР (ex HB)
 
Они все родились в 1966 году.
Владимир
Доступ к коллекции собственного класса через default свойство, Доступ к элементу коллекции из класса
 
Почитайте классическую статью http://www.cpearson.com/excel/DefaultMember.aspx
Владимир
Длина текстовых значений выше 255 символов в гиперссылках
 
В макросах надежнее использовать метод Workbook.FollowHyperlink.
Владимир
Фильтрация в сводной где более 10 000 значений
 
Цитата
Jack Famous написал:
заметно же будет только в большом цикле - или вы о чём-то другом, а не о скорости?
В данной задаче (и подобных) цикл может быть и большим (если надо отобразить много значений).
Владимир
Фильтрация в сводной где более 10 000 значений
 
Добрый день, Алексей! Да, возможностью "пакетной" модификации объекта всегда нужно пользоваться. Еще один пример подобной возможности Application.PrintCommunication.
Кроме того, конструкция
Код
If object.property<>value Then object.property=value

часто эффективнее, чем "лобовое" присвоение
Код
object.property=value
Изменено: sokol92 - 07.11.2022 14:44:30
Владимир
Фильтрация в сводной где более 10 000 значений
 
Цитата
написал:
видимо функционалом самой сводной это не решается
Потестируйте #10 (для "обычной" сводной таблицы).
Изменено: sokol92 - 06.11.2022 21:31:37
Владимир
Фильтрация в сводной где более 10 000 значений
 
Цитата
написал:
есть макрос, но он долго работает 3-4 минут
Есть чуть-чуть иной макрос, работает 0,02 секунды.  :)

Код
Sub Test2()
  Dim pt As PivotTable, pf As PivotField, pi As PivotItem, str As String, v, t As Double
  t = Timer
  Set pt = ActiveSheet.PivotTables(1)
  pt.ManualUpdate = True
  Set pf = pt.PivotFields("Items")
  
  On Error Resume Next
  str = Chr(1)
  For Each v In Range("tbl_result").Value
    Set pi = Nothing
    Set pi = pf.PivotItems(v)
    If Not pi Is Nothing Then
      If pi.Visible = False Then pi.Visible = True
      str = str & v & Chr(1)
    End If
  Next
  
  ' удаляем лишнее
  For Each pi In pt.PivotFields("Items").VisibleItems
    If InStr(1, str, Chr(1) & pi.Name & Chr(1)) = 0 Then
      pi.Visible = False
    End If
  Next
  
  On Error GoTo 0
  pt.ManualUpdate = False
  Debug.Print Timer - t
End Sub

Изменено: sokol92 - 06.11.2022 21:28:51 (Чуть ускорил.)
Владимир
Формат даты MMM DD YYYY, Как преобразовать нестандартную дату
 
Или для любых региональных настроек без цикла в неподражаемом стиле Казанского (если выделено более одной ячейки):
Код
Sub Test2()
  With Selection
    .NumberFormat = "M/D/YYYY"
    .Value = Application.Evaluate("=INDEX(SUBSTITUTE(" & .Address(, , Application.ReferenceStyle, True) & ","" "", "", ""),)")
  End With
End Sub
Изменено: sokol92 - 31.10.2022 16:25:14
Владимир
Об элементе управления Textbox
 
Итак, попробуем объяснить ответы, приведенные в #7 для конфигурации Excel 2016 (ru-RU). Выводы не основаны на анализе исходного текста Excel и, следовательно, являются гипотезами. Надеюсь, квалифицированные читатели простят подробность изложения.

Задача 1. Поскольку при приcвоении Me.TextBox1 свойство не указано, то будет использовано свойство по умолчанию. В редакторе VBE открываем Project Explorer (F2) и ищем TextBox. Свойством по умолчанию (помечено цветом) MSForms.Textbox является Value типа Variant. Следовательно, правая часть оператора присваивания (Range("A1").Value) типа Date будет передана без преобразования (в VBA) методу объекта, который отвечает за присвоение свойства.

Свойства и методы объектов MSForms и Excel не локализованы (кроме тех, где учет локализации указан явно, например Range.FormulaLocal). Соответственно, дата будет преобразована в текст в соответствии с правилами для локализации en-US и после присвоения Textbox1.Value будет содержать в нашем случае текст 1/12/2022 (M/D/YYYY) .

Теперь о присвоении значений ячейкам A2 и A3. Для ячейки A2 в правой части оператора присваивания указан объект. Согласно пункту 6 Сообщения в ячейку будет занесено значения объекта по умолчанию, то есть Textbox1.Value. Таким образом, в A2 будет текст 1/12/2022 .
Для свойства Value ячейки A3 в правой части оператора присвоения содержится текст - это пункт 4 Сообщения. Выполняются условия подпункта 4.6, в ячейку заносится число, соответствующее дате 12.01.2022 (что мы и видим).

Задача 2. Свойство Text объекта MSForms.Textbox имеет тип String. Соответственно, в VBA правая часть оператора присваивания (дата) будет неявно преобразована в текст. В VBA при преобразовании типов локализация учитывается. Соответственно, после присвоения Textbox1.Value будет содержать 12.01.2022 .
При присвоения значений ячейкам A2 и A3 применяется пункт 4 Сообщения. Поскольку текст 12.01.2022 не может быть интерпретирован как число или дата в локализации en-US, то это значение и заносится в ячейки.

К сожалению, у меня нет возможности провести анализ для указанной Дмитрием в сообщении #8 конфигурации.
Изменено: sokol92 - 30.10.2022 16:59:47
Владимир
Об элементе управления Textbox
 
Цитата
Msi2102 написал:
Офис LTSC профессиональный плюс 2021 версия 2107(сборка 14228.20204)
Спасибо за тестирование! Результаты соответствуют #7.
Изменено: sokol92 - 28.10.2022 17:27:09
Владимир
Об элементе управления Textbox
 
Здравствуйте, Дмитрий!
Ответы для конфигурации Excel 2016 (ru-RU).
1. В Textbox будет текст 1/12/2022 ; в ячейкe A2 текст 1/12/2022 ; в ячейке A3 дата 12.01.2022
2. В Textbox будет текст 12.01.2022 ; в ячейках A2 и A3 текст 12.01.2022

Ответы для конфигурации Excel 2019 (en-US).
1 и 2. В Textbox будет текст 1/12/2022 ; в ячейкe A2 текст 1/12/2022 ; в ячейке A3 дата 1/12/2022

Дискуссию попросили отложить на пару дней, чтобы самостоятельно поразмышлять над этим казусом.
Владимир
при открытии почти каждого файла стиль ссылок R1C1
 
Цитата
vitalyram написал:
открытии любого файла стиль ссылок менялся и как
Есть универсальный метод для обработки события открытия любой книги. Для этого нужно в надстройку или личную книгу макросов добавить (по определенной технологии) обработку события Application.WorkbookOpen.
Если, как написал Игорь, при открытии некоторой книги стиль ссылок меняется в макросе этой книги на x1R1C1, то Вы в своем макросе можете этот стиль еще раз изменить на удобное для себя значение.
Владимир
Об элементе управления Textbox
 
Коллеги, спасибо за внимание к теме! Предлагаю дать заинтересованным читателям еще пару дней на размышления...
Владимир
Невидимые имена при копировании листа
 
Цитата
futurama3000 написал:
Диспетчер имен пуст.
Диспетчер имен не показывает скрытые имена, которых в Вашем файле уйма.
Изменено: sokol92 - 27.10.2022 17:44:27
Владимир
Специальная вставка - Умножить на 1, Vba
 
Учет региональных настроек - дело достаточно деликатное. Создал на этот счет новую тему.
Владимир
Об элементе управления Textbox
 
Несколько задач по теме (не таких простых, как кажется на первый взгляд).  :)
Описание примера (во вложении).
В ячейке A1 содержится дата 12.01.2022. Форма UserForm1 содержит элементы управления TextBox1, CommandButton1 (текст: From A1), CommandButton2 (текст: To A2:A3).
Макросы формы:
Код
Private Sub CommandButton1_Click()
  Me.TextBox1 = Range("A1").Value
End Sub

Private Sub CommandButton2_Click()
 Range("A2").Value = Me.TextBox1
 Range("A3").Value = Me.TextBox1.Text
End Sub


Задача 1. Что будет в Textbox1 и ячейках A2:A3 после последовательного нажатия кнопок "From A1" и "To A2:A3"?
Попробуйте решить без Excel, далее проверьте в Excel и объясните результаты.

Задача 2. Меняем присвоение в первом макросе на
Код
  Me.TextBox1.Text = Range("A1").Value

Далее, как в задаче 1.

Возможно, для объяснения результатов может пригодиться эта тема.
Владимир
Куда подевалась избушка формулистов?
 
Цитата
Andr85 написал:
Вот я из тем (задач) Избушки сделал своеобразную копилку
Я в подобных случаях набираю в меню форума Пользователи / БМВ / Сообщения и далее вверху "Фильтр" по контексту, который устанавливается в поле "Сообщение".  :D
Изменено: sokol92 - 27.10.2022 13:43:07
Владимир
Специальная вставка - Умножить на 1, Vba
 
Лечится, разумеется.
Владимир
Специальная вставка - Умножить на 1, Vba
 
Типичная ошибка.  Метод PasteSpecial, как и другие методы такого же рода.  работает с региональными настройками "en-US". В интеративном режиме Вы работаете с настройками "ru-RU". Макрорекордер при записи макроса это обстоятельство не учитывает. В Вашем случае тексты ячеек "похожи" на числа в "ru-RU" (разделитель дробной доли - запятая). Проще всего преобразовать тексты в числа так:
Код
Selection.FormulaLocal = Selection.FormulaLocal
Изменено: sokol92 - 26.10.2022 13:57:14
Владимир
Выборка по условию в ListBox через Select Case TabStrip1.Value
 
Опишите, пожалуйста, точную последовательность действий, приводящую к проблеме. К примеру, я нажимаю кнопку "Технологическая карта" и в списке "Наименование организации" выбираю "Организация 2". В списке "Наименование системы" появляется "Водоснабжение".  В списке "Наименование оборудования" после раскрытия появляются "Насосная станция ..." и т.п. Что не так?
Владимир
Функция CountIf для ключей словаря
 
Цитата
OlegO написал:
dicData.keys представляет собой массив

А функция CountIf может иметь массив в качестве первого параметра?
Владимир
Появление лишних знаков после 0, При суммировании ряда чисел округлённых 0,00 вдруг появляются числа 7 знаков после нуля
 
Цитата
Виктор Годунов написал:
при том данные в колоне "В" технически у меня не могут быть с большим чем 2 знака после запятой.

Цитата
Виктор Годунов написал:
не могу использовать потому что может округлить либо в меньшую или в большую сторону а мне вторая цифра после запятой нужна точная, без всяких округлений

Одно противоречит другому. При округлении до двух знаков после запятой никакой потери точности не будет. У Вас погрешность в примере после 6-знака после запятой.

Для минимизации в сумме ячеек погрешности округления можете также считать сумму нарастающим итогом, добавляя к предыдущему итогу текущее значение и округляя до 2 знаков после запятой.
Изменено: sokol92 - 22.10.2022 19:52:45
Владимир
Появление лишних знаков после 0, При суммировании ряда чисел округлённых 0,00 вдруг появляются числа 7 знаков после нуля
 
Тема приближенных вычислений много раз обсуждалась на форуме.
Дробные числа со знаменателем, отличным от степени двойки, не могут быть точно представлены в двоичной системе счисления и хранятся в формате double приближенно. Функция Round может лишь уменьшить погрешность.
В вашем примере числа суммируются, при этом погрешность может вырасти. Вы можете уменьшить погрешность суммы, если формулы  писать так:
Код
=ОКРУГЛ(СУММ($B$1:B1);2)
Владимир
Ошибка в Excel: автоматич. деление чисел на 10 при вводе, ЦЕЛЫЕ числа стали автоматически делиться на 10 при вводе
 
Файл / Параметры / Дополнительно / Параметры правки - Автоматическая вставка десятичной запятой.
Уберите птичку.
Владимир
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 145 След.
Наверх