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

Страницы: 1
VBA. 20-ти значное число и "слово по столбцам"
 
Добрый день, друзья!

Помогите решить нерешаемую для меня задачку.

Есть QR-code на продукте, после скана которого я получаю очень много информации о продукте (параметры, установленные элементы и т.д.)
Далее эту инфу я помещаю в ячейку "А1" и макросом разношу на слова по столбцам (каждый параметр отделен ; )

Вот пример
HX174120002;10/10/2017;61.30;40.70;0.80;1.24;0.10;0.20;0.00;0.00;4.18;0.10;207;1717040069;1717015069;1717017069;CHT3632601;CHT3630901;CHT3632601;BI3175320;BI3175320;BI3175320;1.97;1.98;2.00;OK;OK;OK;42KV / 50HZ / 60S;47;170515106651401004698479;OPERATOR.1;OK;OK

Проблема получается с большим числом в конце этого текста - 170515106651401004698479
Когда макрос разносит текст по столбцам он вставляет это число как число))) И соответственно Excel рубит все после 15-ого знака (это если формат текста число, а если любой другой, то вот так делает 1.70515106651401E+23)
Такое большое число можно вставить только если оно будет по формату "Текст" (я его использовать в формулах нигде не буду), но макрос игнорирует все форматы ячейки и вставляет каждый раз как число.

Я пока выкрутился из ситуации, но стало не очень удобно. Это большое число тоже получается из сканирования, но только штих-кода. людям приходится сканировать два кода. Это отнимает время. А иногда и совсем не возможно, если на продукт навесят пластиковый обвес.
Хочется просто забирать это число из основного кода.

Помогите!

Вот пример кода макроса
Код
Range("A1").TextToColumns _
         Destination:=Range("A1"), DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
         ConsecutiveDelimiter:=False, Tab:=False, _
       Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _
     :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
       Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1 _
       ), Array(14, 1), Array(15, 1), Array(16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array _
      (20, 1), Array(21, 1), Array(22, 1), Array(23, 1), Array(24, 1), Array(25, 1), Array(26, 1), _
     Array(27, 1), Array(28, 1), Array(29, 1), Array(30, 1), Array(31, 1), Array(32, 1), Array( _
    33, 1), Array(34, 1), Array(35, 1), Array(36, 1), Array(37, 1), Array(38, 1), Array(39, 1)) _
        , TrailingMinusNumbers:=True
Печать UserForm из VBA
 
Ну и ладно. Просто вывожу на экран сообщение о том какой принтер сейчас выбран по умолчанию.
Печать UserForm из VBA
 
Цитата
The_Prist написал:
если надо распечатать PDF, то просто выбираем встроенный в офис виртуальный PDF(или XPS) принтер.
Не работает!
PrintForm отправляет на тот принтер который выбран по умолчанью в Windows, а ChangePrinter меняет принтер только в настройках Excel, он игнорируется так как печать идет на прямую из VBA
Переменная для Label
 
Цитата
Михаил С. написал:
. В зависимости от того, где работать, вместо Public  может быть достаточно Dim.
Спасибо. Вариант с объявлением LName как Object сработал! Все работате как надо.
Вечно на такой ерунде стопорюсь.

Вопрос закрыт!
Переменная для Label
 
Файл во вложении. Форму запускайте из VBA поленился добавлять кномпу)
При клике на Label1 появляется TextBox1. Введенный в TextBox текст сохраняется в данном Label1.
Тоже самое хочу сделать для Label2,3,4,5-100 и при этом использовать один TextBox. Для этого я хочу при клике на конкретный Label записывать его или его имя в глобальную переменную, а потом подставлять в общую для всех программу.
Надеюсь, что понятно написал)
Переменная для Label
 
Добрый день.

Понедельник день тяжелый...

Хочу создать глобальную переменную для Label-ов, которые есть на моей форме.
Есть глобальная переменная LName. При клике на любой Label необходимо записать его в переменную или его имя, чтобы потом работать с глобальной переменной.
Написал ниже кодом тот бред, который у меня в голове, но не знаю как это офомить. чтобы программа прожевала. Какой тип переменной выбрать для LName? String или Label?
Код
Private Sub Label1_Click()
LName = Label1
TextBox1.Value = LName.Caption
Печать UserForm из VBA
 
Посмотрю, что там есть.
Использую для печати PrintForm, но данная функция отправляет на принтер, который стоит по умолчанию, а я хочу выбирать принтеры. Вот в этом вся беда.
Печать UserForm из VBA
 
Добрый день.

Нашел вот такой вот код для выбора принтера и печат, но он заточен под диапозон или лист, а я хочу печатать нужны UserForm, а точнее выбирать между печатью и сохранением в PDF.

Что необходимо подправить, чтобы все заработало?
Вот ссылка на источник ссылка
Код
Option Explicit

Public sNowPrinter As String

Sub ChangePrinter()
    sNowPrinter = "Set"
    Dim v, s
    s = Application.ActivePrinter
        v = Application.Dialogs(xlDialogPrinterSetup).Show
     If v = True Then
        sNowPrinter = Application.ActivePrinter
    End If
    Application.ActivePrinter = s
End Sub

Function DoPrint(Optional rr As Range = Nothing, Optional lCopies As Long = 1)
    Dim sActPrinter As String
      If sNowPrinter = "" Or sNowPrinter = "Set" Then
                Call ChangePrinter
               If sNowPrinter = "Set" Then
            If MsgBox("Не выбран принтер для печати. Использовать установленный в качестве активного", vbCritical + vbYesNo) = vbNo Then
                Exit Function
            End If
            sActPrinter = Application.ActivePrinter
        Else
            sActPrinter = sNowPrinter
        End If
    End If
  If rr Is Nothing Then
                ActiveSheet.PrintOut Copies:=lCopies, ActivePrinter:=sActPrinter
    Else
       
        rr.PrintOut Copies:=lCopies, ActivePrinter:=sActPrinter
    End If
  End Function
Активация TextBox
 
Спасибо!
Все так как надо!
Вопрос закрыт!
Активация TextBox
 
Добрый день, друзья.

Надеюсь на ваш опыт.
Не могу понять как сделать следующее....
Создал UserForm. Добавил туду TextBox. Написал срочку для записи текста активной ячейки в TextBox.
Но, изменение значения в TextBox происходит только при клике по самому TextBox, а я хочу, чтобы это менялось автоматически.
Подскажите как это сделать.
Поиск формулы объединенной ячейки VBA
 
Добрый день!

Есть программа заточенная на поиск значений в ячейках по всей книге, но нужного значения она не находит. Стал разбираться и обнаружил. что поиск объединенной ячейки проходит при выбранном значении области поиска "формула". меняю в Find Value на Formulas и все ломается.
В чем может быть проблему? Уже несколько дней голову ломаю и единственное, что понял это ОБЪЕДИНЕННЫЕ ЯЧЕЙКИ ЗЛО!

Вот кусок программы. При запуске начинает ругаться на LOOP
Код
Private Sub CommandButton1_Click()
    Dim i As Long, j As Long, fst As String, ws As Worksheet, x As Range, a(), b()
    Dim p As String, f As String, wb As Workbook
      Application.ScreenUpdating = False: Set sh = ActiveSheet
    ReDim a(1 To 1000, 1 To 6): b = ListBox1.List
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "Укажите рабочую папку": .Show
        If .SelectedItems.Count = 0 Then Exit Sub Else p = .SelectedItems(1) & "\"
    End With
    f = Dir(p & "*.xls*")
    Do While f <> ""
        If p & f <> ThisWorkbook.FullName Then
            Set wb = Workbooks.Open(p & f)
            For i = LBound(b, 1) To UBound(b, 1)
                If b(i, 1) <> "" Then
                    For Each ws In wb.Sheets
                        Set x = ws.UsedRange.Find(b(i, 0), , xlFormulas, xlWhole)
                          
                        If Not x Is Nothing Then
                            fst = x.Address
                               Do
                                j = j + 1
                                a(j, 1) = b(i, 0)
                                a(j, 2) = b(i, 1)
                                a(j, 3) = wb.FullName
                                a(j, 4) = x.Parent.Name
                                a(j, 5) = x.Address
                                a(j, 6) = 1
                                Set x = ws.UsedRange.FindNext(x)
                            Loop While fst <> x.Address
                            End If
                    Next
                End If
            Next
            wb.Close False
        End If
        f = Dir
    Loop
    If a(1, 1) = "" Then
        MsgBox "Нет совпадений!": Exit Sub
    End If
    ListBox2.List = a: Me.Width = 700
End Sub
Номер страницы по адресу ячейки
 
Цитата
V написал:
ActiveCell.Column и ActiveCell.Row замените на то что вам нужно.
Пробую, но ничего не получается.
Например надо определить на какой странице находится ячейка Е104. Как это можно сделать?
Номер страницы по адресу ячейки
 
Вот в программе. Все работает.
Номер страницы по адресу ячейки
 
Добрый день!
Необходимо решить следующую задачу.
Есть адрес ячейки и для этого адреса необходимо определять номер страницы в которой расположена данная ячейка.
Далее номер страницы я буду использовать для печати
Нашел вот такой вариант кода, но не знаю как его подправить под себя.
.
Код
Public Sub PageNumner()
    Dim VPB As Excel.VPageBreak
    Dim HPB As Excel.HPageBreak
    Dim intVPBC As Integer
    Dim intHPPC As Integer
    Dim lngPage As Long
    
    lngPage = 1
    
    If Activesheet.PageSetup.Order = xlDownThenOver Then
        intHPPC = Activesheet.HPageBreaks.Count + 1
        intVPBC = 1
    Else
        intVPBC = Activesheet.VPageBreaks.Count + 1
        intHPPC = 1
    End If

    For Each VPB In Activesheet.VPageBreaks
        If VPB.Location.Column > ActiveCell.Column Then
            Exit For
        End If
        
        lngPage = lngPage + intHPPC
    Next VPB
    
    For Each HPB In Activesheet.HPageBreaks
        If HPB.Location.Row > ActiveCell.Row Then
            Exit For
        End If
            
        lngPage = lngPage + intVPBC
    Next HPB
    
    MsgBox "Номер страницы активной ячейки = " & lngPage
End Sub
Поиск значений в ListBox по всей книге и другим файлам. VBA
 
Есть несколько книг, например 5. Книги называются М1, М2, М3, М4 и М5.
Мы находим непустую ячейку М1 с значением "1234" (Левый столбец). Далее мы выбираем папку с книгами в которых будем производить поиск и находим множество совпадений. Я хочу увидеть где он нашел это значение в книге М1, а сейчас он находит это значение и в книгах М2, М3, М4, М5, а это лишняя информация.

Можно конкретизировать поиск исходя из найденного в непустой ячейки. Например если в непустой ячейке М1, то ищет только в файле М1.xls выбранной папки?
Поиск значений в ListBox по всей книге и другим файлам. VBA
 
Кнопка цитирования не для ответа [МОДЕРАТОР]

Вариант хороший, но так сложно не требуется.
Папка будет одна. и в ней будут лежать все необходимые книги.
Нужно искать по содержимому непустой ячейки. Если в ячейке М1, то книга1, если М2, то книга2, если М3 и т. д.
Поиск значений в ListBox по всей книге и другим файлам. VBA
 
Цитата
SAS888 написал:
Если Вас что-то не устраивает (или я не угадал) - укажите, как нужно сделать.
Все именно так как я и хотел. Большое спасибо!

А каким образом можно производить поиск в других книгах?
Поиск значений в ListBox по всей книге и другим файлам. VBA
 
Цитата
Sanja написал:
В модуль формы
Добавил. Ошибку не дает это уже хорошо.
Но не работает так как надо. После нажатия "поиск" выводит сообщение "Значение не найдено"
Поиск значений в ListBox по всей книге и другим файлам. VBA
 
1. Изначально я бы начал с поиска в данной книге. Далее можно рассмотреть варианты с поиском в других файлах в этой же папке, где лежит файл. Искать из ListBox
2  Искать полное совпадение
3. Результатом хочу чтобы поиск перешел на на лист в книге и показал ту ячейку, которую нашел.
4. Собирать и выводить результаты не планировал.

Каким образом можно выводить в Listbox помимо номера из левого столбца еще и, то что он там нашел?
Далее то что программа найдет будет определять страницу или книгу в которой необходимо будет производить поиск. И это очень важный момент.
Поиск значений в ListBox по всей книге и другим файлам. VBA
 
Добрый день!
Есть файл с таблицей. При клике на любую ячейку вылетает форма в которой необходимо выбрать номер столбца. В выбранном столбце происходит поиск всех непустых ячеек и все результаты помещаются в ListBox.
Как далее при нажатие на кнопку "Поиск" поочередно производить поиск значений из ListBox во всей книге или других файлах, к которым я укажу путь в дальнейшем?
VBA. Поиск непустой ячейки в диапазоне
 
Цитата
SAS888 написал:
Посмотрите и проверьте. Все ли Вас устраивает?
Все отлично! Большое спасибо.

Цитата
vikttur написал:
Тема о поиске непустой ячейки в диапазоне. А вы куда уже пошли?
От темы мы не уходили. Просто несколько вариантов вывода результатов поиска.
VBA. Поиск непустой ячейки в диапазоне
 
Все отлично! с Combox намного удобнее.
Спасибо!
А как можно выводить сразу весь список при нажатие кнопки? Все что он найдет непустое сразу в список собирать. Можно так сделать?
VBA. Поиск непустой ячейки в диапазоне
 
Еще момент.
Необходимо, чтобы при смене номера столбца поиск начинался опять с верхней строчки, а не продолжался.
VBA. Поиск непустой ячейки в диапазоне
 
Спасибо!
Работает отлично.
А если столбцы и строки будут не пронумерованы. а будут иметь название.
В моем случае будет немного по другому.
Файл во вложении.
VBA. Поиск непустой ячейки в диапазоне
 
Добрый день!
Не могу решить одну задачку. Надеюсь, что великие умы этого форума мне помогут)))
1) Есть таблица (область) на Листе1
2) Некоторые ячейки этой таблицы заполнены.

Необходимо в имеющейся UserForm1 ввести номер столбца (№2 выделен зеленым) и при клике по кнопке "Поиск" вывести координаты первой непустой ячейки. далее при повторном клике "Поиск" вывести координаты следующей непустой ячейки и т. д. Если ячейки заканчиваются, то начать поиск с начала.

Надеюсь, что понятно объяснил и не слишком сложно. Файл во вложении.
Автоматическое заполнение с определенной периодичностью
 
Все получилось. Тема закрыта
Автоматическое заполнение с определенной периодичностью
 
Спасибо!

А если я хочу это делать не в рамках месяца года (12 столбцов), а в рамках недель года. В году 52 недели (с хвостиком). Т.е. все тоже самое, но таблица будет больше. И дата с которой все должно начинаться будет именно неделя. Как быть в этом случае?
Автоматическое заполнение с определенной периодичностью
 
Добрый день!

Столкнулся со следующей задачей и хоть убей не знаю как к ее решить.

1) Есть ячейки, которые содержат данные (слово, число, не важно)
2) Есть ячейки , которые определяют периодичность копирования
3) Есть область в которой и должно все автоматически копироваться/заполняться.(Месяца)
4) И есть ячейка, которая определяет с какого столбца (месяца) все должно начинаться

Например: В ячейке A2 "ТО1" (Техническое обслуживание каждый месяц)
В ячейке B2 число "1", которое означает, что содержимое ячейки А1, начиная с ячейки, указанной в С2 (месяц - Январь), должна копироваться в область, в каждую ячейку. Т.е. наша область (таблица), заполняется в столбцах Январь-Февраль-Март и т. д.
Далее в ячейке А3 "ТО2" (Техническое обслуживание каждые два месяца)
В ячейке В3 число "2", которое означает, что содержимое ячейки А3 начиная с ячейки. указанной в С3 (например Март), Должна копироваться в область через каждый месяц
И т.д. для других столбцов
Как должно все выглядеть, в примере.
Автоматическое копирование
 
В данный момент подготавливается большая база, которая будет содержать 2000 ед. оборудования и каждое оборудование около 5 видов работ, т.е. 10000 видов работ для всего этого оборудования. Каждая работа (из 10000) занимает один лис (Шаблон). В неделю, согласно годовому графику необходимо распечатывать до 50 таких шаблонов. Заполнять 10000 шаблонов вручную это убийство. Искать их в ручную это идиотизм и займет очень много времени. А если все будет заполнятся автоматически из базы, то будет намного удобнее.
Один шаблон. Одна база. Один годовой график. По графику мы знаем кол-во работ в неделю. Соответственно кол-во шаблонов.
Автоматическое копирование
 
Добрый день!

Появилась задачка над которой сижу не первый день и не могу разобраться...(((

Есть Шаблон! Он занимает целую страницу. Хочу написать макрос для многочисленного копирования данного шаблона (Будет ли область печати копироваться или надо в ручную двигать?). Кол-во раз например указывается в ячейке на другом листе.
Далее задача сложнее... Необходимо заполнять определенную область данного шаблона данными с другого листа. Например на шаблоне есть ячейка В1 которую надо заполнять. На листе №2 есть данные в ячейках В1:В10. Если напротив ячеек в А1:А10 стоит "Х", то необходимо копировать эту ячейку (В1:В10) в шаблон. Следующую ячейку в новый шаблон и так далее. Кол-во "Х" и определяет кол-во шаблонов.
Надеюсь, что объяснил доступно. И надеюсь что данную задачу можно выполнить силами Excel))))
Страницы: 1
Наверх