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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 108 След.
Как из таблицы с данными выбрать необходимое за определенный период, Пример в теме
 
повторите ваше сообщение здесь ещё раз
Програмно определить тип операционной системы, VBA (Application.OperatingSystem)
 
вот все почему-то меряются пипис*ками - вот у меня процессор i7! А у меня i9. А у меня видеокарта RTX3090! А у меня 8Гб оперативки, а у меня 16Гб оперативки, лохи, а у меня 32Гб оперативки. Но стоит спросить какой у тебя Excel, то начинается - у меня 97, а у меня 2003, а у меня 2010 и у всех 32 бита... Зато 32Гб оперативки...
P.S. я вот пишу код и думаю - надо всегда писать под 64бит, сейчас 32 ни у кого нет, а лишний код писать в лом... а тут как всегда
Изменено: New - 08.12.2021 17:25:10
Програмно определить тип операционной системы, VBA (Application.OperatingSystem)
 
Хэш-символы представляют собой команду препроцессора, то есть команды, которые обрабатываются перед компиляцией, по существу создавая динамический/условный код. Эти типы команд часто используются в таких языках, как C/C++, для управления методами кроссплатформенного программирования. Обычно используется для проверки конкретной среды или платформы (например, VBA, Windows, MacOSX и т.д.), а затем реализует код для конкретной платформы.
https://docs.microsoft.com/ru-ru/cpp/preprocessor/hash-if-hash-elif-hash-else-and-hash-endif-directives-c-cpp?view=msvc-160&viewFallbackFrom=vs-2019
Изменено: New - 08.12.2021 17:09:03
Програмно определить тип операционной системы, VBA (Application.OperatingSystem)
 
А так?
Код
Sub CheckWin()
    If Not Environ("ProgramFiles(x86)") = "" Then
        MsgBox "Running on 64-bit Windows"
    Else
        MsgBox "Running on 32-bit Windows"
    End If
End Sub
Изменено: New - 08.12.2021 16:16:14
Програмно определить тип операционной системы, VBA (Application.OperatingSystem)
 
А если так?
Код
Sub test()
    #If Win64 Then
        MsgBox "Кажется 64-bit", vbInformation, ""
    #Else
        MsgBox "НЕ 64-bit", vbInformation, ""
    #End If
End Sub
Форматирование таблицы Excel, СРОЧНАЯ задача для excel-дизайнера
 
Раздел Работа на форуме тут https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=list&FID=7
Изменено: New - 08.12.2021 12:04:45
Нужна помощь в оптимизации рабочего файла, потому что начал очень тормозить.
 
А если эти кнопки вынести в меню? См. файл и фото
Ставите курсор на нужную строку, идёте в меню "РЕШЕНИЕ" - нажимаете мышкой на одну из 4-х кнопок: Да, Нет, Часть, Отмена
Изменено: New - 08.12.2021 10:21:17
Нужна помощь в оптимизации рабочего файла, потому что начал очень тормозить.
 
Цитата
Dots написал:
Пришел новенький и начал таблицу расширять, сужать, поставил ширину ячеек другую и прочие мазохистские действия производить, в результате чего файл начал дико тормозить.
- тормоза не от этого.
Откажитесь от ваших цветных кнопочек в столбце "Решение
Объединить три действия в одном макросе, срабатывающем при изменении в диапазоне
 
без файла и описания задачи - куда вставлять дату, где должны быть прописные буквы и где блокировать сложно корректировать
Объединить три действия в одном макросе, срабатывающем при изменении в диапазоне
 
возможно как-то так. Правда не знаю, куда прикрутить ваше  Target = UCase(Target)
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub
    On Error GoTo errHandler:
    If Not Intersect(Target, Range("A1:L1048576")) Is Nothing Then
        If Target <> "" Then
            ActiveSheet.Unprotect Password:="123"
            Target.Locked = True
            ActiveSheet.Protect Password:="123"
        End If
    End If

    If Target.Cells.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("J1:J1048576")) Is Nothing Then
        Dim iCell As Range
        Application.EnableEvents = False
        For Each iCell In Target
            With Range("K" & iCell.Row)
                .Value = DateValue(Now)
            End With
        Next iCell
        Application.EnableEvents = True
    End If

errHandler:
    Application.EnableEvents = True
End Sub
Изменено: New - 07.12.2021 23:43:20
Ускорение процесса в при вычислении, Массив
 
Максим Бугриев, предложите название темы (об этом читайте в правилах форума). Заменят модераторы
Ускорение процесса в при вычислении, Массив
 
берите данные из  "м3:м5003" в массив, и отключайте обновление экрана
Слияние двух динамических массивов
 
Kanev75,
ссылка 1
ссылка 2
ссылка 3
ссылка 4
Изменено: New - 07.12.2021 19:27:46
Отправить сообщение в WhatsApp макросом
 
Евгений Смирнов, это не сайт Hugo. Это сайт Игоря (https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=profile_view&UID=138) раньше у него был ник EducatedFool, сейчас просто Игорь.
У Hugo нет сайта пока )
P.S. На нашем форуме есть пользователи Hugo, а есть Игорь - это разные пользователи, хоть Hugo и зовут Игорь)
Изменено: New - 07.12.2021 09:42:26
Подставить в ячейку значение по условию времени продолжительности услуги
 
может так?
Код
=ЕСЛИ(F3>0;"Занято";"Свободно")

P.S. аа, нет, не подойдёт... Не работает, если услуга 2 и более часов...
Изменено: New - 06.12.2021 22:19:56
Мера, отражающая динамику показателей
 
повторите ваше сообщение здесь ещё раз
Блокировка строк с датой за предыдущие месяца
 
Цитата
БМВ написал:
MsgBox "Íåëüçÿ ìåíÿòü ïðîøëûå ïåðèîäû!", vbExclamation, "Âíèìàíèå"
кодировка сбилась
P.S. А теперь как говориться - открываем файл с отключёнными макросами и... ))
Изменено: New - 06.12.2021 13:34:34
Блокировка строк с датой за предыдущие месяца
 
может как-то так (макрос) - нажмите Alt+F8 в файле там поймёте
Как добавить цикл для действий, записанных макрорекордером
 
Orishniy,
1) см. картинку, как оформлять код на форуме
2) чтобы запустить цикл по строкам нужно знать номер 1-й и последней заполненной строки в нужном столбце на нужном листе. Вы какую строку не знаете? первую или последнюю? Если последнюю, то вот код, который находит номер последней заполненной строки в указанном столбце указанного листа
Код
    'номер последней заполненной ячейки в столбце А на листе Клейма статистика
    With Sheets("Клейма статистика")
        LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
    End With

3) к ячейкам листа можно обращаться ещё вот так
Cells (1, 3) - где первая цифра (1) - это номер строки на листе, а вторая цифра (3) - это номер столбца на листе, таким образом Cells(1, 3) - это ячейка C1 (1-я строка, 3-го столбца)

4) Цикл можно организовать через операторы For... Next, вот пример
Код
    For i = 2 To LastRow
         'тут ваш код, который будет многократно повторяться в цикле от 2 до LastRow раз
    Next i

5) зная вышеуказанные данные можно сделать цикл
Код
Sub test()
    Dim LastRow As Long

    'номер последней заполненной ячейки в столбце А на листе Клейма статистика
    With Sheets("Клейма статистика")
        LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
    End With

    'начало цикла со 2-й строки до последней
    For i = 2 To LastRow 
        'тут ваш код, который будет многократно повторяться в цикле от 2 до LastRow раз
            
        Sheets("Клейма статистика").Select
        Cells(i, 1).Select 'A2,A3,A4,A5,A6.....

        ' Этот код не меняется
        Selection.Copy
    
        Sheets("Брак по трассовке").Select
        Range("G5").Select
        ActiveSheet.Paste
        ActiveSheet.Calculate


        Sheets("Выписка из трассовки").Select
        Application.CutCopyMode = False
        ActiveSheet.Calculate
    
        ' Этот код не меняется
        Sheets("Брак по трассовке").Select
        ActiveSheet.Calculate

        Range("J3:K3").Select
        Selection.Copy

        Sheets("Клейма статистика").Select
        Cells(i, 3).Select 'C2,C3,C4,C5,C6....
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    Next i 'конец цикла
    
End Sub

6) у вас много переходов между листами, во время работы макроса будет моргать экран, чтобы этого избежать перед циклом отключают обновление экрана, а после цикла включают обновление экрана, так работа макроса будет производиться быстрее

Код
'перед циклом отключить экран
Application.ScreenUpdating = False

'ваш цикл здесь....

'после цикла включить экран
Application.ScreenUpdating = True

7) работа с ячейками листа - очень медленная по времени, обычно так макросы не пишут. Обычно берут данные с листа в двумерный массив и работают с ним в оперативной памяти, а потом результат вычислений уже выгружают на лист - так макросы работают значительно быстрее
Изменено: New - 06.12.2021 08:18:08
Как правильно перенести данные из массива в комментарий, оптимизация макроса
 
Код
Sub AddComments()
    Dim arr As Variant, iRow As Long, iCol As Long

    With ActiveSheet
        arr = .Range("O1:R10").Value
        For iRow = 1 To UBound(arr)
            For iCol = 1 To UBound(arr, 2)
                With .Cells(iRow, iCol)
                    .ClearComments
                    .AddComment.Text Text:=CStr(arr(iRow, iCol))
                End With
            Next iCol
        Next iRow
    End With
End Sub
Изменено: New - 05.12.2021 20:38:10
Подтягивать данные из таблиц других листов. Критерий - цвет ячейки.
 
Andreya Andreya, см. файл
[ Закрыто] неструктурированные данные, извлечь из массива данных нужную информацию
 
могу за ТС выложить его файл, если кому надо )
Изменено: New - 04.12.2021 19:38:47
[ Закрыто] неструктурированные данные, извлечь из массива данных нужную информацию
 
размер файла был 33 Кб.
238 строк, 1 лист.
Возможно сам ТС удалил
Заполнение словаря только ключами. Какой вариант лучше?
 
Цитата
Jack Famous написал:
Верно?
думаю, да
Заполнение словаря только ключами. Какой вариант лучше?
 
Ну, 2 кавычки это строка нулевой длины. Просто компьютер быстрее обрабатывает числа, чем строки, даже нулевой длины
Заполнение словаря только ключами. Какой вариант лучше?
 
Доброе утро, Мне кажется 0 будет быстрее обрабатываться, чем 2 кавычки "". Это я про ваш 3й вариант
P.S. извините, если с кем-то не здороваюсь, для меня мы не прощаемся и постоянно видим друг друга))
Изменено: New - 04.12.2021 05:09:55
Заполнение словаря только ключами. Какой вариант лучше?
 
Так можно использовать вместо  простого 0, который VBA автоматически конвертирует в Integer писать CByte(0). Тогда компьютер будет выделять по 1 байту вместо 2 байт у Integer и 4 байт у Long
Просто уже никто не следит за этим, так как сейчас на компах гигабайты оперативной памяти. Замени 0 на cbyte(0) в тестах и посмотри. Мне кажется, что разницы не будет большой
Изменено: New - 04.12.2021 04:20:00
Заполнение словаря только ключами. Какой вариант лучше?
 
Jack Famous, уфф, нашёл это использование у ZVI. Тема от Января 2011 года
Скачай Excel файл из сообщения №21 от ZVI в этой теме https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=8&TID=21594

а в этой теме Hugo использует https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=8&TID=42447

Но в WinAPI это повсеместно используется и в константах и в аргументах функций, например,
Код
result = URLDownloadToFile(0&, UrlFileName, DestinationFileName, 0&, 0&)
Call PlaySound(WAVFile, 0&, SND_ASYNC Or SND_FILENAME)
TimerID = SetTimer(0&, 0&, TimerSeconds * 1000&, AddressOf TimerProc)
SHCreateDirectoryEx ByVal 0&, StrPtr(sPath), ByVal 0&
Ret = SendMessage(hWndOK, BM_CLICK, 0, ByVal 0&)
Private Const WM_CLOSE As Long = 0&

просто 0 VBA присваивает тип Integer, а 0& VBA присваивает тип Long
Код
? Typename(0)
Integer
? Typename(0&)
Long

sokol92, да, ты прав, для VBA 0& эквивалентно CLng(0)

вот код из того файла ZVI. Я же говорю, что у ZVI научился ))

Код
Option Explicit

' Структура для QSortNonRecursive()
Private Type QStack
    Low As Long
    High As Long
End Type

' ZVI:2011-01-07 http://www.planetaexcel.ru/forum.php?thread_id=23032
' Функция выдает отсортированный массив уникальных значений диапазона Rng
' Аргументы фeкнкции:
'   Rng       - диапазон обрабатываемых значений
'   RowOffset - количество строк отступа сверху диапазона для пропуска заголовков и т.п.
'   MinLength - минимально допустимая длина значения, если меньше, то пропускается
Function FastNoDups(Rng As Range, Optional RowOffset&, Optional ByVal MinLength& = 1)
    Dim a(), k$, x
    If MinLength = 0 Then MinLength = 1
    With CreateObject("Scripting.Dictionary")
        For Each x In Intersect(Rng.Resize(Rng.Rows.Count - RowOffset).Offset(RowOffset), Rng.Parent.UsedRange).Value
            k = Trim(x)
            If Len(k) >= MinLength Then .Item(k) = 0&
        Next
        a() = .Keys
        QSortNonRecursive a()
    End With
    FastNoDups = a
End Function

' Быстрая сортировка массива, см.: http://www.planetaexcel.ru/forum.php?thread_id=7702
Private Sub QSortNonRecursive(Arr())
    Dim i&, j&, LB&, UB&, StPtr&, Ptr&, Pvt, Swp
    Dim St() As QStack
    ReDim St(1 To 64)
    StPtr = 1
    St(1).Low = LBound(Arr)
    St(1).High = UBound(Arr)
    Do
        LB = St(StPtr).Low
        UB = St(StPtr).High
        StPtr = StPtr - 1
        Do
            Ptr = (LB + UB) \ 2
            i = LB: j = UB: Pvt = Arr(Ptr)
            Do
                While Arr(i) < Pvt: i = i + 1: Wend
                While Pvt < Arr(j): j = j - 1: Wend
                If i <= j Then
                    Swp = Arr(i): Arr(i) = Arr(j): Arr(j) = Swp
                    i = i + 1
                    j = j - 1
                End If
            Loop While i <= j
            If i < Ptr Then
                If i < UB Then
                    StPtr = StPtr + 1
                    If StPtr > UBound(St) Then ReDim Preserve St(1 To UBound(St) * 2)
                    St(StPtr).Low = i
                    St(StPtr).High = UB
                End If
                UB = j
            Else
                If j > LB Then
                    StPtr = StPtr + 1
                    If StPtr > UBound(St) Then ReDim Preserve St(1 To UBound(St) * 2)
                    St(StPtr).Low = LB
                    St(StPtr).High = j
                End If
                LB = i
            End If
        Loop While LB < UB
    Loop While StPtr
End Sub
Изменено: New - 03.12.2021 20:28:08
Заполнение словаря только ключами. Какой вариант лучше?
 
начал искать запись 0& у себя в записях - очень много это используется при вызовах WinAPI функций, там где идёт значение параметра 0, практически везде стоит 0&
Заполнение словаря только ключами. Какой вариант лучше?
 
и KL (Кирилл Лапин, MVP по Excel как и ZVI) тоже не заходит больше к нам ((
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 108 След.
Наверх