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

Страницы: 1 2 3 4 След.
Таблица с условиями и подсчитанным количеством
 
surkenny, пожалуйста помогите изменить отбор. Необходимо по двум условиям отобрать по дате и смене.  
Таблица с условиями и подсчитанным количеством
 
surkenny, понял спасибо еще раз
Таблица с условиями и подсчитанным количеством
 
Цитата
Это точно? Или Вы так решили? Задача чисто под простейшую сводную. А если нужна будет аналитика за неделю/месяц/год?
Точно.
Аналитикой занимается "специально обученное руководство". Мое дело отправить им полученные данные.
В работе стараюсь придерживаться проверенного утверждения  "инициатива е.......т инициатора"  :D  (простите за английский).
Спасибо за помощь. С PQ не сталкивался ранее. Попробуем.
Вопрос а PQ во всех версиях Office имеется? (дома установлен 365 на работе вроде или 2016 или 2019)
Изменено: CEHATOP - 04.07.2022 21:52:00
Таблица с условиями и подсчитанным количеством
 
Цитата
ага, вы  коллективно толкаете состав успеха прямо к цели, но с разных сторон состава?
Прямо в точку. Как и везде руководство "вперед" а мы "назад" по их мнению.

Цитата
сводная!
в данном случае не подходит желателен макрос (буду пытаться встраивать в основной файл)
Изменено: CEHATOP - 04.07.2022 19:33:13
Таблица с условиями и подсчитанным количеством
 
Здравствуйте. Опять прошу помощи.
Имеем таблицу с данными на Лист1. Необходимо посчитать кол-во строк по 4-м условиям и составить список или таблицу на Лист2 с перечислением всех возможных совпадений и подсчетом количества строк по ним.
Ранее мне уже помогли за что большое спасибо, но задача не много изменилась (руководство ставит новые преграды на трудовом пути).
Подробнее изложил в файле (Лист2).
Буду очень признателен Вам.
Копирование строк таблицы из формы по 4-м условиям
 
Александр Моторин, спасибо. Супер.
А по поводу копирования во вторую строку Лист2 можете подсказать что изменить чтобы в первую строку копировалось.
Копирование строк таблицы из формы по 4-м условиям
 
Здесь на форуме нашел решение.
Только есть вопрос как определить диапазон на Лист1?
Найденный код не получается под себя подстроить. Только если указать диапазон самому. Но таблица постоянно меняется.
Подскажите пожалуйста как поправить код так чтобы он сам определял диапазон с данными на Лист1

Код
Set ra = Лист1.Range("A2:A100") 'Range([A2], Range("A" & Rows.Count).End(IIf(Len(Range("A" & Rows.Count)), xlDown, xlUp)))
И еще не понятно почему макрос копирует во 2-ю стоку на Лист2, а не в 1-ю. Как это победить?
Или первый раз он копирует в туже строку что и на Лист1, а при последующем копировании определяет последнюю заполненную в 1-ом столбце и копирует ниже.

Все остальное получилось реализовать

Код
Private Sub CommandButton1_Click()
    
    Dim ws As Object, ra As Range, cc As Range
    Dim iLastrow As Long

    Set ws = Лист1
    Set ra = Лист1.Range("A2:A100") 'Range([A2], Range("A" & Rows.Count).End(IIf(Len(Range("A" & Rows.Count)), xlDown, xlUp)))
    
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False

    With Лист2
        iLastrow = .Range("A" & Rows.Count).End(IIf(Len(.Range("A" & Rows.Count)), xlDown, xlUp)).Row

        For Each cc In ra
            If cc = Me.ComboBox1.Text Then
                If InStr(cc.Offset(, 4), Me.ComboBox2.Text) > 0 Then
                    If InStr(cc.Offset(, 5), Me.ComboBox3.Text) > 0 Then
                        If InStr(cc.Offset(, 7), Me.ComboBox4.Text) > 0 Then
                            iLastrow = iLastrow + 1
                            ws.Rows(cc.Row).Copy .Cells(iLastrow, 1)
                        End If
                    End If
                End If
            End If
        Next
    End With
    
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    
End Sub
Копирование строк таблицы из формы по 4-м условиям
 
Приветствую! Помогите пожалуйста с макросом.
На Лист1 есть некая таблица, которая будет пополняться новыми строками с данными (строки вставляются с верху).
Есть форма с 4-мя combobox в которых выбираются значения из столбцов в таблице на Лист1.
Необходимо при совпадении всех 4-х значений в combobox со строкой в таблице на Лист1 скопировать эту строку на Лист2.
Если таких строк несколько, то копируем все на Лист2.
Вставка значений из TextBox на лист
 
Благодарю.
Вставка значений из TextBox на лист
 
Добрый день. В форме имеется два TextBox. В которые вводим данные. Потом по кнопке и вставляем их в нужное место.
Проблема в том что данные из первого TextBox данные переносятся не правильно.
Если в конце значения присутствует буква или слово, то данные вставляются без  текстовой составляющей.
Если в начале, то вообще вставляется 0.
Со вторым TextBox все в порядке.
Код
Private Sub CommandButton1_Click()
    Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Resize(1, 2) = _
        Array(Val(Me.TextBox1), Me.TextBox2)
End Sub
Заполнение таблицы
 
Работа выполнена. Спасибо!
Заполнение таблицы
 
Юрий М, понял извините.
Заполнение таблицы
 
Здравствуйте.
Необходимо в одной книге с одного листа на другой копировать данные макросом.
Подробнее в файле.
Вацап [...] почта [...]
Продолжить формулу в двух разных таблицах
 
Доброго времени суток. Подскажите пожалуйста как продолжить формулу в двух разных таблицах.  
Получить список доступных принтеров с именем порта в формате NeXX
 
БМВ, теперь все как надо. Спасибо огромное.  
Получить список доступных принтеров с именем порта в формате NeXX
 
Цитата
БМВ написал:
Просто по имени точно не выходит?
Скрытый текст
Получить список доступных принтеров с именем порта в формате NeXX
 
В файле существуют листы которые надо сохранять только в  PDF, остальные печатать на бумажном носителе. Для этого необходимо переключение принтеров. Файл очень часто переносится на разные компьютеры. Для оперативной корректировки принтеров в макросе печати, данные из формы вставляются ячейки на листе книги.
Далее макрос сохранения в PDF.

Код
Sub Save12()
Application.ScreenUpdating = False
Application.ActivePrinter = Sheets("Списки").[P3].Value 'принтер для сохранения в PDF
Sheets("Таблица").Calculate

Dim x

  x = Application.GetSaveAsFilename(ThisWorkbook.Path & "\" & Sheets("Таблица").[E8].Value, "PDF files (*.pdf), *.pdf") 'путь и имя файла
  If x <> False Then
    Sheets("12").ExportAsFixedFormat Type:=xlTypePDF, Filename:=x _
      , Quality:=xlQualityStandard, IncludeDocProperties:=True _
      , IgnorePrintAreas:=False, OpenAfterPublish:=False
      Else
      Exit Sub
  End If
  
Application.ActivePrinter = Sheets("Списки").[P4].Value 'принтер по умолчанию
Call Vedomost_FIO
Application.ScreenUpdating = True
End Sub
Получить список доступных принтеров с именем порта в формате NeXX
 
БМВ, благодарю вас за помощь.
Но функция не вытаскивает номера портов принтеров в списке. Можно это поправить пожалуйста.
Получить список доступных принтеров с именем порта в формате NeXX
 
БМВ, не могу понять вашу наводочку. Если про то какие принтера будут использоваться, то виртуальные PDF, локальные и сетевые.
Изменено: CEHATOP - 08.07.2019 07:59:54
Получить список доступных принтеров с именем порта в формате NeXX
 
БМВ,  мне нужна форма с комбобоксом в ней с возможностью выбора принтеров в этом комбобоксе.
Если вам не трудно помогите это осуществить с последним вариантом кода.
Сам не способен это сделать.
Изменено: CEHATOP - 08.07.2019 07:43:11
Получить список доступных принтеров с именем порта в формате NeXX
 
Андрей Лящук, если не сложно нужен готовый код. или подскажите что и где поменять

Нашел на забугорном сайте. Данные выводятся в MsgBox.  
Помогите вывести данные этой функции в ComboBox на форме.
Код
' Written:  August 05, 2017
' Authoer:  Leith Ross
' Summary:  Returns and array of printer names and port numbers on the user's computer.
'           The API calls in this module will work with both 64 bit and 32 bit Office running Windows 7 and higher.

Private Declare PtrSafe Function RegOpenKeyEx _
    Lib "Advapi32.dll" Alias "RegOpenKeyExA" _
        (ByVal hKey As LongPtr, _
         ByVal lpctstrSubKey As String, _
         ByVal ulOptions As Long, _
         ByVal samDesired As Long, _
         ByRef phKey As LongPtr) _
    As Long

Private Declare PtrSafe Function RegEnumValue _
    Lib "Advapi32.dll" Alias "RegEnumValueA" _
        (ByVal hKey As LongPtr, _
         ByVal dwIndex As Long, _
         ByVal lptstrValueName As String, _
         ByRef lpcchValueName As Long, _
         ByVal lpReserved As Long, _
         ByRef lpType As Long, _
         ByRef lpData As Byte, _
         ByRef lpcbData As Long) _
    As Long
    
Private Declare PtrSafe Function RegCloseKey _
    Lib "Advapi32.dll" _
        (ByVal hKey As LongPtr) _
    As Long
    
Private Declare PtrSafe Function FormatMessage _
    Lib "kernel32.dll" Alias "FormatMessageA" _
        (ByVal dwFlags As Long, _
         ByVal lpSource As Long, _
         ByVal dwMessageId As Long, _
         ByVal dwLanguageId As Long, _
         ByVal lptstrBuffer As String, _
         ByVal nSize As Long, _
         ByVal vaArguments As Any) _
    As Long
    
Sub DisplayError(ByVal Title As String, ByVal ErrorNumber As Long)
    
    Dim errMessage  As String
    Dim lenMessage  As Integer
    Dim msg         As String
    Dim retval      As Long
    
    Const FORMAT_MESSAGE_FROM_SYSTEM As Long = &H1000
    
        lenMessage = 260
        errMessage = String(lenMessage, Chr(0))
        
        retval = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, 0&, ErrorNumber, 0&, errMessage, lenMessage, 0&)
        If retval > 0 Then
            msg = "Run-time error '" & ErrorNumber & "':" & vbLf & vbLf
            msg = msg & Left(errMessage, retval)
            MsgBox msg, vbExclamation + vbOKOnly, Title
        End If
        
End Sub

Function GetPrintersAndPorts() As Variant

    Dim Data()  As Byte
    Dim datType As Long
    Dim hKey    As LongPtr
    Dim index   As Long
    Dim lenData As Long
    Dim lenName As Long
    Dim prnData As Variant
    Dim prnName As String
    Dim prnPort As Variant
    Dim retval  As Long
    Dim strEnd  As Long
    Dim SubKey  As String
    Dim Text    As String
    Dim valName As String
    
    Const HKCU                  As Long = &H80000001
    Const KEY_READ              As Long = &H20019
    Const SUCCESS               As Long = 0
    Const ERROR_MORE_DATA       As Long = 234
    Const ERROR_NO_MORE_ITEMS   As Long = 259
        
        ReDim prnData(0)
        
        SubKey = "Software\Microsoft\Windows NT\CurrentVersion\PrinterPorts"

            retval = RegOpenKeyEx(HKCU, SubKey, 0&, KEY_READ, hKey)
            If retval <> 0 Then Call DisplayError("Cannot Open Registry Key", retval): Exit Function
        
            Do
Start:          ReDim Data(65535)
                lenName = 260
                valName = String(lenName, Chr(0))
                retval = RegEnumValue(hKey, index, valName, lenName, 0&, datType, Data(0), lenData)
                    Select Case retval
                        Case SUCCESS
                        Case ERROR_MORE_DATA: If Data(0) = 0 Then GoTo Start
                        Case ERROR_NO_MORE_ITEMS: Exit Do
                        Case Else: Call DisplayError("Printer Port Registry Error", retval): Exit Do
                    End Select
                index = index + 1
                
                Text = StrConv(Data, vbUnicode)
                strEnd = InStr(1, Text, Chr(0) & Chr(0)) - 1
                If strEnd > 0 Then
                    prnName = Left(valName, lenName)
                    prnPort = Split(Text, ",")(1)
                    prnData(index - 1) = prnName & " on " & prnPort
                    ReDim Preserve prnData(index)
                End If
            Loop
        
        retval = RegCloseKey(hKey)
        
        If retval <> SUCCESS Then
            Call DisplayError("Cannot Close Registry Key", retval)
        Else
            GetPrintersAndPorts = prnData
        End If
        
End Function

Function FindPrinter(ByVal PrinterName As String)

    Dim Printer  As Variant
    Dim Printers As Variant
    
        ' The asterisk "*" in place of a printer name returns All Printers.
        ' Partially matching printers names are separated by a pipe character "|".
        
        Printers = GetPrintersAndPorts
    
        For Each Printer In Printers
            If PrinterName <> "*" Then
                Res = Application.Search(PrinterName, Printer)
            Else
                Res = -1
            End If
            If VarType(Res) <> vbError Then
                If FindPrinter = "" Then
                    FindPrinter = Printer
                Else
                    FindPrinter = FindPrinter & "|" & Printer
                End If
            End If
        Next Printer
        
End Function

Sub FindPrinterTest()

    Dim Printers As Variant
    
        Printers = FindPrinter("")
        MsgBox Replace(Printers, "|", vbLf)
        
End Sub
Получить список доступных принтеров с именем порта в формате NeXX
 
Андрей Лящук,если не сложно нужен готовый код. или подскажите что и где поменять
Изменено: CEHATOP - 07.07.2019 12:23:39
Получить список доступных принтеров с именем порта в формате NeXX
 
Добрый день!
Помогите пожалуйста переделать макрос определения принтеров в системе.
Макрос служит для определения списка доступных принтеров в системе с номером порта типа "Ne:00"
Брал где то здесь на форуме. Поменял офис на 64 bit версию и он перестал работать.
Макрос написан для 32 bit офиса на 64 bit версии он не работает ошибку выдает в первой строке кода.

Код
Private Declare Function GetProfileString Lib "kernel32" _
Alias "GetProfileStringA" (ByVal lpAppName As String, _
ByVal lpKeyName As String, ByVal lpDefault As String, _
ByVal lpReturnedString As String, _
ByVal nSize As Long) As Long

Dim vaList

Sub Print_Select()
    On Error Resume Next
    Application.ScreenUpdating = False
    Dim prncnt As Integer
    vaList = PrinterFind
    For prncnt = LBound(vaList) To UBound(vaList) ' èùåì ïðèíòåðû
        PrintForm.ComboBox1.AddItem vaList(prncnt)
    Next
    PrintForm.ComboBox1.Value = Application.ActivePrinter ' âûáîð ïðèíòåðà
    PrintForm.Show
    Application.ScreenUpdating = True
End Sub

Public Function PrinterFind(Optional Match As String) As String()
    Dim n%, lRet&, sBuf$, sCon$, aPrn$()
    Dim prnstr As Boolean
    Const lLen& = 1024, sKey$ = "devices"
    aPrn = Split(Excel.ActivePrinter)
    If InStr(aPrn(UBound(aPrn)), "(") Then prnstr = True
    sCon = " " & aPrn(UBound(aPrn) - 1) & " " '
    sBuf = Space(lLen)
    lRet = GetProfileString(sKey, vbNullString, vbNullString, sBuf, lLen)
    If lRet = 0 Then
        Err.Raise vbObjectError + 513, , "Can't read Profile"
        Exit Function
    End If
    aPrn = Split(Left(sBuf, lRet - 1), vbNullChar)
    If Match <> vbNullString Then aPrn = Filter(aPrn, Match, -1, 1)
    For n = LBound(aPrn) To UBound(aPrn)
        sBuf = Space(lLen)
        lRet = GetProfileString(sKey, aPrn(n), vbNullString, sBuf, lLen)
        If prnstr Then
            aPrn(n) = aPrn(n) & " (" & Mid(sBuf, InStr(sBuf, ",") + 1, lRet - InStr(sBuf, ",") - 1) & ":)"
        Else
            aPrn(n) = aPrn(n) & " on " & Mid(sBuf, InStr(sBuf, ",") + 1, lRet - InStr(sBuf, ",") - 1) & ":"
        End If
    Next
    PrinterFind = aPrn
End Function
Вызов окна для выбора и дальнейшей вставки в письмо Outlook любого файла как вложения
 
Может кому нужно будет нашел решение. Всем спасибо за участие ))).
Вызов окна для выбора и дальнейшей вставки в письмо Outlook любого файла как вложения
 
Sanja,не силен в этом прошу помощи
Вызов окна для выбора и дальнейшей вставки в письмо Outlook любого файла как вложения
 
Доброго времени!
В примерах на сайте нашел макрос (3 вариант) для отправки письма через Outlook.

Скрытый текст

Выбор вложения осуществляется указанием полного пути до файла в ячейке А4.
Код
.Attachments.Add Range("A4").Value

Необходимо изменить макрос так что бы была возможность выбирать несколько файлов в качестве вложения из директории рабочей книги.
Другими словами после запуска макроса появляется окно с выбором файлов из того же места на диске где расположена книга с этим макросом.
После выбора файлов происходит их вставка в тело письма как вложений и потом отправка адресату.
Копирование ячейки много раз
 
Цитата
Юрий М написал:
А зачем конструкция With - End With, если работаем на активном листе?
Возможно будем и не на активном. Прямо как надо все работает. Благодарю вас за помощь.
Копирование ячейки много раз
 
Юрий М,При первом срабатывании макроса заполняется Cells(18, 19), при втором Cells(19, 19), при третьем Cells(20, 19) и т.д. до последней ячейки столбца 19.
Копирование ячейки много раз
 
Sanja,вы файл смотрели?
Копирование ячейки много раз
 
Sanja,нет не это. Необходимо начинать вставку с 18 строки 19 столбца и далее вниз на 19, 20, 21 строки
Страницы: 1 2 3 4 След.
Наверх