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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 92 След.
Вывести из массива уникальные значения
 
У меня давно уже в Personal лежит макрос для поиска уникальных значений в выделенном диапазоне.
Попробуйте:
Код
Sub NoDups_in_Range()
'---------------------------------------------------------------------------------------
' Procedure    : NoDups_in_Range
' Author       : Alex_ST
' Topic_HEADER : Макрос "NoDups_in_Range" (Подсчёт и вывод уникальных значений в диапазоне)
' Topic_URL    : http://www.excelworld.ru/forum/3-39-25849-16-1347208019
' Purpose      : вывод списка уникальных значений из ВИДИМЫХ ячеек задаваемого диапазона с возможностью подсчёта числа повторов
'---------------------------------------------------------------------------------------
   Dim Addr, rRng As Range, rCell As Range
   On Error Resume Next
   '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
   ' замена Application.InputBox("...", "...", Type:=8), не работающего на других листах и листах с УФ формулой
   Addr = Application.InputBox("Где брать список?", "Выбор диапазона данных", "=" & Selection.Address, Type:=0)
   If TypeName(Addr) = "Boolean" Then Exit Sub    ' если нажали "Отмена", то Addr = False
   Addr = Range(Trim(Mid(Application.ConvertFormula(Addr, xlR1C1, xlA1, True), 2))).AddressLocal(0, 0, 1, 1)
   '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
   Set rRng = Intersect(Range(Addr).Parent.UsedRange, Range(Addr).Parent.Cells.SpecialCells(xlCellTypeVisible), Range(Addr)): If Err Then Exit Sub
   With CreateObject("Scripting.Dictionary"): .CompareMode = vbTextCompare   ' создаем временный словарь
      For Each rCell In rRng
         If Trim(rCell) <> "" Then .Item(Trim(rCell)) = .Item(Trim(rCell)) + 1   ' попытка записи значения по отсутствующему ключу добавит ключ в словарь
      Next
      If MsgBox("Видимые ячейки указанного диапазона содержат " & vbCrLf & .Count & " уникальных значений." & vbCrLf & _
                "Вывести список на лист?", vbYesNo Or vbInformation, "Параметры списка") = vbNo Then Exit Sub
      '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
      ' замена Application.InputBox("...", "...", Type:=8), не работающего на других листах и листах с УФ формулой
      Addr = Application.InputBox("Куда выводить список?", "Выбор диапазона данных", "=" & Selection(1).Address, Type:=0)
      If TypeName(Addr) = "Boolean" Then Exit Sub   ' если нажали "Отмена", то Addr = False
      Addr = Range(Trim(Mid(Application.ConvertFormula(Addr, xlR1C1, xlA1, True), 2))).AddressLocal(0, 0, 1, 1)
      '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
      Range(Range(Addr)(1, 1), Range(Addr)(.Count, 1)).Value = Application.WorksheetFunction.Transpose(.Keys)
      Range(Addr).Parent.Activate  ' перейти к листу, куда выводятся данные
      If MsgBox("Вывести количества в соседний столбец?", vbQuestion + vbYesNo, "Вывод данных") = vbYes Then
         Range(Range(Addr)(1, 2), Range(Addr)(.Count, 2)).NumberFormat = "General"
         Range(Range(Addr)(1, 2), Range(Addr)(.Count, 2)).Value = Application.WorksheetFunction.Transpose(.Items)
         Range(Range(Addr)(1, 1), Range(Addr)(.Count, 2)).Activate  ' выделить диапазон выведенных данных
      Else
         Range(Range(Addr)(1, 1), Range(Addr)(.Count, 1)).Activate  ' выделить диапазон выведенных данных
      End If
   End With
End Sub
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
Сравнительная характеристика массивов, коллекций и словарей
 
Цитата
Юрий М написал:
Лично я этого не знал - может кому ещё пригодится )
Что-то я этот совет Юрия либо пропустил, либо просто забыл...
Сейчас практически не программирую. Но несколько лет назад всё равно почему-то предпочитал в своих разработках применять циклы For Each - Next. Наверное, интуитивно  :)
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
Сохранить Рабочую Область в Excel 2013
 
karlson7,
основные доработки и обсуждения были в основном в Миру Excel в топике"Сохранить рабочую область" в Excel-2013, не уверен, но здесь, на Планете, я, кажется, выложил крайнюю версию. Проверьте.
Но вообще-то книгу с рабочей областью Вы сохраняете сами и с каким расширением сохранять - Ваш выбор.
Проверьте в Безопасности разрешение на выполнение макросов на всякий случай.
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
Сохранить Рабочую Область в Excel 2013
 
karlson7, для того, чтобы процедура могла прописывать код в модули проекта VBA, необходимо дать соответствующее разрешение в Центре управления безопасностью:
   Файл → Параметры → Центр управления безопасностью → Параметры макросов: поставить галочку "Доверять доступ к объектной модели проектов VBA"
Подробнее читайте Что необходимо для внесения изменений в проект VBA(макросы) программно
На Планете также есть топик Доверять доступ к объектной модели проектов VBA
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
Пользовательская форма прекращает работу Excel
 
Цитата
New написал:
Алексей, а при чём тут мышь?
Ну да, немного попутал...
Но вообще-то в коде нет выбора элемента управления после инициализации формы. А код с клавиатуры получит только активный элемент. А чем его можно инициализировать? В 99,9% случаев ЛКМ (можно ещё, конечно, и Tab-ом, но это очень редкое извращение)
Изменено: Alex_ST - 27.10.2021 14:38:24
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
Пользовательская форма прекращает работу Excel
 
Цитата
New написал:
Вот так объявлять переменные в VBA неправильно
Это точно. А, если уж в Private Sub UserForm_Initialize() объявил как  
Код
Dim s&
, то и эти переменные нужно объявлять как
Код
Dim i&, i1&
для соблюдения единого стиля написания.
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
Пользовательская форма прекращает работу Excel
 
Неопытный_Экселист, тут-то как раз ничего недопустимого нет. Это часто используемое опытными людьми сокращение. Основано на числовых представлениях логических значений: false =0 , true >0
А вот с логикой событий мыши на комбобоксе что-то хитрое накручено.
Почему-то отдельно обрабатываются обычно неразрывно следующие друг за другом (если, конечно, не заснул, нажав ЛКМ) события клика ЛКМ мыши: ComboBox1_KeyDown (нажатие ЛКМ) и ComboBox1_KeyUp (отпускание ЛКМ) вместо того, чтобы сделать всё в одной процедуре обработки события ComboBox1_Click
Но это, кажется, ничего не должно вешать кроме мозгов разбирающего код юзера.
А вот зачем два раза подряд проверяется условие
Код
      If ComboBox1.Text <> "" Then
         ActiveCell = ComboBox1.Text
         If ComboBox1.Text <> "" Then
я не понял.
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
ДР (ex HB)
 
Юрий, с ДНЮХОЙ!
Здоровья и удачи тебе и всем тем, кто тебе близок и дорог.
Гибкости ума и элегантности решений.
Да минуют тебя #Н/Д, #ЗНАЧ!, #ССЫЛКА!, #ДЕЛ/0! и #ИМЯ?
И всегда по жизни  On Error Resume Next
Изменено: Alex_ST - 28.04.2021 09:07:07
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
Программа для редактирования Ribbon - RibbonXMLEditor
 
dolbodub, спасибо, что сказал. Попробуем на досуге.
На всякий случай актуальная ссылка для скачивания:
Ribbon XML Editor v.9.3
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
ДР (ex HB)
 
Код
=СИМВОЛ(207)&СИМВОЛ(238)&СИМВОЛ(231)&СИМВОЛ(228)&СИМВОЛ(240)&СИМВОЛ(224)&СИМВОЛ(226)&СИМВОЛ(235)&СИМВОЛ(255)&СИМВОЛ(254)&СИМВОЛ(44)&СИМВОЛ(32)&СИМВОЛ(196)&СИМВОЛ(236)&СИМВОЛ(232)&СИМВОЛ(242)&СИМВОЛ(240)&СИМВОЛ(232)&СИМВОЛ(233)&СИМВОЛ(33)&СИМВОЛ(32)&СИМВОЛ(198)&СИМВОЛ(229)&СИМВОЛ(235)&СИМВОЛ(224)&СИМВОЛ(254)&СИМВОЛ(32)&СИМВОЛ(231)&СИМВОЛ(228)&СИМВОЛ(238)&СИМВОЛ(240)&СИМВОЛ(238)&СИМВОЛ(226)&СИМВОЛ(252)&СИМВОЛ(255)&СИМВОЛ(44)&СИМВОЛ(32)&СИМВОЛ(243)&СИМВОЛ(228)&СИМВОЛ(224)&СИМВОЛ(247)&СИМВОЛ(232)&СИМВОЛ(32)&СИМВОЛ(232)&СИМВОЛ(32)&СИМВОЛ(79)&СИМВОЛ(110)&СИМВОЛ(32)&СИМВОЛ(69)&СИМВОЛ(114)&СИМВОЛ(114)&СИМВОЛ(111)&СИМВОЛ(114)&СИМВОЛ(32)&СИМВОЛ(82)&СИМВОЛ(101)&СИМВОЛ(115)&СИМВОЛ(117)&СИМВОЛ(109)&СИМВОЛ(101)&СИМВОЛ(32)&СИМВОЛ(78)&СИМВОЛ(101)&СИМВОЛ(120)&СИМВОЛ(116)

Код
=СИМВОЛ(196)&СИМВОЛ(224)&СИМВОЛ(32)&СИМВОЛ(239)&СИМВОЛ(240)&СИМВОЛ(229)&СИМВОЛ(225)&СИМВОЛ(243)&СИМВОЛ(228)&СИМВОЛ(229)&СИМВОЛ(242)&СИМВОЛ(32)&СИМВОЛ(241)&СИМВОЛ(32)&СИМВОЛ(242)&СИМВОЛ(238)&СИМВОЛ(225)&СИМВОЛ(238)&СИМВОЛ(233)&СИМВОЛ(32)&СИМВОЛ(208)&СИМВОЛ(253)&СИМВОЛ(237)&СИМВОЛ(228)&СИМВОЛ(238)&СИМВОЛ(236)&СИМВОЛ(224)&СИМВОЛ(233)&СИМВОЛ(231)&СИМВОЛ(33)&СИМВОЛ(32)&СИМВОЛ(200)&СИМВОЛ(236)&СИМВОЛ(229)&СИМВОЛ(237)&СИМВОЛ(229)&СИМВОЛ(236)&СИМВОЛ(32)&СИМВОЛ(202)&СИМВОЛ(238)&СИМВОЛ(237)&СИМВОЛ(242)&СИМВОЛ(240)&СИМВОЛ(238)&СИМВОЛ(235)&СИМВОЛ(224)&СИМВОЛ(44)&СИМВОЛ(32)&СИМВОЛ(192)&СИМВОЛ(235)&СИМВОЛ(252)&СИМВОЛ(242)&СИМВОЛ(224)&СИМВОЛ(32)&СИМВОЛ(232)&СИМВОЛ(32)&СИМВОЛ(241)&СИМВОЛ(226)&СИМВОЛ(255)&СИМВОЛ(242)&СИМВОЛ(238)&СИМВОЛ(227)&СИМВОЛ(238)&СИМВОЛ(32)&СИМВОЛ(196)&СИМВОЛ(229)&СИМВОЛ(235)&СИМВОЛ(224)&СИМВОЛ(46)&СИМВОЛ(32)&СИМВОЛ(221)&СИМВОЛ(241)&СИМВОЛ(234)&СИМВОЛ(229)&СИМВОЛ(233)&СИМВОЛ(239)&СИМВОЛ(33)
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
ДР (ex HB)
 
Цитата
Alemox написал:
Вы шифровками занимаетесь?
Нет, просто VBA развлекаюсь. Для меня вообще Excel-2003 - любимая игрушка-головоломка.
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
ДР (ex HB)
 
Код
=СИМВОЛ(207)&СИМВОЛ(238)&СИМВОЛ(231)&СИМВОЛ(228)&СИМВОЛ(240)&СИМВОЛ(224)&СИМВОЛ(226)&СИМВОЛ(235)&СИМВОЛ(255)&СИМВОЛ(254)&СИМВОЛ(44)&СИМВОЛ(32)&СИМВОЛ(222)&СИМВОЛ(240)&СИМВОЛ(232)&СИМВОЛ(233)&СИМВОЛ(33)&СИМВОЛ(32)&СИМВОЛ(198)&СИМВОЛ(229)&СИМВОЛ(235)&СИМВОЛ(224)&СИМВОЛ(254)&СИМВОЛ(32)&СИМВОЛ(231)&СИМВОЛ(228)&СИМВОЛ(238)&СИМВОЛ(240)&СИМВОЛ(238)&СИМВОЛ(226)&СИМВОЛ(252)&СИМВОЛ(255)&СИМВОЛ(44)&СИМВОЛ(32)&СИМВОЛ(243)&СИМВОЛ(228)&СИМВОЛ(224)&СИМВОЛ(247)&СИМВОЛ(232)&СИМВОЛ(32)&СИМВОЛ(232)&СИМВОЛ(32)&СИМВОЛ(79)&СИМВОЛ(110)&СИМВОЛ(32)&СИМВОЛ(69)&СИМВОЛ(114)&СИМВОЛ(114)&СИМВОЛ(111)&СИМВОЛ(114)&СИМВОЛ(32)&СИМВОЛ(82)&СИМВОЛ(101)&СИМВОЛ(115)&СИМВОЛ(117)&СИМВОЛ(109)&СИМВОЛ(101)&СИМВОЛ(32)&СИМВОЛ(78)&СИМВОЛ(101)&СИМВОЛ(120)&СИМВОЛ(116)

Код
=СИМВОЛ(196)&СИМВОЛ(224)&СИМВОЛ(32)&СИМВОЛ(236)&СИМВОЛ(232)&СИМВОЛ(237)&СИМВОЛ(243)&СИМВОЛ(254)&СИМВОЛ(242)&СИМВОЛ(32)&СИМВОЛ(242)&СИМВОЛ(229)&СИМВОЛ(225)&СИМВОЛ(255)&СИМВОЛ(32)&СИМВОЛ(35)&СИМВОЛ(205)&СИМВОЛ(47)&СИМВОЛ(196)&СИМВОЛ(44)&СИМВОЛ(32)&СИМВОЛ(35)&СИМВОЛ(199)&СИМВОЛ(205)&СИМВОЛ(192)&СИМВОЛ(215)&СИМВОЛ(33)&СИМВОЛ(44)&СИМВОЛ(32)&СИМВОЛ(35)&СИМВОЛ(209)&СИМВОЛ(209)&СИМВОЛ(219)&СИМВОЛ(203)&СИМВОЛ(202)&СИМВОЛ(192)&СИМВОЛ(33)&СИМВОЛ(44)&СИМВОЛ(32)&СИМВОЛ(35)&СИМВОЛ(196)&СИМВОЛ(197)&СИМВОЛ(203)&СИМВОЛ(47)&СИМВОЛ(48)&СИМВОЛ(33)&СИМВОЛ(32)&СИМВОЛ(232)&СИМВОЛ(32)&СИМВОЛ(35)&СИМВОЛ(200)&СИМВОЛ(204)&СИМВОЛ(223)&СИМВОЛ(63)
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
ДР (ex HB)
 
Витя, с ДНЮХОЙ!
Удачи и здоровья тебе и твоим близким!
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
ДР (ex HB)
 
С...пы...асибо, ребяты!  ;)
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
ДР (ex HB)
 
Ребята, спасибо большое вам всем за поздравления!
К сожалению, скорее всего дальше сегодня отвечать не смогу, пора к столу.
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
ДР (ex HB)
 
Спасибо, Серёга!
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
ДР (ex HB)
 
Спасибо большое за поздравления!
К сожалению, в последнее время немного отошёл от VBA, но всё-таки тянет к "старой игрушке"...
Сейчас на работе посвободнее, может быть удастся ответить в паре постов
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
ДР (ex HB)
 
О! Дмитрий, с ДНЮХОЙ!
Код
=СИМВОЛ(207)&СИМВОЛ(238)&СИМВОЛ(231)&СИМВОЛ(228)&СИМВОЛ(240)&СИМВОЛ(224)&СИМВОЛ(226)&СИМВОЛ(235)&СИМВОЛ(255)&СИМВОЛ(254)&СИМВОЛ(44)&СИМВОЛ(32)&СИМВОЛ(196)&СИМВОЛ(236)&СИМВОЛ(232)&СИМВОЛ(242)&СИМВОЛ(240)&СИМВОЛ(232)&СИМВОЛ(233)&СИМВОЛ(33)&СИМВОЛ(32)&СИМВОЛ(198)&СИМВОЛ(229)&СИМВОЛ(235)&СИМВОЛ(224)&СИМВОЛ(254)&СИМВОЛ(32)&СИМВОЛ(231)&СИМВОЛ(228)&СИМВОЛ(238)&СИМВОЛ(240)&СИМВОЛ(238)&СИМВОЛ(226)&СИМВОЛ(252)&СИМВОЛ(255)&СИМВОЛ(44)&СИМВОЛ(32)&СИМВОЛ(243)&СИМВОЛ(228)&СИМВОЛ(224)&СИМВОЛ(247)&СИМВОЛ(232)&СИМВОЛ(32)&СИМВОЛ(232)&СИМВОЛ(32)&СИМВОЛ(79)&СИМВОЛ(110)&СИМВОЛ(32)&СИМВОЛ(69)&СИМВОЛ(114)&СИМВОЛ(114)&СИМВОЛ(111)&СИМВОЛ(114)&СИМВОЛ(32)&СИМВОЛ(82)&СИМВОЛ(101)&СИМВОЛ(115)&СИМВОЛ(117)&СИМВОЛ(109)&СИМВОЛ(101)&СИМВОЛ(32)&СИМВОЛ(78)&СИМВОЛ(101)&СИМВОЛ(120)&СИМВОЛ(116)

Код
=СИМВОЛ(196)&СИМВОЛ(224)&СИМВОЛ(32)&СИМВОЛ(236)&СИМВОЛ(232)&СИМВОЛ(237)&СИМВОЛ(243)&СИМВОЛ(254)&СИМВОЛ(242)&СИМВОЛ(32)&СИМВОЛ(242)&СИМВОЛ(229)&СИМВОЛ(225)&СИМВОЛ(255)&СИМВОЛ(32)&СИМВОЛ(35)&СИМВОЛ(205)&СИМВОЛ(47)&СИМВОЛ(196)&СИМВОЛ(44)&СИМВОЛ(32)&СИМВОЛ(35)&СИМВОЛ(199)&СИМВОЛ(205)&СИМВОЛ(192)&СИМВОЛ(215)&СИМВОЛ(33)&СИМВОЛ(44)&СИМВОЛ(32)&СИМВОЛ(35)&СИМВОЛ(209)&СИМВОЛ(209)&СИМВОЛ(219)&СИМВОЛ(203)&СИМВОЛ(202)&СИМВОЛ(192)&СИМВОЛ(33)&СИМВОЛ(44)&СИМВОЛ(32)&СИМВОЛ(35)&СИМВОЛ(196)&СИМВОЛ(197)&СИМВОЛ(203)&СИМВОЛ(47)&СИМВОЛ(48)&СИМВОЛ(33)&СИМВОЛ(32)&СИМВОЛ(232)&СИМВОЛ(32)&СИМВОЛ(35)&СИМВОЛ(200)&СИМВОЛ(204)&СИМВОЛ(223)&СИМВОЛ(63)

Код
=СИМВОЛ(196)&СИМВОЛ(224)&СИМВОЛ(32)&СИМВОЛ(239)&СИМВОЛ(240)&СИМВОЛ(229)&СИМВОЛ(225)&СИМВОЛ(243)&СИМВОЛ(228)&СИМВОЛ(229)&СИМВОЛ(242)&СИМВОЛ(32)&СИМВОЛ(241)&СИМВОЛ(32)&СИМВОЛ(242)&СИМВОЛ(238)&СИМВОЛ(225)&СИМВОЛ(238)&СИМВОЛ(233)&СИМВОЛ(32)&СИМВОЛ(208)&СИМВОЛ(253)&СИМВОЛ(237)&СИМВОЛ(228)&СИМВОЛ(238)&СИМВОЛ(236)&СИМВОЛ(224)&СИМВОЛ(233)&СИМВОЛ(231)&СИМВОЛ(33)&СИМВОЛ(32)&СИМВОЛ(200)&СИМВОЛ(236)&СИМВОЛ(229)&СИМВОЛ(237)&СИМВОЛ(229)&СИМВОЛ(236)&СИМВОЛ(32)&СИМВОЛ(202)&СИМВОЛ(238)&СИМВОЛ(237)&СИМВОЛ(242)&СИМВОЛ(240)&СИМВОЛ(238)&СИМВОЛ(235)&СИМВОЛ(224)&СИМВОЛ(44)&СИМВОЛ(32)&СИМВОЛ(192)&СИМВОЛ(235)&СИМВОЛ(252)&СИМВОЛ(242)&СИМВОЛ(224)&СИМВОЛ(32)&СИМВОЛ(232)&СИМВОЛ(32)&СИМВОЛ(241)&СИМВОЛ(226)&СИМВОЛ(255)&СИМВОЛ(242)&СИМВОЛ(238)&СИМВОЛ(227)&СИМВОЛ(238)&СИМВОЛ(32)&СИМВОЛ(196)&СИМВОЛ(229)&СИМВОЛ(235)&СИМВОЛ(224)&СИМВОЛ(46)&СИМВОЛ(32)&СИМВОЛ(221)&СИМВОЛ(241)&СИМВОЛ(234)&СИМВОЛ(229)&СИМВОЛ(233)&СИМВОЛ(239)&СИМВОЛ(33)
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
Программа для редактирования Ribbon - RibbonXMLEditor
 
Да... Давненько я эту полезнейшую программу не запускал, не обновлял...
По сравнению с 7.2, я смотрю, намного удобнее стало.

А по поводу видеоуроков, dolbodub, имхо очень не мешало бы добавить создание раскрывающихся меню и подменю в них.
Да и не плохо бы указать на возможность привязки кода не только в модулях ThisWorkbook и ThisDocument , а ещё и в общих для всех документов приложений Personal и Normal, а также в надстройках (Addon)
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
ДР (ex HB)
 
Цитата
БМВ написал:
хочу поздравить с очередным годиком
Цитата
Jack Famous написал:
Желаю долгих лет с крепким здоровьем
Ребята, спасибо большое за поздравления. Очень приятно, что помните.
К сожалению, подписка на топик у меня почему-то съехала и уведомлений я не получил.
-----------------
Вообще на форумах по Excel и VBA я давно не появлялся, т.к. в последние 3 года по работе начал заниматься проектированием, контролем строительства и эксплуатацией Центров Обработки Данных.
Очень много рутинной работы и, к сожалению, очень мало связанной с любимым "ребусом" - Excel.
Да и на работе сисадмины совсем озверели - всё позапрещали и лишили прав администратора. Поэтому не могу ни появившиеся после одного из обновлений форточек "кракозябры" побороть, ни работу с ActiveХ починить, ни даже CCleaner'ом комп почистить :'(
Так что писать что-нибудь не только некогда, но и мучительно :)
Только иногда заглядываю немного почитать, т.к. в течение рабочего дня нет непрерывных периодов безделья на час-два, необходимых для проработки серьёзного совета или подробного ответа (а кое-как я делать не люблю, сами видите по моим старым постам и макросам).
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
Ведение журнала сделанных в книге изменений, в лог не попадают автоматические изменения
 
Любые изменения в данных книги  при сохранении автоматически фиксируются Excel'ем на листе Журнал, создаваемом при работе в режиме общего доступа.
Естественно, общий доступ "коцает" многие из полезных фенечек Excel'я...
НО! При использовании Журнала все допустимые в общем доступе изменения можно отменять (UnDo) в отличие от изменений, сделанных макросами.
Используя эту встроенную способность Excel я несколько лет назад сделал процедуру. Кажется, выкладывал и здесь, на Планете. Но не нашёл. Зато нашёл топик в Миру.
Посмотрите топик  Ведение журнала сделанных в книге изменений - версия 2 (новый подход к уже поднимавшейся теме)
Изменено: Alex_ST - 29.01.2017 19:30:32
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
Закрыть MsgBox через 5 секунд
 
А комментарии, написанные в процедуре РУССКИМ языком, почитать слабо?
Ведь написано же:
Код
' Arguments : Первые 3 аргумента такие же, как у MsgBox, 4-й - таймаут в секундах.
'             Если 4-й аргумент не задан или <=0, то ожидает ввода пользователя как обычный MsgBox

А Вы как раз 4-й аргумент (выдержку) и не задали. В результате получили стандартный, не закрывающийся по таймауту MsgBox
Надо было для написать так (для 5-секундной выдержки)
Код
MsgBoxEx Format(Time - s, "ss,ms"), , , 5
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
Закрыть MsgBox через 5 секунд
 
Владимир, запустите процедуру из моего предыдущего поста и посмотрите, закроется ли окошко через 5 секунд.
Если нет (уверен в этом на 99%), то прописывайте в отдельный модуль процедуры из ЭТОГО поста и используйте в процедурах MsgBoxEx вместо MsgBox
А если таки-закроется, то вместо
Код
MsgBox Format(Time - s, "ss,ms")
пишите
Код
CreateObject("WScript.Shell").Popup Format(Time - s, "ss,ms"), 5, "Таймаут", 64
для сведения:
Код
   ' Popup(<Text>,<SecondsToWait>,<Title>,<Type>) ' http://www.script-coding.com/WSH/WshShell.html#3.2.
   '   <Type> - необязательный, число. Комбинация флагов, определяет тип кнопок и значка:
   '    0 - кнопка ОК.
   '    1 - кнопки ОК и Отмена.
   '    2 - кнопки Стоп, Повтор, Пропустить.
   '    3 - кнопки Да, Нет, Отмена.
   '    4 - кнопки Да и Нет.
   '    5 - кнопки Повтор и Отмена.
   '    16 - значок Stop.
   '    32 - значок Question.
   '    48 - значок Exclamation.
   '    64 - значок Information.
Изменено: Alex_ST - 27.01.2017 15:24:21
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
Закрыть MsgBox через 5 секунд
 
Андрей VG,
здесь (и не только) уже давно все уяснили, что один и тот же скрипт типа
Код
Sub temporaryMsgBox() 
   CreateObject("WScript.Shell").Popup "Это окно закроется через 5 секунд", 5, "oops", 64
End Sub
в VBA НЕ РАБОТАЕТ, а в .VBS работает.
Вот  Казанский и нашёл выход: в VBA создаёт скрипт VBS, отрабатывает его и "убирает за собой" - удаляет файл со скриптом.
К тому же прелесть кода Казанского в том, что его можно использовать как функцию точно так же, как MsgBox , с подсказками по мере ввода и использованием тех же констант.
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
Закрыть MsgBox через 5 секунд
 
А вообще-то, heso выложил ссылку на великолепную процедуру, созданную Казанский, и выложенную почему-то не здесь, на Планете, а на Киберфоруме
Я её чуть покрутил, навёл красоты, комменты сделал на русском и утащил к себе в копилку. ОТЛИЧНО!
Вот подполированный мной код (может быть, кому-то пригодится)
MsgBoxEx
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
Сравнительная характеристика массивов, коллекций и словарей
 
Цитата
The_Prist написал: Не забывайте отписывать в своих темах...
Похоже, что Дмитрий у нас провидец...
borro заварил кашу и исчез. А мы тут его о чём-то спрашиваем, что-то советуем, дискуссию о высоких материях ведём...
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
Сравнительная характеристика массивов, коллекций и словарей
 
Как-то я никогда особо освобождением памяти не заморачивался, хотя словари люблю и использую часто...
Обычно использую не явное позднее связывание типа
Код
With CreateObject("Scripting.Dictionary"): .CompareMode = vbTextCompare   ' создаем временный словарь
…
End With

Никогда никаких проблем не возникало. Может быть, при таком связывании их просто нет?
Или просто задачи не настолько тяжёлые, чтобы память ощутимо отожрать?
Изменено: Alex_ST - 26.01.2017 16:48:01
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
Сравнительная характеристика массивов, коллекций и словарей
 
Цитата
borro написал:
Артикул1 Наименование1 число1 число2 ... число15
Артикул1 Наименование1 другоечисло1 другоечисло2 ... другоечисло15
Артикул2 Наименование1 число1 число2 ... число15
Артикул2 Наименование2 число1 число2 ... число15
Так что уникальное? Похоже, что Артикул?
Ну и используйте их как ключи к значениям (записям) словаря. А в каждой записи могут лежать как массивы, так и подчинённые словари.
Там по ссылке есть пример использования словаря словарей.
Добавление ключа с пустой записью происходит автоматически при попытке обращения к словарю по отсутствующему ключу.
Единственный минус словарей по сравнению с коллекциями - это отсутствие у метода .Add опциональных параметров [Before | After], которые позволяют достаточно просто производить сортировку записей внутри коллекции.
Но это нужно, имхо, достаточно редко.
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
Сравнительная характеристика массивов, коллекций и словарей
 
ОГРОМНЫМ плюсом словарей является наличие в них методов Items и Keys возвращающих "одним махом" массивы ЗНАЧЕНИЙ и КЛЮЧЕЙ словаря
Да и вообще, у коллекций всего 1 свойство (.Count) и 4 метода (.Add .Item .Remove .Clear), а у словарей 4 свойства (.CompareMode .Count  .Item .Key) и 6 методов (.Add .Exists .Items .Keys .Remove .RemoveAll), что придаёт работе с ними значительно большую гибкость.
По приведённой выше ссылке я выкладывал файл-шпаргалку со свойствами, методами и примерами работы со словарями.
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
Сравнительная характеристика массивов, коллекций и словарей
 
Посмотрите в топике Dictionary - это совсем не сложно!
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 92 След.
Наверх