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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 530 След.
Макрос не сохраняется в редакторе VBA., Макрос не сохраняется в редакторе или сохраняется только в той книге в которой создан.
 
Ну тогда углубляйтесь в макросы. Выше написал уже - приведенный код не запускается с кнопки и не будет через неё работать, т.к. настроен на работу по наступлению события. В данном случае - срабатывать должен при смене выделения ячеек.
Чтобы этот код работал с кнопки - надо его переписывать. А чтобы переписать - надо знать, что им планировалось делать и при каких обстоятельствах - вдруг там вовсе не код переписывать надо, а в надстройке делать дополнения? :) И в PERSONAL этот код, кстати, тоже не работал бы. В таком виде код может работать исключительно в той книге, в которой записан и отслеживать изменения может только в ней.
Но если хотите с кнопки - можно записать его так:
Код
Sub ColorSelection()
    ' Список листов, на которых макрос НЕ должен работать
    Dim Sh As Worksheet, Target As Range
    Dim исключенныеЛисты As Variant
    Dim i As Integer
    
    Set Target = Selection
    Set Sh = Target.Parent
    исключенныеЛисты = Array("ИТОГ") ' Можно добавить другие: "Лист8", "Лист9"
     
    ' Проверяем, не находится ли текущий лист в списке исключённых
    For i = LBound(исключенныеЛисты) To UBound(исключенныеЛисты)
        If Sh.Name = исключенныеЛисты(i) Then Exit Sub
    Next i
     
    ' Очищаем заливку на всём листе, где произошло изменение
    Sh.Cells.Interior.ColorIndex = xlNone
     
    ' Проверяем, чтобы не выйти за пределы
    If Target.Row > 0 And Target.Column > 0 Then
        ' Задаем цвет строке, НО только для столбцов, где есть значения
        Dim lastCol As Long
        lastCol = Sh.Cells(Target.Row, Sh.Columns.Count).End(xlToLeft).Column
         
        If lastCol >= 1 Then
            Sh.Range(Sh.Cells(Target.Row, 1), Sh.Cells(Target.Row, lastCol)). _
            Interior.Color = RGB(255, 230, 200) 'Тёплый пастельный (персиковый оттенок)
        End If
    End If
End Sub
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Макрос не сохраняется в редакторе VBA., Макрос не сохраняется в редакторе или сохраняется только в той книге в которой создан.
 
Цитата
написал:
создал Module2. Внёс макрос
Вы вот этот макрос пытаетесь вызвать?
Цитата
написал:
Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Он не вызывается кнопками и правильно Вам компилятор пишет. Это событийная процедура и должна размещаться в модуле книги.
Но собственно совершенно неясно, что Вы этим всем хотите сделать.
Цитата
Алексей Панов написал:
В другом файле функционирует
Точно? Прям вот в таких же условиях: в обычном модуле Module2 и вызовом с кнопки? Что-то мне как-то не верится. Либо код не тот приведен в сообщении.
Изменено: Дмитрий(The_Prist) Щербаков - 21.04.2026 16:19:00
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Привязка контрагента к статье затрат, для бухгалтерии
 
Цитата
ubonex написал:
столбец "C" не должен находится в поисковом диапазоне
А ВПР и не ищет по куче столбцов - она ищет только в первом(левом) и возвращает из любого столбца правее(либо из того же, в котором ищет).
Т.е. Вам в исходной формуле надо просто указать диапазон Таблица - В:D(вместо В:С), а номер столбца - 3, вместо 2.
Разберитесь все же с работой функции ВПР - лишним точно не будет: Как найти значение в другой таблице или сила ВПР
Изменено: Дмитрий(The_Prist) Щербаков - 20.04.2026 17:28:57
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Макрос не сохраняется в редакторе VBA., Макрос не сохраняется в редакторе или сохраняется только в той книге в которой создан.
 
Цитата
Алексей Панов написал:
Ранее после выгрузки файла "17.04.2026-export.xlsx" можно было сразу открыть окно "Макросы" и далее по алгоритму: в окне "Макрос" выбираем макрос -> "Выполнить".
так может раньше макрос находился в какой-то другой книге, которая загружалась вместе с Excel?
Если сохранить макрос в персональной книге макросов - PERSONAL.XLSB и при вызове окна макросов в вып.списке выбрать - Все книги - найдете там нужные макросы?
Почему они могли пропасть: PERSONAL.XLSB может порой "обнуляться" - иногда это происходит по вине ИТ-шников, если происходили какие-либо обновления или сканирования систем ПК. Т.е. книга PERSONAL.XLSB может в принципе быть удалена или повреждена. Впоследствии она создается заново, но это уже другая книга.
Можете сохранять свои макросы в файле надстройки, поместить надстройку в папку надстроек(при сохранение в формат надстроек Excel сам предложит именно эту папку) и подключить надстройку к Excel(чтобы запускалась при запуске приложения). Тогда макросы в ней будут доступны так же, как в PERSONAL.XLSB, но не будет таких сюрпризов.
Подробнее о том, как создать надстройку: Как создать свою надстройку?
По сути Вам хватит описания в первой части статьи - до того момента, где описано сохранение файла. А далее подключаете: инструкция по установке надстроек
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Макрос не сохраняется в редакторе VBA., Макрос не сохраняется в редакторе или сохраняется только в той книге в которой создан.
 
Цитата
Алексей Панов написал:
Во вложении файл обработанный макросом
вполне вроде нормальный рабочий файл. Макросы на месте. Как минимум в модуле листа.
Цитата
Алексей Панов написал:
Сам макрос
где он расположен? В какой момент выполняется? Как производится сохранение файла? В макросе сохранения нет - следовательно, это происходит либо другим кодом, либо руками. И где-то по пути что-то идет не так, как должно.
Цитата
Алексей Панов написал:
Выгрузка
что с ней надо сделать? Выполнить приложенный выше код? Или что? опишите порядок действий, чтобы можно было воспроизвести. Но если сохраняете в формат .xlsx - то все верно, макросы будут удалены. Внимательно прочитайте сообщение, которое появляется - там может быть написано, что файл содержит макросы и "если хотите сохранить файл БЕЗ НИХ" - нажмите Сохранить(или Ок). Многие не читая, жмут ОК, предполагая, что файл будет сохранен с макросами, хотя все как раз наоборот. Надо жать Нет - и выбрать формат файла с поддержкой макросов(xlsm или xsb и т.п.).
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Макрос не сохраняется в редакторе VBA., Макрос не сохраняется в редакторе или сохраняется только в той книге в которой создан.
 
Цитата
Алексей Панов написал:
в выгружаемом — отсутствует
выгруженный файл сохраняется после вставки? Если да - после открытия именно этого файла кода нет внутри VBE или он не отображается в диалоговом окне "Макросы"?
Какой формат этого "выгруженного файла"?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Копирование листов с помощью кода VBA, Исключение ошибок при копировании листов
 
offorder, Вы бы для начала полный код приводили, а не куски кодов. Тогда и решение могло быть предложено полное и правильное. А по кускам кода, помимо которых есть еще куча чего-то как выясняется - решать проблему неблагодарное занятие.
Код от МатросНаЗебре рабочий и не должен выдавать ошибку вычислений, т.к. в итоговом листе их нет(данные копируются как значения из исходного листа). Да, нет и сохранения - но так Вы ведь и не привели весь код, чтобы понять, где это сохранение вообще происходит и что до и после происходит тоже никто не знает.
Изменено: Дмитрий(The_Prist) Щербаков - 16.04.2026 08:49:43
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Построение диаграмм на основе отфильтрованных данных
 
Цитата
ВовавВова написал:
все время выползает Студент  на автомобиле возрастом 25 годиков
потому что в таблице присутствует функция ПРОМЕЖУТОЧНЫЕ.ИТОГИ. Excel считает, что последняя строка - строка итогов и не фильтрует её. Если добавить ещё одну "фейковую" строку в конец таблицы(без всяких функций) - то все будет фильтроваться как ожидается.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Запретить изменение ячейки в определенном диапазоне
 
Цитата
romlel написал:
Можно как-то написать в коде, чтобы смог скрывать и раскрывать строки/столбцы?
Цитата
Sanja написал:
Только снимать защиту листа перед скрытием строк и восстанавливать ее потом
ну блин...Ведь нет же :)
Код
Sub Макрос1()
  With ActiveSheet
    .Unprotect Password:="0000"
    .Cells.Locked = False
    .Columns("A:A").Locked = True
    .Protect Password:="0000", AllowFormattingRows:=True, AllowFormattingColumns:=True
  End With
End Sub
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Не вставляется из буфера в Excel
 
Вы бы файл приложили на всякий случай. Мало ли что там найдется...Раз проблема только с этим файлом - вдруг и на форуме найдется кто-то с такой же проблемой. Зависеть ведь может и от версии офиса.
Изменено: Дмитрий(The_Prist) Щербаков - 10.04.2026 12:18:56
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
макросы в файле формата .xls, возможно ли?
 
Цитата
PetrA-555 написал:
как это сделано?
вопрос плохо понятен. Формат xls - это, можно сказать, уже старый формат бинарного типа, который использовался до 2007 офиса. Тогда был только один формат файлов - именно xls. И в нем можно было хранить и модули VBA, и формулы и т.п. Но! Ваш вопрос сильно размыт. Возможно, там не классический VBA, а листы макросов(это такие листы, в которых на языке функций макросов написаны команды в строках в строгой очередности).
А может быть еще хуже - в одной из версий до 97 Excel была возможность создавать DLL на основе файлов Excel с макросами.
Так что прежде, чем сказать как "сделать такое же" - нужно видеть и точно понимать, что именно сделать.
Изменено: Дмитрий(The_Prist) Щербаков - 10.04.2026 12:14:28
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Получить данные, отображаемые во всплывающей подсказке (ToolTips) для полей Сводной таблицы
 
А можно попробовать и напрямую из сводной данные получить:
Код
Sub Test_GetPTTooltip()
    Debug.Print GetPTTooltip(ActiveCell)
End Sub
'---------------------------------------------------------------------------------------
' Author : Щербаков Дмитрий(The_Prist)
'          Профессиональная разработка приложений для MS Office любой сложности
'          Проведение тренингов по MS Excel
'          https://www.excel-vba.ru
'          info@excel-vba.ru
' Purpose: Получение подсказки из ячейки сводной таблицы
'---------------------------------------------------------------------------------------
Function GetPTTooltip(rCell As Range)
    Dim optc As PivotCell
    Dim pf As PivotField
    Dim pi As PivotItem, pc, pp As Object
    Dim s$, spiv$, sOut$
    Dim lp&
    
    On Error Resume Next
    Set optc = rCell.PivotCell
    Err.Clear
    If Not optc Is Nothing Then
        sOut = optc.PivotField.Caption & vbLf
        Select Case optc.PivotCellType
        Case xlPivotCellValue 'любая ячейка в области значений
            If optc.RowItems.Count Then
                sOut = sOut & "Строка: "
                For Each pi In optc.RowItems
                    spiv = pi.LabelRange.Value
                    If Len(spiv) Then
                        sOut = sOut & " - " & spiv
                    End If
                Next
            End If
            If optc.ColumnItems.Count Then
                sOut = sOut & "Столбец: "
                For Each pi In optc.ColumnItems
                    spiv = pi.LabelRange.Value
                    If Len(spiv) Then
                        sOut = sOut & " - " & spiv
                    End If
                Next
            End If
        Case xlPivotCellPivotItem 'любая ячейка в области строк или столбцов
            Set pp = optc.PivotRowLine
            If Not pp Is Nothing Then
                If pp.PivotLineCells.Count Then
                    sOut = sOut & "Строка: "
                    For Each pc In pp.PivotLineCells
                        spiv = pc.PivotItem.LabelRange.Value2
                        If Len(spiv) Then
                            sOut = sOut & " - " & spiv
                        End If
                    Next
                End If
            End If
            Set pp = Nothing
            Set pp = optc.PivotColumnLine
            If Not pp Is Nothing Then
                If pp.PivotLineCells.Count Then
                    sOut = sOut & "Столбец: "
                    For Each pc In pp.PivotLineCells
                        spiv = pc.PivotItem.LabelRange.Value2
                        If Len(spiv) Then
                            sOut = sOut & " - " & spiv
                        End If
                    Next
                End If
            End If
        End Select
    End If
    GetPTTooltip = sOut
End Function

Можно, конечно, подсократить, причесать(добавить итоги и т.п.) - но времени особо нет на это.
Изменено: Дмитрий(The_Prist) Щербаков - 06.04.2026 12:08:45 (слегка упростил код)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Применение значка # в формулах, У кого есть опыт применения значка хештега # в формулах?
 
Цитата
Владимир Пешков написал:
Также нет возможности писать функции с помощью # - СУММ(А1#) - работать не будет
Все работает без проблем, если есть поддержка динамических массивов.
Цитата
Владимир Пешков написал:
Вот у этой тётеньки работает без динамического массива.
Где? У неё как раз каждая формула со знаком # так или иначе в итоге ссылается именно на первую ячейку динамического массива.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Microsoft Query текстовой формат цифр в число
 
Убедитесь, что поставили правильно сортировку - по номеру поля, а не по имени. Выше я писал об этом.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Разбор этапов вычислений в функуции ПРОСМОТР()
 
На всякий случай выложу. Здесь подробно расписывал логику на примере: Найти в ячейке любое слово из списка
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
VBA. При удалении элементов из копии словаря, удаляются соответствующие элементы из словаря-источника
 
Цитата
Sanja написал:
В этом конкретном случае или всегда ClearContents?
смотря что имеется в виду. При попытке присвоения Range = Range без указания свойства и с кол-вом ячеек больше одной - я бы сказал всегда :)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
VBA. При удалении элементов из копии словаря, удаляются соответствующие элементы из словаря-источника
 
Цитата
МатросНаЗебре написал:
присвоит только значение
тогда доп.уточнение: присвоит свойство по умолчанию. При этом тоже есть свои подводные камни :) Лучше так не делать, потому что свойство по умолчанию VBA может выбрать на свое усмотрение :) Выполните код, но внимательно следите за выполнением - специально добавил Stop:
Код
Sub UnexpectedProperty()
    Range("B1:B2").value = "1"
    Range("A1:A2").value = Range("B1:B2").value
    Stop
    Range("B1:B2") = "1"
    Range("A1:A2") = Range("B1:B2")
End Sub

во второй части свойство не указывается и  VBA применит ClearContents для Range("A1:A2").
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
VBA. При удалении элементов из копии словаря, удаляются соответствующие элементы из словаря-источника
 
Цитата
Sanja написал:
Да, я переопределяю ВТОРОЙ объект, но почему изменяется ПЕРВЫЙ?
выше дописал ПыСы :)
Изменено: Дмитрий(The_Prist) Щербаков - 27.03.2026 10:39:59
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
VBA. При удалении элементов из копии словаря, удаляются соответствующие элементы из словаря-источника
 
Цитата
Sanja написал:
мы создаеи ДВА НЕЗАВИСИМЫХ объекта
Да. Притом при таком коде второй объект вообще нет смысл создавать через CreateObject, т.к. ты его переопределяешь как раз этой строкой:
Код
Set dicCopy = dic

Вот что будет, когда ты сначала определяешь диапазоны так:
Код
Set r1 = Range("A1")
Set r2 = Range("A2")

а потом сделаешь так:
Код
Set r2 = r1

?
Здесь абсолютно тоже самое.

P.S. Не знаю, даст ли эффект, но попробую технически это описать более-менее просто.
При создании любого объекта в памяти ОС выделяется под него кусочек памяти. Если точнее - ссылка на этот кусочек. Это мы все знаем.
Код
Set dic = CreateObject("Scripting.Dictionary")          'создали новый объект, ОС выделила под него ссылку на кусочек памяти
Set dicCopy = CreateObject("Scripting.Dictionary")  'создали новый объект, ОС выделила под него ссылку на кусочек памяти

Да, у каждого объекта свой кусочек. Пока что эти кусочки памяти живут отдельной жизнью, т.к. не было никаких команд, которые бы говорили о другом.
Заполнили dic. Его кусочек памяти расширился. У dicCopy пока остался прежним - мы же его не заполняли.
А теперь мы переопределяем dicCopy, делая ссылку на dic:
Код
Set dicCopy = dic

и вот здесь вступает в роль такая штука как оптимизация памяти. Зачем заполнять еще один кусок памяти одними и теми же данными? Незачем. Поэтому ОС не копирует все данные dic в ячейку памяти, выделенную под dicCopy - а создает там указатель на ячейку памяти dic. И теперь они связаны. По сути у них теперь одна ячейка памяти на двоих. И в итоге невозможно изменить один объект, не изменив второй.
Изменено: Дмитрий(The_Prist) Щербаков - 27.03.2026 10:39:34
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
VBA. При удалении элементов из копии словаря, удаляются соответствующие элементы из словаря-источника
 
Цитата
Sanja написал:
'копия основного словаря
Set dicCopy = dic
очень правильно написано - КОПИЯ. А для объектов - не просто копия, а ссылочная копия. Т.е. dicCopy это ссылка на dic, а не аналог CopyFile. Т.е. делая так ты не создаешь новый словарь со своими элементами, а просто ссылаешься на созданный ранее. С его элементами. Потому что ссылка идет на один и тот же участок памяти, что у исходного dic. Т.е. ты даже не ссылаешься, а "связываешь" два объекта.
Это как ссылка на ячейки на листе - поставил =A1 и та ячейка, в которой эта ссылка полностью повторяет значение ячейки, на которую ссылается. Со всеми вытекающими. Только в случае с Set dicCopy = dic эта связь двустороння. Измени что-то в одном - изменится в другом.
В общем-то, часто используемые конструкции типа:
Код
Set rr = Range("A1") 

ведут себя так же. и это же никого не удивляет :)
Изменено: Дмитрий(The_Prist) Щербаков - 27.03.2026 09:38:00
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Поиск среднего значения при разбитом диапазоне, Среднее значение без учёта 0, при условии что диапазон состоит из разных адресов ячеек
 
Вот такой еще вариант:
Код
=СУММПРОИЗВ((F3:F18)*{0:0:0:1:0:0:0:0:1:0:0:0:0:0:0:1})/СУММПРОИЗВ(--(((F3:F18)*{0:0:0:1:0:0:0:0:1:0:0:0:0:0:0:1})>0))

но если строк много - то лучше через доп.столбец делать. 1 - это желтые ячейки. Но если делать доп.столбец - то там уже можно и СРЗНАЧЕСЛИМН применить по этому доп.столбцу :) Кстати, может так будет и оптимальнее - на отдельном листе просто проставляете единички(1) или иной признак в тех же строках, которые желтые на рабочем листе. А в СРЗНАЧЕСЛИМН одним из условий ссылаетесь на него. Вроде того:
Код
=СРЗНАЧЕСЛИМН(F3:F18;Лист2!A3:A18;1;F3:F18;"<>0")

вполне гибко получится и при изменении структуры или адресов ячеек можно будет просто на этом доп.листе изменить привязки строк.
Изменено: Дмитрий(The_Prist) Щербаков - 25.03.2026 11:48:27
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Поиск среднего значения при разбитом диапазоне, Среднее значение без учёта 0, при условии что диапазон состоит из разных адресов ячеек
 
Цитата
zay_senya_z написал:
вместо строк "среднее по набору..." стоят абсолютно разные наименования
так и как понять какие строки нужны для усреднения? есть хоть какой-то критерий?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Применение правил условного форматирования на другие ячейки, Как применять условное форматирование ко многим ячейкам
 
Цитата
написал:
также не нашел ответа, ткните пальцем
м-да...сложно Вам придется :)
Там же написано подробно что сделать(см.вложенный скрин). Закрепляете ссылку на столбец с условием. Остальные ячейки в зависимости от того, что требуется.
Т.е.:
=$A1>B1
только не знаю, насколько корректна это формула, т.к. у Вас
Цитата
salvadoz написал:
B1 или\и в С1  меньше А2
а она будет подсвечивать и В и С, если они меньше. См.вложение.

А если хотите, чтобы на пальцах показали - прикладывайте свой файл Excel, а не картинки.
Изменено: Дмитрий(The_Prist) Щербаков - 24.03.2026 18:18:27
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Применение правил условного форматирования на другие ячейки, Как применять условное форматирование ко многим ячейкам
 
Сборник формул для условного форматирования
там в начале расписывается как распространять условия на всю таблицу.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Закрепленное значение ячейки ($) не переносится при копировании диапазона
 
Цитата
Wergulla написал:
при копировании значение ячейки А$1 не меняется
Так и не должно :) Это основы работы с ссылками.
Знак доллара перед номером строки означает, что при копировании и распространении формулы - ссылка на такую ячейку не смещается. Уберите знак доллара перед номером строки и все будет смещаться.
Наберите в поисковике: относительные и абсолютные ссылки в Excel - чтобы понимать как это работает.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Макрос создающий пользовательский формат с подстановкой данных через переменную, Макрос создающий пользовательский формат с подстановкой данных через переменную
 
Цитата
Денис Акулов написал:
хотел получать запись формата в виде 0 "км/ч", как я и писал в первом сообщении
А, т.е. именно с кавычками? Ну тоже как бы странно, что не получилось сразу:
Код
    textPart = "\"" км\/ч\"""
    targetCell.NumberFormat = "0 " & textPart

кстати, учитывайте, что при таком формате:
Код
"?" & """" & textPart & """"

если в ячейку будет введено число "0" - то будет отображаться только " км/ч". Без 0. А если вместо вопр.знака в формате указывать 0 - то при значении 0 в ячейке он будет отображаться вместе с "км/ч" - "0 км/ч".
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Прокси для телеграмм, Макрос с прокси для отправки сигналов в телеграмм
 
Попробуйте добавить после oHttp.Open:
Код
oHttp.setProxy 2, "192.168.1.1:port" 'IP и порт, естественно, свои
oHttp.setProxyCredentials "username", "user_password" 'если надо логиниться
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Макрос создающий пользовательский формат с подстановкой данных через переменную, Макрос создающий пользовательский формат с подстановкой данных через переменную
 
Цитата
Денис Акулов написал:
Но было бы интересно реализовать через переменную
а у меня через что? Даже имя переменной Ваше взято :)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Макрос создающий пользовательский формат с подстановкой данных через переменную, Макрос создающий пользовательский формат с подстановкой данных через переменную
 
Или так:
Код
targetCell.NumberFormat = "0 км\/ч"

А еще лучше подстраховаться и все символы, которые должны отображаться "как есть", обрамить обратным слешем
Код
    Dim textPart$, x
    textPart = "*км/ч"
    'перечисляем все символы, которые должны отображаться как есть
    'и добавляем к ним левый слеш - спец.сивол,
    'который говорит формату использовать следующий за ним символ "как есть"
    For Each x In Array("/", "*")
        textPart = Replace(textPart, x, "\" & x)
    Next
    targetCell.NumberFormat = "0 " & textPart
Изменено: Дмитрий(The_Prist) Щербаков - 23.03.2026 13:58:08
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Макрос отправки электронного сообщение с текстом, таблицей и переносом информации в общий реестр, Макрос отправки электронного сообщение с текстом, таблицей и переносом информации в общий реестр
 
Если в таблице планируется использование русского текста - в какой-то момент кириллица в письме может "поехать". И поедет она только для таблицы, т.к. для экспорта не будет указана кодировка. Я давал Вам ранее ссылку на статью: Вставить в письмо Outlook таблицу Excel с форматированием
Там этот момент учтен, в функции проставлены все комментарии.
Чтобы кириллица внезапно не отказалась отображаться как надо - перед строкой:
Код
With TempWB.PublishObjects.Add

запишите такую:
Код
TempWB.WebOptions.Encoding = msoEncodingCyrillic
Есть еще момент с адресом - лучше передавать адрес в том стиле, который установлен для приложения(R1C1 или А1) - иначе тоже может быть ошибка.
Изменено: Дмитрий(The_Prist) Щербаков - 19.03.2026 11:21:54
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 530 След.
Наверх