Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 101 След.
Пользовательская форма с переменными данными - как такую сделать?, Как сделать, что-бы пользовательская форма вызывалась в разных частях макроса с разными переменными данными?
 
если я правильно понял, то нужно что то типа этого?
"Все гениальное просто, а все простое гениально!!!"
Объединение всех листов из файла на один
 
Код
Sub CollectDataFromAllSheets()
    Dim mainsh As Worksheet
    Dim tvinkbook As Workbook
    Dim sht As Worksheet
    Dim arr(), mrow&, trow&, i&, ipath$
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    Set mainsh = ThisWorkbook.ActiveSheet
    With Application.FileDialog(msoFileDialogFilePicker)
        If .Show Then ipath = .SelectedItems(1) Else Exit Sub
    End With
    With GetObject(ipath)
        For Each sht In .Worksheets
            mrow = mainsh.Range("a" & mainsh.Rows.Count).End(xlUp).Row + 1
            trow = sht.Range("a" & sht.Rows.Count).End(xlUp).Row
            arr = sht.Range("a2:i" & trow).Value
            mainsh.Range("a" & mrow).Resize(UBound(arr), UBound(arr, 2)).Value = arr
            Erase arr
        Next sht
        .Close False
    End With
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
End Sub
"Все гениальное просто, а все простое гениально!!!"
User Form. Заполнеие списка ComboBox при открытии формы
 
Можно так
"Все гениальное просто, а все простое гениально!!!"
User Form. Заполнеие списка ComboBox при открытии формы
 
При нажатии изменить, я не вижу всю тему, поэтому и приходится создавать новое сообщение. Если смущает, то что я набиваю себе количество сообщений то это не так, обычно меняю свои, но в данном случае это было не очень удобно
"Все гениальное просто, а все простое гениально!!!"
User Form. Заполнеие списка ComboBox при открытии формы
 
Цитата
vikttur написал:
Nordheim , а вернуться и дополнить?
При дополнении цитировать не получается  :( , окно открывается не полностью, т.е. не вижу самой темы.
Если бы можно было, я толко за, сам не люблю кучу писем подряд плодить 8-0
Изменено: Nordheim - 22 Май 2020 13:27:15
"Все гениальное просто, а все простое гениально!!!"
User Form. Заполнеие списка ComboBox при открытии формы
 
Цитата
jsgromyko написал:
Но Значений будет более ста. И код таким образом превратится в портянку. Может можно как-то написать код, который будет заполнять списки из файла с какого-нибудь сервисного листа?
Легко
Код
Combobox.list = Array(1,2,3,4,5)

Либо вместо Array(1,2,3,4,5)массив с данными взятыми с листа, даже с вашим вариантом если взять данные в массив, то ComboBox.additem заполняется тремя строками кода.
Нужно просто знать что такое циклы, и как с ними работать
"Все гениальное просто, а все простое гениально!!!"
User Form. Заполнеие списка ComboBox при открытии формы
 
Цитата
jsgromyko написал:
файл нет смысла прикладывать он пустой.
Если файл пустой, то и форма как правило бывает пустая, либо все в коде прописывается.
Цитата
vikttur написал:
и правильно. Пусть помогающие сами создают пустой файл, создают в нем форму по Вашему рисунку.. Нечего бездельничать, пусть развлекаются...
:D
"Все гениальное просто, а все простое гениально!!!"
User Form. Заполнеие списка ComboBox при открытии формы
 
А зачем нужен скрин, вы приложите пример файла с данными, или вам ответить тоже скриншотом? Это форум по Excel, а не по фотошопу
Изменено: Nordheim - 22 Май 2020 13:16:14
"Все гениальное просто, а все простое гениально!!!"
User Form. Заполнеие списка ComboBox при открытии формы
 
jsgromyko, Без
Цитата
Юрий М написал:
Вы ждёте, не показав файл с формой и данными?
этого вам вряд ли можно помочь, просто лень рисовать пример.
"Все гениальное просто, а все простое гениально!!!"
Поиск совпадений значений из одного столбца со значениями из другого, Не могу подобрать функцию
 
Покажите, в более сокращенном примере, как есть и как должно быть.
"Все гениальное просто, а все простое гениально!!!"
Макрос для автоматической рассылки файлов в экселе
 
Тут, вообще не понятно, какой макрос используется, это гадание на кофейной гуще. Что то типа "У меня почему то запрос SQL выдает не те значения, которые мне нужны, подскажите в чем дело?" а что за запрос догадайтесь сами.  8-0
"Все гениальное просто, а все простое гениально!!!"
Удаление повторяющихся значений без смещения ячеек с дополнительным условием
 
Так нужно?
Код
Sub main()
    Dim dic As Object
    Dim i&, txt$, lrow&
    
    Set dic = CreateObject("scripting.dictionary")
    lrow = Range("f" & Rows.Count).End(xlUp).Row
    For i = 3 To lrow
        txt = Range("f" & i).Value & Range("g" & i).Value
        If Not dic.exists(txt) Then
            dic.Item(txt) = txt
        Else: Range("f" & i).ClearContents
        End If
    Next i
End Sub
"Все гениальное просто, а все простое гениально!!!"
Вывести одинаковые ФИО из двух таблиц
 
Вариант макросом на словарях
"Все гениальное просто, а все простое гениально!!!"
выбор из списка по частям слов
 
Очень скудное описание, я ничего не понял, и пример не понятен, что было , что стало, какие критерии отбора?
Изменено: Nordheim - 30 Апр 2020 17:12:31
"Все гениальное просто, а все простое гениально!!!"
В списке combobox'a обрезаются строки по вертикали
 
noobie1, На будущее прикладывайте файл пример,  а не картинки а то самому делать файл
Цитата
Михаил Витальевич С. написал:
Откровенно - лень.
;)
Изменено: Nordheim - 30 Апр 2020 08:42:32
"Все гениальное просто, а все простое гениально!!!"
В списке combobox'a обрезаются строки по вертикали
 
Цитата
vikttur написал:
Не так давно разбирали этот глюк. Причину определили одну - символ "№". Почему - так и не поняли
Рекомендовали вместо символа № использовать латинскую N
"Все гениальное просто, а все простое гениально!!!"
В списке combobox'a обрезаются строки по вертикали
 
У меня все норм и без номера, и с номером
Win 10
Office 365
Скрытый текст
Изменено: Nordheim - 30 Апр 2020 08:38:23
"Все гениальное просто, а все простое гениально!!!"
Макрос фильтрации очень медленно работает
 
Цитата
Михаил Витальевич С. написал:
Я учился в советской школе; по русскому имел твердую тройку
Аналогично, но когда пишешь целый день нескольким людям причем постоянно, на такие мелочи уже не обращаешь внимания. :D , главное что бы в "казнить нельзя помиловать"в нужном месте запятую поставить, а тут, как получится, хотя стараюсь писать без ошибок. Какие тут обиды, что есть, то есть.  :D
Изменено: Nordheim - 29 Апр 2020 12:55:49
"Все гениальное просто, а все простое гениально!!!"
Макрос фильтрации очень медленно работает
 
Цитата
БМВ написал:
Михаил Витальевич С. ,  Nordheim , а из-за чего спор?
Спора, как такового нет, тут больше обсуждение кому что нравится :)
"Все гениальное просто, а все простое гениально!!!"
Макрос фильтрации очень медленно работает
 
Цитата
Михаил Витальевич С. написал:
оптимизировать на современных компах...
Это если они действительно таковыми являются, есть люди которые работают на таких динозаврах, что там лишняя занятая память тормозит весь процесс. Далеко ходить не нужно  самого вот такой дома стоит
Цитата
Intel Core™2 Quad Q6600
4 ГБ ОЗУ
и на этом старье которому уже 12 лет стоит Win10 64 бит
Цитата
Михаил Витальевич С. написал:
С двумя массивами работать проще, имхо конечно...
Согласен это сугубо индивидуально, раньше так же делал второй массив, но как то тут на сайте увидел, как можно перезаписать первый, мне понравилось, поэтому теперь если задача позволяет, то второго не делаю.
Изменено: Nordheim - 29 Апр 2020 08:48:24
"Все гениальное просто, а все простое гениально!!!"
Макрос фильтрации очень медленно работает
 
Цитата
БМВ написал:
Nordheim , Да я днем тоже проверял, правда не линейная зависимость, но массив выигрывает.
Для пользователя это практически не заметно, тем более объемы не столь велики, если бы было под миллион строк да еще циклом по сотне листов то тут было имело бы смысл выбирать массивы, а в данном случае, что больше нравится :)
"Все гениальное просто, а все простое гениально!!!"
Макрос фильтрации очень медленно работает
 
Цитата
БМВ написал:
Nordheim , если есть время, сравните с вариантом на фильтре по результату и времени.
Цитата
На массиве            - 0,85
Используя фильтр -  2,33
Замерял на 244714 строках.

Код
' пример на массиве
Sub perenos1()
    Dim i&, last&, sht As Worksheet, sh As Worksheet
    Dim last1&, arr(), j&, k&, t As Date
    Const word1$ = "*Перенос*"
    t = Timer
    Set sht = Worksheets("Данные")
    Set sh = Worksheets("Перенос")
    last = sht.Cells(sht.Rows.Count, 3).End(xlUp).Row
    sht.[c1].Resize(, 6).Copy sh.[a1]
    last1 = sh.Cells(sh.Rows.Count, 1).End(xlUp).Row + 1
    arr = sht.Range("c2", sht.Cells(last, "h")).Value
    For i = 1 To UBound(arr)
        If arr(i, 1) Like word1 Then
            k = k + 1
            For j = 1 To UBound(arr, 2)
                arr(k, j) = arr(i, j)
            Next j
        End If
    Next
    If k > 0 Then sh.Range("a" & last1).Resize(k, UBound(arr, 2)).Value = arr
    Debug.Print Format(Timer - t, "0.00")
End Sub



' пример с использованием фильтра
Sub MoveData()
    Dim sh As Worksheet, t As Date
    Const word1$ = "*Перенос*"
    t = Timer
    Set sh = Worksheets("Перенос")
    With Worksheets("Данные")
        On Error Resume Next
        .ShowAllData
        On Error GoTo 0
        .Range("c1:H" & .Cells(.Rows.Count, 3).End(xlUp).Row).AutoFilter Field:=1, Criteria1:= _
            "=" & word1, Operator:=xlAnd
        .AutoFilter.Range.Offset(1).Resize(.AutoFilter.Range.Rows.Count - 1).Copy
        sh.Cells(sh.Cells(sh.Rows.Count, 1).End(xlUp).Row, 1).PasteSpecial
        Application.CutCopyMode = False
        .ShowAllData
    End With
    Debug.Print Format(Timer - t, "0.00")
End Sub
Изменено: Nordheim - 28 Апр 2020 23:08:37
"Все гениальное просто, а все простое гениально!!!"
Макрос фильтрации очень медленно работает
 
Цитата
suricat555 написал:
Александр, к сожалению, всё равно макрос переносит 21 строку друг за другом невзирая на наличие или отсутствие ключевого слова в поиске, а потом берёт 5-ую и 6-ую...
Для наглядности занес процедуру в файл и повесил ее на кнопку
Посмотрел действительно была ошибка в цикле, поправил теперь результат тот который нужен.
"Все гениальное просто, а все простое гениально!!!"
Макрос фильтрации очень медленно работает
 
Цитата
БМВ написал:
Зачем создавать массив?  :-)
Ну собственно да, зачем, если он уже есть и можно работать с ним, доп массив доп память, я привык оптимизировать (в рамках своих скромных знаний)  :D
Цитата
БМВ написал:
если есть время
честно, времени нет, работы много (хоть и на удаленке, да и файла у меня нет реального) думаю, что на данный вопрос может ответить ТС.
"Все гениальное просто, а все простое гениально!!!"
Макрос фильтрации очень медленно работает
 
Цитата
Михаил Витальевич С. написал:
Nordheim , а зачем вам такие сложности, работать в одном массиве?
Аналогично, зачем создавать дополнительный массив, если одного вполне достаточно?
И в чем сложность заключается?
Изменено: Nordheim - 28 Апр 2020 11:13:33
"Все гениальное просто, а все простое гениально!!!"
Макрос фильтрации очень медленно работает
 
Конкретно под ваш файл пример.

Код
Sub perenos1()
    Dim i&, last&, sht As Worksheet, sh As Worksheet
    Dim last1&, arr(), j&, k&
    Const word1$ = "*Перенос*"
     
    Set sht = Worksheets("Данные")
    Set sh = Worksheets("Перенос")
    last = sht.Cells(sht.Rows.Count, 3).End(xlUp).Row
    sht.[c1].Resize(, 6).Copy sh.[a1]
    last1 = sh.Cells(sh.Rows.Count, 1).End(xlUp).Row + 1
    arr = sht.Range("c2", sht.Cells(last, "h")).Value
    For i = 1 To UBound(arr)
        If arr(i, 1) Like word1 Then
            k = k + 1
            For j = 1 To UBound(arr, 2)
                arr(i, j) = arr(k, j)
            Next j
        End If
    Next
    If k > 0 Then sh.Range("a" & last1).Resize(k, UBound(arr, 2)).Value = arr
End Sub
"Все гениальное просто, а все простое гениально!!!"
Вывод фигурной скобки при использовании ConvertToJson, Вывод фигурной скобки при использовании ConvertToJson
 
А по какой причине нужно убрать скобки, это же вроде стандартный формат файла Json? Скобки , как бы показывают, что "relation" содержит массив данных.
Изменено: Nordheim - 27 Апр 2020 11:56:48
"Все гениальное просто, а все простое гениально!!!"
Как сделать значение в формате xsi:nil="true"?
 
Цитата
SanAlo написал:
сделать там одно изменение
А что мешает сделать изменение в Notepade++? Excel, не совсем удобный инструмент, для внесения изменений в xml файлы.
"Все гениальное просто, а все простое гениально!!!"
Макрос фильтрации очень медленно работает
 
Цитата
Jack Famous написал:
нет смысла выгружать весь массив (более 30 столбцов), если нужно/заполнено всего 30 — верно?
да
Цитата
Jack Famous написал:
но и поднятие вопроса о скорости обращения к данным различного типа будет нелишним
я не обучаю в темах, а оптимизирую конкретный процесс, если вдаваться в подробности , то тут можно целую книгу написать.
Думаю, что ТС результат устроил, и не вижу смысла дальнейшего флуда не по теме.
Всем Спасибо!
Изменено: Nordheim - 26 Апр 2020 16:22:21
"Все гениальное просто, а все простое гениально!!!"
Макрос фильтрации очень медленно работает
 
Цитата
RAN написал:
Неча на зеркало пенять.   То, что сейчас в #13, и то, что я процитировал в #15, вещи совершенно различные.
Не совсем понял к чему это?
"Все гениальное просто, а все простое гениально!!!"
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 101 След.
Наверх