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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 156 След.
Из названия месяца в формат даты
 
Цитата
zorkon71 написал:
ДАТАЗНАЧ() не срабатывает
Не нравится родительный падеж названия месяца. Нужен именительный падеж или первые три буквы названия месяца в именительном падеже.
Изменено: sokol92 - 16.04.2024 20:10:20
Владимир
Свойства и методы, установленные в VBA по умолчанию
 
Вот еще тема о свойствах по умолчанию.
Владимир
Свойства и методы, установленные в VBA по умолчанию
 
Цитата
testuser написал:
такая конструкция в vb* работает не очень правильно
VBA не одинок в этой компании. См. статью о коротком замыкании.

Кстати, такая формула
Код
=ЕСЛИ(ИЛИ(1=1; MyFunc());1;0)

вызывает функцию MyFunc.
Изменено: sokol92 - 10.04.2024 14:12:20
Владимир
Свойства и методы, установленные в VBA по умолчанию
 
Цитата
Evgenyy написал:
Прислушайтесь к Чехову, а не к БМВ
Не уверен, что Антон Павлович знал Excel  на том же уровне, что Михаил.

Цитата
Evgenyy написал:
"Краткость - сестра таланта".
... но мачеха гонорара (что иногда относится и к программистам).  :)
Владимир
Свойства и методы, установленные в VBA по умолчанию
 
Здравствуйте, Владимир!
Не знал, как с этим быть. Вродe, Excel.Application, Value(...) - обязательная программа, а  .ActiveWorkbook.ActiveSheet. под капотом (?)   :)

Update. Можно еще так проверять выводы (VBS):

Код
Call Run_macro
Sub Run_macro()
   set objExcel = CreateObject ("Excel.Application")
   objExcel.Visible = True    
   objExcel.Workbooks.Add
   objExcel.Range("A1")=1
End sub


Кстати, в LibreOffice много языков программирования (Basic, Python, Java, ...) и границы между языком программирования и объектной моделью Calc (аналог Excel) отчетливо видны и документированы.
Изменено: sokol92 - 09.04.2024 16:49:17
Владимир
Свойства и методы, установленные в VBA по умолчанию
 
Кстати, небольшая задача по данной теме.
Как в "полном" виде выглядит оператор:
Код
Range("A1") = 1

Мой вариант ответа:
Скрытый текст
Владимир
Свойства и методы, установленные в VBA по умолчанию
 
Я бы разделил мир VBA и миры Excel, Word, ...
Сам по себе VBA достаточно компактный язык и описан в этом  разделе.
Изменено: sokol92 - 08.04.2024 20:17:58
Владимир
VBA Часть текста "полужирный" в буфер обмена, из переменной, Скопировать текст в буфер обмена, при этом его часть сделать "полужирной"
 
Цитата
AlexGor написал:
то вставляются два знака вопроса в квадратиках￿￿
Это обсуждалось здесь.

Вместо кода для обнуления буфера обмена из #73 попробуйте код отсюда, указанный Владимиром (ZVI).

Код
  CreateObject("htmlfile").ParentWindow.ClipboardData.SetData "Text", ""
Изменено: sokol92 - 07.04.2024 17:53:22
Владимир
Суммирование по критерию дата в самой формуле, отбор по дате, дата прописывается в самой формуле
 
Указанные выше подходы не будут работать на компьютерах с другими региональными настройками. Используйте функцию ДАТА.
Владимир
не удаётся убрать "защищенный просмотр"
 
При добавлении сетевой папки обратите внимание на флажок (внизу диалогового окна): "Разрешить надежные расположения в моей сети (не рекомендуется)".
Владимир
Слияние Excel и Word, Слияние Excel и Word
 
Выложите пример файлов Word (шаблон документа слияния) и файла Excel (источник данных).
Владимир
Разрыв страницы
 
Цитата
lipatovik написал:
Файл пришлось изрядно уменьшить, там 1200 страниц
При применении макросов нужно учесть техническое ограничение Excel:
Цитата
Разрывы страниц : 1 026 горизонтальных и вертикальных

При необходимости можно обойти путем разбиения одного листа книги на два.
Изменено: sokol92 - 01.04.2024 14:22:42
Владимир
VBA: Изменить границы именованного диапазона программно
 
Для присвоения имени листа (а не книги) можно использовать такую модификацию:
Код
 Range("A1").Name = "Лист1!A_1"
Владимир
VBA Часть текста "полужирный" в буфер обмена, из переменной, Скопировать текст в буфер обмена, при этом его часть сделать "полужирной"
 
AlexGor, testuser и другие коллеги, спасибо за интересную тему и исследования!
Владимир
Округление в Excel
 
В Excel то, что хочет автор темы, называется "Экспоненциальный" формат ячейки. Затем (опционально) можно убрать E+xx (E-xx) и передвинуть запятую.
Владимир
Excel преобразует нумерацию №п.п. в десятичную дробь
 
Цитата
olege1983 написал:
Почему код ниже преобразует текстовое значение в числовое
Разбирается в этой теме, пункт 4.4
Владимир
Особенность сортировки диапазона с формулами, Баг или фича?
 
Владимир, спасибо, не знал этого.
Владимир
VBA Часть текста "полужирный" в буфер обмена, из переменной, Скопировать текст в буфер обмена, при этом его часть сделать "полужирной"
 
Цитата
AlexGor написал:
Запуск с кнопки описал ранее в #37
Да, спасибо, тогда, на мой взгляд, с практической точки зрения проблемы нет. Разбираться с разным поведением макросов при запуске из VBE и непосредственно из Excel (и еще в различных версиях Win и Office) можно бесконечно.  :)
Владимир
VBA Часть текста "полужирный" в буфер обмена, из переменной, Скопировать текст в буфер обмена, при этом его часть сделать "полужирной"
 
Цитата
AlexGor написал:
так я код запускаю клавишей "Run Sub" из редактора.
Попробуйте закрыть редактор и запускать макрос непосредственно из Excel посредством диалога "Макрос" (Alt+F8) или назначьте на макрос горячую клавишу (можно через кнопку "Параметры" в том же диалоге).
Изменено: sokol92 - 25.03.2024 15:24:59
Владимир
VBA Часть текста "полужирный" в буфер обмена, из переменной, Скопировать текст в буфер обмена, при этом его часть сделать "полужирной"
 
Цитата
AlexGor написал:
редактор VBA активен
Редактор VBE - отдельная песня, лучше все тестировать при закрытом редакторе.
Владимир
Подсказка в эксел, Подсказка при условиях
 
... примерно таким.

Нужно предусмотреть изменение ячейки как через счетчик, так и непосредственно.
Владимир
VBA Часть текста "полужирный" в буфер обмена, из переменной, Скопировать текст в буфер обмена, при этом его часть сделать "полужирной"
 
Большое спасибо за проделанную работу!
Изменено: sokol92 - 24.03.2024 19:40:00
Владимир
VBA. Ширина ячейки, Как сделать новую ячейку ровно такой же ширины как исходная ?
 
Посмотрите еще эту тему.
Владимир
VBA Часть текста "полужирный" в буфер обмена, из переменной, Скопировать текст в буфер обмена, при этом его часть сделать "полужирной"
 
Использование пользовательских классов, или не использование -  дело вкуса автора, к алгоритмам в данной теме не имеющее отношения.
Вот редакция макросов из #16 без использования классов (потратил минут 5, детально не проверял). Функция  HtmlEncode и ее вызов добавлены.
Изменено: sokol92 - 23.03.2024 20:07:42 (Исправлено вложение (была неточность в макросе addHTMLWraper))
Владимир
VBA Часть текста "полужирный" в буфер обмена, из переменной, Скопировать текст в буфер обмена, при этом его часть сделать "полужирной"
 
Спасибо за тестирование!
Отмеченные Вами проблемы могут быть связаны с ограничениями (безопасности) для вызова PowerShell.

Об отображении букв русского алфавита.
"HTML Format" буфера обмена использует для текста кодировку utf-8.
Текст программы из сообщения #16 этого не учитывает.
Можно обойти эту проблему так.
1. Добавьте в модуль vbaClipboard функцию HtmlEncode из сообщения #30.
2. В модуле vbaClipboard в функции addHTMLWraper перед строкой
Код
sData = sHtmlHeader & sContextStart & sHtmlElement & sContextEnd

добавьте строку
Код
sHtmlElement = HtmlEncode(sHtmlElement)

Расскажите о результате. Успехов!
Изменено: sokol92 - 22.03.2024 14:46:26
Владимир
VBA Часть текста "полужирный" в буфер обмена, из переменной, Скопировать текст в буфер обмена, при этом его часть сделать "полужирной"
 
Тестирование показывает, что не все программы соблюдают стандарты и корректно работают с русскими буквами при вставке из буфера обмена, имеющего формат "Html". Так что придется до копирования в буфер обмена кодировать (по старинке) все символы юникода с кодом >=128. После этого кодировка utf-8 не отличается от кодировки windows-1251.  :)

Протестируйте, пожалуйста (занести в стандартный модуль книги):
Код
Option Explicit

' Копирует в буфер обмена строку в Html - формате.
' Теги <HTML> и <BODY> указывать не следует.
Sub HtmlToClipboard(ByVal txt As String)
  Dim fso As Object, f As Object, fileName As String
  Set fso = CreateObject("Scripting.FileSystemObject")
  fileName = fso.GetSpecialFolder(2) & "\" & fso.GetTempName() & ".html" ' временный файл
  Set f = fso.OpenTextFile(fileName, 2, True)  ' для записи
  f.Write HtmlEncode("<HTML><BODY>" & txt & "</BODY></HTML>")
  f.Close
  
  RunPgm "powershell -command ""type " & fileName & " | Set-Clipboard -AsHtml"""

  Set f = Nothing
  Set fso = Nothing
  Kill fileName
End Sub

' Кодирует в строке txt все символы с кодом >=128 по стандарту Html (&#код;).
Function HtmlEncode(ByVal txt As String) As String
  Dim arr, n As Long, i As Long, s As String
  If Len(txt) = 0 Then Exit Function
  ReDim arr(1 To Len(txt))
  For i = 1 To Len(txt)
    s = Mid(txt, i, 1)
    n = AscW(s)
    If n > 127 Then
      arr(i) = "&#" & n & ";"
    Else
      arr(i) = s
    End If
  Next i
  
  HtmlEncode = Join(arr, "")
End Function

' Запуск внешних программ в синхронном режиме
Function RunPgm(ByVal pgm)
    Dim wshShell
    Set wshShell = CreateObject("WScript.Shell")
    RunPgm = wshShell.Run("%comspec% /c " & pgm, 0, True)
    Set wshShell = Nothing
End Function

Sub Test()
  HtmlToClipboard "<B>Это полужирный</B> and <I>this is italic.</I>"
End Sub

Изменено: sokol92 - 21.03.2024 17:20:34
Владимир
VBA Часть текста "полужирный" в буфер обмена, из переменной, Скопировать текст в буфер обмена, при этом его часть сделать "полужирной"
 
Цитата
nilske написал:
Почему через PowerShell или Word сделать красивее, чем через пользовательский класс
Если Вы о программе из #16, то пользовательские классы не при чем, всё это без проблем переносится в стандартный модуль. Там используются Windows API для работы с буфером обмена. Соответственно, нужно разбираться с проблемами. Например:
Цитата
AlexGor написал:
2. вместо кириллицы выдаёт кракозябры.
Могу (не вникая в текст макросов) предположить, что проблема с использованием ASCII версий Windows API вместо Unicode версий.

На мой взгляд, лучше идти проторенными путями и контролировать свои шаги.
Например, в результате пункта 1 из #19 будет создан (временный) файл формата html. Мы сможем проверить его корректность, открыв в любом браузере.
Владимир
VBA Часть текста "полужирный" в буфер обмена, из переменной, Скопировать текст в буфер обмена, при этом его часть сделать "полужирной"
 
Цитата
БМВ,  написал:
А там и вода , да еще и не верная вода.
Действительно, как-то все некрасиво и проблемы с символами Unicode, не попадающими в диапазон 0-127.
Проще сделать так:
1. Создать временный файл и записать туда HTML в кодировке utf-8.
Например, файл C:\Temp\test2.html c содержимым
Код
<html> <body>Это обычный шрифт.<b>Это полужирный.</b> <i><b>This is bold italic.</b> This is italic.</i></body> </html>
2. Скопировать содержимое файла в буфер обмена в формате "Html". Например, через PowerShell:
Код
Sub Test()
  RunPgm "powershell -command ""type C:\Temp\test2.html | Set-Clipboard -AsHtml"""
End Sub

' Запуск внешних программ в синхронном режиме
Function RunPgm(ByVal pgm)
    Dim wshShell
    Set wshShell = CreateObject("WScript.Shell")
    RunPgm = wshShell.Run("%comspec% /c " & pgm, 0, True)
    Set wshShell = Nothing
End Function
Наверняка, есть и более краткие пути.
Владимир
Как правильно сослаться на переменную
 
Успехов!
Владимир
Имя элементов на английском, Как убрать кириллицу
 
Цитата
написал:
почему такие мелочи не зафиксили переменными на английском
Слишком много надо фиксить.  :)
Успехов!
Изменено: sokol92 - 18.03.2024 17:22:38
Владимир
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 156 След.
Наверх