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

Страницы: 1 2 3 4 След.
Доработка "экранной лупы" на форме, Необходимо переделать "лупу" так, чтобы в ней отображались метки
 
Доброго времени суток!

На форму загружается рисунок, для которого работает "Экранная лупа"
На поле с рисунком находятся несколько разноцветных меток, и нужно чтобы они тоже отображались в "лупе".

Предполагаю, что это можно сделать через api, при перемещении курсора копировать в память область экрана нужного размера, увеличивать эту область и отображать её в лупе. Но сам сделать такое не могу, в апи не силен.

Может есть еще варианты?
VBA. Медленная работа cells.copy и cells.format, На некоторых компьютерах.
 
Цитата
написал:
чем при прямом копировании.
А прямое копирование разве проходит мимо буфера обмена?


Мои результаты: Excel 2013 (64)
test1: 17,46
test2: 13,71
test3: 0,71

Второй раз:
test1: 30,61
test2: 0,71
test3: 1,17

Третий раз:
test1: 0,48
test2: 0,69
test3: 0,68

Четвертый раз:
test1: 0,5
test2: 1,17
test3: 0,71

В 1м и 2м случае включен журнал буфера обмена, во 3м и 4м- выключен

Тест на рабочем компе (Excel 2016, 32) с антивирусом в параноидальном режиме
включен журнал буфера обмена:
test1: 1,3
test2: 33,36
test3: 3,91

выключен журнал буфера обмена:
test1: 1,56
test2: 32,58
test3: 3,24

включен журнал буфера обмена:
test1: 30,953125
test2: 2,9375
test3: 1,83203125

включен журнал буфера обмена:
test1: 1,09375
test2: 31,96875
test3: 2,01171875

Немного поменял код, очистка перед каждым этапом, результаты копируются в ячейку.
Код
Sub test1()
    Dim n As Integer
    Dim t As Double
    Dim log As String
    Dim calcMode As XlCalculation
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    calcMode = Application.Calculation
    Application.Calculation = xlCalculationManual
    With ActiveSheet
        .Columns(2).Clear
        t = Timer

        For n = 1 To 100
            .Cells(n, 1).Copy .Cells(n, 2)
        Next n

        log = "test1: " & Timer - t
        .Columns(2).Clear
        t = Timer

        For n = 1 To 100
            .Cells(n, 1).Copy
            .Cells(n, 2).PasteSpecial
        Next n

        log = log & vbLf & "test2: " & Timer - t
        .Columns(2).Clear
        t = Timer

        For n = 1 To 100
            .Cells(n, 2) = .Cells(n, 1)
            .Cells(n, 1).Copy
            .Cells(n, 2).PasteSpecial xlPasteFormats
        Next n

        log = log & vbLf & "test3: " & Timer - t
        .Columns(2).Clear
        t = Timer

        For n = 1 To 100
            .Cells(n, 2) = .Cells(n, 1)
            .Cells(n, 2).NumberFormat = "0.000"
        Next n

        log = log & vbLf & "test4: " & Timer - t
        'MsgBox log
        .Cells(1, 8) = log
    End With
    Application.CutCopyMode = False
    Application.ScreenUpdating = True
    Application.EnableEvents = True
    Application.Calculation = calcMode

End Sub
Изменено: irabel - 24.04.2025 10:53:46
VBA. Медленная работа cells.copy и cells.format, На некоторых компьютерах.
 
Посмотрите на "медленных" компах, не включены ли программы для слежения за буфером обмена (различные переключалки раскладки клавиатуры типа Punto Switcher и т.п., логирования буфера обмена - ClipBoard или встроенная в винду Win+V) - из-за них тоже могут быть тормоза
Работа в одном файле с несколькими книгами
 
Цитата
написал:
Это возможно?
Да, но нужны файлы с примерами данными, откуда и куда передавать.

p.s. зачем так уменьшать шрифт сообщения?
Как поменять ссылки на данные в графиках
 
Алексей Вячеславович,
Код
Public Sub Change()
    Dim pItem As Object, pSeries As Object, i As Long
    If TypeOf Selection Is DrawingObjects Then
        For Each pItem In Selection
            debug.print pItem.Name
            For i = 1 To pItem.Chart.SeriesCollection.Count
                debug.print pItem.Chart.SeriesCollection(i).Formula 
            Next
        Next
    End If
End Sub
ответы смотреть в окне отладчика Immediate  
Изменение названия при создании архива с определенной ячейки.
 
Вместо
Код
Filename = Format(Now, "DD-MM-YYYY-HH-NN") & ".xlsx"
надо, где А1 - нужная ячейка
Код
Filename = Range("A1").value & ".xlsx"
Происходит зависание макроса без возможности выхода
 
поправил ссылку
Происходит зависание макроса без возможности выхода
 
можно сделать прерывание циклов по такому методу и посмотреть

p.s. без примеров файла или хотя бы примеров макросов трудно подсказывать, а телепатов на форуме мало  ;)  
Изменено: irabel - 03.04.2025 06:45:50
Самопроизвольное уменьшение размеров UserForm со всеми элементами в редакторе VBA., VBA (предположительно баг Excel)
 
asesja, Такая же болезнь и её лечение Редактор пользовательских форм Excel VBA продолжает изменять размер сам по себе - Stack Overflow
Сводная таблица из других книг., создание и сводной таблицы из разных файлов с одинаковыми столбцами.
 
alexdrive, начните с этого: Сборка таблиц из разных файлов Excel с помощью Power Query
Поиск по критериям, сложение диапазонов из сводной таблицы
 
Цитата
написал:
Табличка прилагается
Нет
Причины долгой работы макроса, Причины долгой работы макроса
 
cell = cell   - лишнее
Не успел, ответили выше)
Изменено: irabel - 27.01.2025 13:04:43
Макрос по условному форматированию, Помогите создать макрос по форматированию, не очень в этом понимаю, устала
 
Цитата
написал:
каждый раз как в него добавляется новая строчка создается новое правило
Посмотрите Ад Условного Форматирования
Зависимость скорости вычисления от количества листов в книге
 
Цитата
написал:
на основании случайного числа
Случайное число считается в ячейке листа. Вы делаете копию листа, соответственно при работе макроса случайное число будет считаться два раза.. ну и все остальные расчеты также.
Считайте случайное число в макросе. Можете даже все расчеты делать в макросе, а на лист только выгружать результаты расчета. Тогда хоть 10 копий листов делайте))
Зависимость скорости вычисления от количества листов в книге
 
Цитата
написал:
Так и должно быть?
Если макрос во время работы взаимодействует с листами, то да.
Можно отключить при его запуске автоматический расчет формул, а потом не забыть включить обратно.

Если бы выложили макрос , а еще лучше файл-пример, то ответ был бы подробней, в т.ч. и как его оптимизировать, но увы..
вычисление веса из возможных вариантов
 
Подбор слагаемых для нужной суммы
Слетают форматы при сохранении файла эксель
 
Найдите откуда берутся лишние стили. Это может быть из-за различных локалей офиса (т.к. они там называются по разному, поэтому при копи-пасте дублируются), либо из-за выгрузок из других программ (1С и т.п.)

Если эти стили вам нужно убирать только в этой Заявке, то можно делать их очистку перед каждым сохранением, добавив в модуль Эта книга
Код
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
  StyleKiller
End Sub
Только если стилей будет ну очень много, этот код будет выполняться ощутимо долго. Я в таких случаях делаю просто сброс стилей.
Выделить цветом, если сцепленное значение двух соседних ячеек повторяются в этих столбцах.
 
Цитата
написал:
до 250-й строки
Замените
Код
For i = 4 To Cells(Rows.Count, "T").End(xlUp).Row
на
Код
For i = 4 To 250
Слетают форматы при сохранении файла эксель
 
У Вас много одинаковых стилей в книге, очистите их с помощью макроса, тогда не будут слетать форматы при изменении типа файла
Код
Sub StyleKiller()
Dim N As Long, i As Long
With ActiveWorkbook
    N = .Styles.Count
    For i = N To 1 Step -1
        If Not .Styles(i).BuiltIn Then .Styles(i).Delete
    Next i
End With
MsgBox ("Лишние стили удалены")
End Sub
Изменено: irabel - 24.12.2024 06:41:29
Работа макроса с вводом данных и выполнением на двух рабочих листах
 
prohor_9,

Сделайте процедуру с параметрами, потом её вызываете
Код
Sub Macros()
    dim lCol& 
    Dim lMet As Long
    Dim sSubStr As String 'искомое слово или фраза(может быть указанием на ячейку)
    sSubStr = InputBox("Введите значение для поиска")
    If sSubStr = "" Then lMet = 0 Else lMet = 1
    lCol = Val(InputBox("Укажите номер столбца, в котором искать указанное значение", "www.excel-vba.ru", 5))
    If lCol = 0 Then Exit Sub

    Call Для_удаления_на_листе("SKU", 3) ' указываем название листа и с какой строки удалять
    Call Для_удаления_на_листе("другой лист", 4) ' указываем название листа и с какой строки удалять

End Sub

Sub Для_удаления_на_листе(Sh$, N&)
    Worksheets(Sh).Activate
    Dim lCol As Long      'номер столбца с просматриваемыми значениями
    Dim lLastRow As Long, li As Long
    Dim arr
    lLastRow = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count
    arr = Cells(1, lCol).Resize(lLastRow).Value
    Application.ScreenUpdating = 0
    Dim rr As Range
    For li = N To lLastRow 'цикл с третьей строки до конца
        If -(InStr(arr(li, 1), sSubStr) > 0) <> lMet Then
            If rr Is Nothing Then
                Set rr = Cells(li, 1)
            Else
                Set rr = Union(rr, Cells(li, 1))
            End If
        End If
    Next li
    If Not rr Is Nothing Then rr.EntireRow.Delete
    Application.ScreenUpdating = 1
End Sub
Изменено: irabel - 17.12.2024 12:12:58
VBA. Обойти ограничение на длину пути к файлу в 255 символов
 
Сетевую папку \\lan\Архив\ смонтировать как сетевой диск, после того как сформировался реестр, пройтись по нему с заменой имени диска на \\lan\Архив\
Условие: если имя файла содержит определенное имя
 
Код
WB.Name 
Защита либо автоудаление файла Excel
 
Цитата
написал:
не принимает .xlsm
а xls принимает?)
Замена английских букв на русские, Скорость выполнения макроса
 
Код
            Massive(2) = Replace(DATA(I, 2), "A", "А")
            Massive(2) = Replace(Massive(2), "B", "В")
            Massive(2) = Replace(Massive(2), "E", "Е")
            Massive(2) = Replace(Massive(2), "K", "К")
            Massive(2) = Replace(Massive(2), "M", "М")
            Massive(2) = Replace(Massive(2), "H", "Н")
            Massive(2) = Replace(Massive(2), "O", "Щ")
            Massive(2) = Replace(Massive(2), "P", "Р")
            Massive(2) = Replace(Massive(2), "C", "С")
            Massive(2) = Replace(Massive(2), "X", "Х")
            Massive(2) = Replace(Massive(2), "T", "Т")
Горячие клавиши на макрос не работают в других книгах....
 
Цитата
написал:
а нужно именно довносить свои кусочки кода
Создайте надстройку
Как создать свою надстройку для Microsoft Excel
Как создать свою надстройку? | Excel для всех
Нарушение разметки листа при копировании
 
Цитата
написал:
смещается разметка страниц
сравните масштабы страниц при печати в старой и новой книге
Цитата
написал:
изменяются цвета заливки
Не совпадают темы цветов (меню разметка страницы - цвета)
Автоматическая протяжка случайных чисел
 
Линейный тренд
Проверка, что числа в диапазоне идут по нарастающей (без учета пропусков)
 
Благодарю.
p.s. формула массива!
Проверка, что числа в диапазоне идут по нарастающей (без учета пропусков)
 
Добрый день!

Есть небольшой смежный диапазон, всего 3 ячейки, в него загружаются три числа. Нужно проверить, что числа сверху вниз идут по нарастающей. При этом в диапазоне могут быть пропуски, их не надо учитывать.

Нужна формула, которая выдает Истину или Ложь.

Пример прилагаю.
Функция "Анализ что если" на несколько ячеек, Анализ "что если" работает на одну ячейку. Задача: применить функцию для более 2000 строк
 
Код
Sub macros1()
    For i = 3 To 20 ' тут надо указать до какой строки обрабатывать
        Cells(i, 9).GoalSeek Goal:=Cells(i, 11).Value, ChangingCell:=Cells(i, 5)
    Next i
End Sub
Изменено: irabel - 04.10.2024 10:03:35 (оформление кода)
Страницы: 1 2 3 4 След.
Наверх