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

Страницы: 1 2 3 4 5 6 След.
Access и WinAPI
 
Мяв.
Народ, подскажите, почему из Excel код работает, а из Access нет?
Код
Declare Function SHCreateDirectoryEx Lib "shell32" Alias "SHCreateDirectoryExA" _
                                     (ByVal hwnd As Long, ByVal pszPath As String, _
                                      ByVal psa As Any) As Long
 
Sub CreateFolderWithSubfolders(ByVal ПутьСоздаваемойПапки$)
    ' функция получает в качестве параметра путь к папке
    ' если такой папки ещё нет - она создаётся
    ' может создаваться сразу несколько подпапок
    If Len(Dir(ПутьСоздаваемойПапки$, vbDirectory)) = 0 Then    ' если папка отсутствует
        SHCreateDirectoryEx Application.hwnd, ПутьСоздаваемойПапки$, ByVal 0&    ' создаём путь
    End If
End Sub
Изменено: RAN - 19 Сен 2019 11:07:38
Подсчет по трем критериям, если третий критерий массив.
 
Мяв!
Нужно подсчитать количество записей, попадающих в диапазон дат по исполнителю.
Но есть один нюанс - этих исполнителей много.
Нашел решение через БСЧЁТ(), но она работает только в пределах листа, а у меня таблица и отчет на разных.
Как выкрутится?
Как формулой отследить, какая возникла ошибка?
 
Мяв.
Как формулой отследить, какая возникла ошибка?
аналогично
Код
?ActiveCell.Value
Error 2029
Error 2015
Открыт ли файл в Excel?
 
Мяв!
Возник вопрос, как определить, открыт ли файл xlsx в Excel, или открыт чем-то другим?
Пока нашли два костыля
1. Не Excel'ы не знают формулу ЕСЛИОШИБКА()
=ЕСЛИ(ЕОШ(ЕСЛИОШИБКА(2/0;0));"Это не MS Excel";"OK")
2. Не Excel'ы на защищеном листе не отображают примечания.
А есть ли какой более правильный способ?

PS выяснилось, что вариант 2 не срабатывает на телефоне
Изменено: RAN - 25 Май 2019 19:03:23
Ошибка есть, а ошибки нет
 
Мяв.
Стал глючить макрос.
Фрагмент с проблемой
               
Код
If Len(cl.Value) Then
                    If .Names(cl.Value).RefersTo = wbDonor.Names(cl.Value).RefersTo Then
                        If Err Then
                        Stop
                        aa = Err.Number
                        Debug.Print Err.Number

Условие If Err Then выполняется, однако номер ошибки остается Empty
При замене условия на If Err.Number <> 0 Then картина та же. Лист Immadiate девственно чист.
Как такое вообще быть может?
RegExp. Pattern из массива. Возможные ограничения
 
Мяв!
Планирую использовать макрос типа
Код
Sub test()
    Dim ar, s, t
    Dim cl, m, mm
    
    ar = [h1:h4].Value
    s = Join(Application.Transpose(ar), "|")
    
    Dim RExp As Object
    Set RExp = CreateObject("VBScript.RegExp")
    RExp.Global = True: RExp.IgnoreCase = True
    
    RExp.Pattern = "(" & s & ")" & ",? ?"
    
    For Each cl In [a1:a5]
        If RExp.test(cl.Value) Then
            Set m = RExp.Execute(cl)
            mm = m(0).SubMatches(0)
            t = RExp.Replace(cl.Value, "")
            cl.Next = mm
            cl.Next.Next = t
        End If
    Next
End Sub

Есть ли какие подводные камни с длиной строки, или количествам элементов "или" (элементов массива)?
Ограничения Application.Transpose не в счет.
Если нет, напишите, буду использовать, если есть, напишите, буду думать.

Пока планируемый размер массива ~ 300 элементов (слов)

Альтернативные решения не интересуют.
ЧебурГена
 
Представляю игрушку под кодовым названием Чебургена.
Для игры архивы с картинками распаковать в папку с файлом
Изменено: RAN - 26 Фев 2019 19:40:59
Вставить список в комбобокс
 
Мяв!
Нужно в комбо (OLEObject) вставить список "1,2,3" без использования диапазона листа (и макросов).
Я сильно туплю, или это сделать нельзя?
Оператор AND и преобразование типа, 10 AND 4 =0??
 
Мяв
Практически никогда не использую AND, а тут вдруг случилось.
И неожиданно всплыло, что строка
Код
Len(Me.TextBox5) And Len(Me.ComboBox1)

работает совершенно не так, как от нее ожидается.
Результаты теста такой конструкции в файле.
Вопрос - как это работает?
With или не With?, Почему возникает ошибка?
 
Мяв.
Имеем 2 кода вызова календаря.
На мой взгляд, коды идентичны, однако при закрытии календаря крестом первый код выдает ошибку, а второй - нет.
В чем причина такого поведения?
Код
Sub test1()
    Dim d#
    With slancalendar
        .StartUpPosition = 1
        .Show
        d = .Value
    End With
    Unload slancalendar
    MsgBox d
End Sub
Sub test2()
    Dim d#
    With slancalendar
        .StartUpPosition = 1
        .Show
    End With
    d = slancalendar.Value
    Unload slancalendar
    MsgBox d
End Sub
Изменено: RAN - 27 Янв 2019 12:06:37
Как размножаются ёжики (именованные диапазоны)?
 
Мяв.
С тем, что к диапазону уровня книги добавляется диапазон уровня листа, на котором он расположен, встречаться доводилось.
Но что могло привести к такому демографическому взрыву?
Поиск позиции даты методом Evaluate
 
Мяв!
Имеем 2 формулы
Код
=ПОИСКПОЗ(D1;A:A)
=ПОИСКПОЗ(ДАТАЗНАЧ("05.01.2019");A:A)

на листе работают обе
Пытаюсь втиснуть в макрос - первая работает, а вторая нет.
В чем проблема?
Крутил уже всяко.
Код
Sub qq()
    x = Evaluate("MATCH(D1,A:A)")
    xx = Evaluate("MATCH(DATEVALUE(""05.01.2019""),A:A)")
    Debug.Print x
    Debug.Print xx
End Sub
Для чего у CommandButton свойство OnAction?
 
Мяв!
Ковыряясь с кнопками, обнаружил, что CommandButton имеет свойство OnAction.
Правда добраться до него не удается.
Вопрос - для чего это свойство у данного элемента?
Application.Trim и 256 символов в ячейке.
 
Мяв!
Давненько столкнулся с особенностью использования Application.Trim при обработке массива. А сегодня понадобилось применить к ячейке. И я с удивлением обнаружил, что при работе с массивом и работе с ячейкой поведение Application.Trim диаметрально противоположное.
С чем такое связано, и как это объяснить?
Код
Sub Test_A_Trim()
' в A1 и A2 текст 256 символов min
On Error Resume Next
x1 = Application.Trim(Range("a1")) ' Error 2015
x2 = Application.Trim(Range("a1").Value) ' работает

ar1 = Application.Trim(Range("a1:a2")) ' работает
ar2 = Application.Trim(Range("a1:a2").Value) ' empty

y = Len(ar1(1, 1))
End Sub
Показать в папке (открыть папку с выделенным файлом)
 
Мяв.
Для "открыть расположение файла" нашел 3 способа
Код
Sub Макрос1()
    Set oShell = CreateObject("Wscript.Shell")
    oShell.Run ("""" & ThisWorkbook.Path & """")
    Set objShellApp = CreateObject("Shell.Application")
    objShellApp.Explore ("" & ThisWorkbook.Path & "")
    objShellApp.Open ("" & ThisWorkbook.Path & "")
End Sub

А как выполнить "показать в папке"? Т.е. открыть папку с выделенным файлом?

PS И, ежели можно, чем отличается "Wscript.Shell" и "Shell.Application" (в пределах данной задачи), и что предпочтительней?
Изменено: RAN - 17 Июл 2018 23:04:20
Скрытые "Имена" со странными именами.
 
Мяв!
Совершенно случайно в книге были обнаружены скрытые имена вида
Z_64DF9718_D801_4FDB_9C65_402B3701E3FD_.wvu.Rows
Z_64DF9718_D801_4FDB_9C65_402B3701E3FD_.wvu.Cols
Откуда они появились, и для чего служат?
В формулах ссылок на них нет.
CheckBoxes.Visible работает через раз
 
Мяв!
Очередная засада
Попытался удалить цикл из кода
Закомментированный код работает, а строка
Код
.CheckBoxes.Visible = True

периодически выдает ошибку. Если-бы каждый раз, то можно валить на то, что написано криво...
А так, даже не представляю, на что грешить...
В чем может быть проблема?
Проблема с работой макроса в Excel 2016(32). Workbooks.Open и EnableEvents
 
Мяв!
Возникла проблема с работой макроса в Excel 2016(32).
Код был создан и отлажен в Excel 2010(32).
Для возможности считывания данных вне зависимости от состояния файла (открыт/нет||на каком компе), файл открывается в новом экземпляре Excel в режиме ReadOnly.
Проблема 1
Цитата
excel залипает на этой строке: Set wbOpen = .Workbooks.Open(kas, , True)
После чего приходится его пристреливать
Проблема 2
После пристреливания Excel, отключается обработка событий не только во втором экземпляре, но и в первом. Более того, включить ее перезагрузкой Excel не удается, только выполнив Application.EnableEvents = True. Т.е при повторном запуске Excel Workbook_Open не срабатывает.
Проблемный фрагмент кода прилагаю.
Куда можно/нужно поглядеть?

Код
Private Sub Workbook_Open()
    Sheets("ОТЧЕТ").Protect Password:="123", DrawingObjects:=True, Contents:=True, Scenarios:=True _
                          , AllowInsertingRows:=True, AllowDeletingRows:=True, AllowSorting:=True, _
                            AllowFiltering:=True, UserInterfaceOnly:=True
    meUpdate
End Sub
Sub meUpdate()
'..........
    Dim wbOpen As Workbook
    Dim xlApp As Application

    With Me.Sheets("ОТЧЕТ")
        '.......................
        kas = Me.Sheets("ДАНО").ListObjects("tblKassa").DataBodyRange(1).Value
        Set xlApp = New Excel.Application.EnableEvents = False
        With xlApp
            .EnableEvents = False
            '                        .Visible = True
            Set wbOpen = .Workbooks.Open(kas, , True)

            With wbOpen.Sheets("КАССА")
                '.......................
            End With
        End Sub

PS Если важно
Тестировалось на локальном компе, фактически файлы на сервере.
суть кода, обозначенного  "............" - синхронизация файлов сотрудников и босса.
СЧЕТЕСЛИ с учетом "*" - ошибка
 
Мяв.
Стал удалять полные дубли из файла. Написал формулу, и заплакал горькими слезами!
Кто-нибудь может объяснить, откуда в приложенном файле берется 7?

PS Отбой тревоги, понял.
И по кой к номеру телефона звездочку прислюнявили???
Изменено: RAN - 18 Фев 2018 13:38:09
Зависимый выпадающий список без ссылки на лист
 
Мяв.
В примере в А3 имеется зависимый выпадающий список.
Можно-ли заставить его работать без ссылки на лист?
При открытии файла Excel ругается на FORMAT, не всегда, через 2-3 запуска
 
Мяв!
Есть строка вида
Код
    Application.StatusBar = "Программа! " & Sheets("СТАРТ").Range("B27") & " xxx:" & Sheets("СТАРТ").Range("C10") & "    Сумма: " & Format(Sheets("СМЕТА").Range("S5"), "# ### ##0") & " руб."

Код расположен в модуле книги, и выполняется при открытии файла.
Через 2-3 запуска (иногда чаще, иногда реже) VBA выделяет Format, грязно ругается по аглицки, и впадает в ступор.
Missing не обнаружено.
Строка присутствует в Private Sub Workbook_SheetCalculate и Private Sub Workbook_Open
Подскажите, где покопаться?
Как открыть файл, отключив макросы?
 
Мяв!
Имеем файл xls с подключенной через referens надстройкой xla.
При попытке открыть файл, получаю сообщение, что файл заблокирован средствами проверки Ofis.
Для того, чтобы открыть файл, приходится запускать его из надежного расположения. Но тогда он запускается с включенными макросами.
Как выйти из положения?
Ошибка? свойства End(xlUp), или что в ячейках файла
 
Мяв!
Получил файл выгрузки, в котором свойство End(xlUp) не правильно находит последнюю ячейку.
Это не один сломанный файл, а все файлы, полученные данной выгрузкой.
Воссоздать подобное вручную не получается.
В XML строка выглядит так
<row r="17" spans="1:2" x14ac:dyDescent="0.2"><c r="A17" s="1" t="s"><v>0</v></c><c r="B17" s="1" t="s"><v>0</v></c></row>
Вопрос, что-же в этих ячейках, и как оно получается?
И тут тоже
Изменено: RAN - 18 Июн 2017 11:09:07
Application.OnTime (Run). Запуск макроса в форме.
 
Мяв!
Началось все с Application.OnTime, но выяснилось, что и Application.Run ведет себя так-же, с той небольшой разницей, что OnTime молчит, а Run ругается на отсутствие макроса. Судя по тому, что код не работает только в модуле формы (в книге и на листе все в порядке), проблема в определении места расположения макроса. В чем причина, и можно-ли как-то прописать запуск?
Через доп. код в стандартном модуле работает, вариант не интересен
Код
Const TimePause = 20 * (1 / 86400 / 10)
Private Sub qq()
    MsgBox "QQ"
End Sub
Private Sub TextBox1_Change()
    Application.Run "UserForm1.qq"
    '    Application.OnTime Now + TimePause, "UserForm1.qq"
End Sub

excelworld
Изменено: RAN - 15 Апр 2017 11:44:42
Excel 2013 и файл из интернета.
 
Мяв!
Excel 2013 при попытке открыть файл, скачанный из интернета, кричит, что нет места на диске, или мало памяти...
Вываливается окошко с этим сообшением, и одной кнопкой, при нажатии на кою Excel с мерзким писком закрывается.
При этом безразлично, был файл сохранен на диск, или нет.
Поглядел настройки безопасности - все (почти), как у меня в 2010.
Методом научного тыка выяснилось, что для увеличения места на диске или добавления памяти нужно войти в свойства файла, и там его разблокировать.
Это, конечно, вариант, но не вариант.
Подскажите, где покопать?
Код вроде есть, но его вроде нет
 
Уже не в первый раз попадается такое. Вставлен код. Но в окне кода нет ничего, кроме полосы прокрутки. Когда, и почему такое приключается?

Скрин отсюда
http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=1&TID=85782&TITLE_SEO=85782-zapis-giperssylki-na-list-excel-v-yacheyku
Изменено: RAN - 17 Дек 2016 22:34:33
Создать массив массивов
 
Мяв!
Нужно создать массив, каждый элемент которого является массивом определенной (не факт, что одинаковой) размерности.
Решение, в принципе, нашел, но можно ли обойтись без танцев с бубнами в виде считывания данных с листа?
Код
Sub www()
    Dim a(1 To 5)
    With Worksheets.Add(after:=Sheets(Sheets.Count))
        For i = 1 To 5
            a(i) = Range(Cells(1, 1), Cells(i + 4, i + 6)).Value
        Next
        .Delete
    End With
End Sub
Вычислить формулу в макросе
 
Мяв.
Сочинил формулу, которую нужно вставлять на лист.
=ИНДЕКС(Limit;ПОИСКПОЗ($B$36;Limit[ВИД];0);ПОИСКПОЗ($B$35;Limit[#Заголовки];0))
Это-же значение нужно отображать на форме. Попытался проделать это методом Evaluate, но где-то затык.
Направьте на путь истинный.
Фильтр ломает работу копи-паст в умной таблице
 
Мяв!
Вчера подкинули файлик с вопросом, почему в таблице не работает копи-паст.
Т.е. при попытке вставки в таблицу значения, вставляется содержимое ячейки ниже. При этом абсолютно безразлично, что, и откуда скопировано.
Вопрос поставил меня в тупик.
Сегодня, методом ислючений, нашел виновника. Им оказался фильтр в ячейке G19. При снятом фильтре все начинает работать.
Очень хотелось бы услышать причину такого поведения файла.
Что находит DIR
 
Всем Мяв!
Имеем папку, в которой находятся файл с макросом, и 2 вложенные папки
Запускаем макрос
Код
Sub q()
Dim sFolderStart$, sFolder$, sFile$
    sFolderStart = ThisWorkbook.Path & Application.PathSeparator
    sFolder = Dir(sFolderStart, vbDirectory)
    Do
    Debug.Print sFolder
        sFolder = Dir(, vbDirectory)
        DoEvents
    Loop Until sFolder = ""
End Sub

Получаем ответ
.
..
Г
свод.xlsm
Ф
Где он берет два первых значения?
Я бы еще понял отсутствующий ответ ~$свод.xlsm, но "." и ".."?
Страницы: 1 2 3 4 5 6 След.
Наверх