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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 368 След.
Ошибка при замене имени у неименованной ячейки
 
Цитата
Дмитрий написал:
но как пробежать всю книгу?
Вы не раскрываете задачу полностью. Пробежали. Дальше что? Надо получить выделенный диапазона на каждом листе свой или один для всех, предварительно выделенный на активном? Это разные вещи. Чтобы пройтись по выделению всех листов, можно использовать такой код:
Код
Sub GetAllSheetsSelection()
    Dim ws As Worksheet
    For Each ws In ActiveWorkbook.Worksheets
        ws.Select
        MsgBox Selection.Address
    Next
End Sub
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Постоянно возникает сообщение при открытии книги - об ActiveX.
 
Ну это уже совсем другая тема - данный плеер из элементов формы просто не поддерживает этот формат. Смотрите какие форматы поддерживаются(по сути их должно быть не очень много, ибо плеер такой весьма древний).
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Постоянно возникает сообщение при открытии книги - об ActiveX.
 
без пробела пишите - он лишний, затесался, видимо.
Строковый параметр, значение: 00000004
Изменено: Дмитрий(The_Prist) Щербаков - 3 Июн 2020 13:43:21
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Обновление данных Power Query на защищенной странице, Как обновить запрос PQ на защищенной странице?
 
Цитата
Anton Bachinin написал:
как можно решить данную коллизию?
симбиоз :) Путь юзер вводит нужные данные и жмет кнопку. А кнопка будет снимать защиту с листа, обновлять запрос и ставить защиту обратно. Все.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Проверка синтаксиса email
 
Цитата
lorents написал:
не содержит недопустимых символов
это понятие не точное. В некоторых доменах нижнее подчеркивание запрещено для использования в качестве email(например, Яндекс). Но так-то этот символ не запрщен.
Цитата
lorents написал:
В интернете ничего не нашел над данную тему
очень плохо искали. 100%. Есть шаблоны регулярных выражений, есть описание правил валидации и много чего еще. Я вбил в Яндекс: "проверить корректность email адреса" - куча инфы. А если добавить еще vba - "проверить корректность email адреса vba" - то инфа целенаправленная с решениями именно через VBA(притом в поиске выдает решения и формулами). А Вам как именно надо?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Постоянно возникает сообщение при открытии книги - об ActiveX.
 
Цитата
Красноглазый Пиркаф написал:
а зачем мне плееры удалять
Чтобы проверить, что проблема именно в них. А уже после этого можно будет целенаправленно решать проблему сообщения. Без понимания что именно вызывает проблему решить её невозможно.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Постоянно возникает сообщение при открытии книги - об ActiveX.
 
Ну вот и ответ...На него и ругается. Сделайте копию файла, удалите в нем плееры и проверьте.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Постоянно возникает сообщение при открытии книги - об ActiveX.
 
Такие элементы могут быть не только на листе, но и на формах(UserForm). Поэтому внимательно изучите все формы в проекте VBA и удалите все подозрительное. Как правило такие нерабочие элементы будут отображаться либо без фона, либо на черном фоне.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Вытащить из ячейки текст между разделителями
 
А не проще использовать встроенные в VBA средства? UDF и нет проблем:
Код
Function GetStringBetweenSep(sTxt$, Optional lPos& = 3, Optional sSep$ = "\") As String
'sTxt - текст для поиска подстроки
'lPos - позиция нужного текста в sTxt между разделителями sSep
'sSep - разделитель, по которому разбивать текст sTxt
    Dim asp
    If sTxt = "" Then
        GetStringBetweenSep = vbNullString
        Exit Function
    End If
    asp = Split(sTxt, sSep)
    If UBound(asp) >= lPos - 1 Then
        GetStringBetweenSep = asp(lPos - 1)
    End If
End Function

Вызывать из ячейки так:
=GetStringBetweenSep([@[ИТ-сервис/КС/Сервер]];3)

Что такое функция пользователя(UDF)?

P.S. А название темы все равно в топку. Ваша цель конечная какая? Правильно: вытащить из ячейки текст между разделителями. Вот и название темы...
Изменено: Дмитрий(The_Prist) Щербаков - 3 Июн 2020 10:19:37
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Получить детали из сводной таблицы в массив (показать детали)
 
Цитата
ac1-caesar написал:
хотелось более элегантно достать их
это, как ни странно - самое элегантное. А доставать их из листа исходника, опираясь на выделенное где-то в сводной - тот еще изврат. Вы бы лучше рассказали для чего именно нужно прям вот вырви глаз, но без листа деталей? Чем он мешает, если никто его не увидит в итоге и решение получается самое оптимальное и по скорости и по надежности?
Цитата
Jack Famous написал:
при работе в сводной очень часто помогает ActiveSheet.PivotTables("ИМЯ СВОДНОЙ").ManualUpdate=True
Jack Famous, как это поможет именно в моем примере?
Про Calculate - таки да, надо запоминать. Но суть была именно в примере, чтобы убрать мелькания и т.д. Тупо взял строки по образцу - я не на заказ код писал. Поверьте, в других случаях я делаю уж совсем не так и запоминаю все, что надо запоминать ;)
Если уж пошли по дебрям: то к Вашему подходу вопросов больше :) а если полей в сводной не два, а двадцать? :) И если полей в области строк более одного при этом? Т.е. условий отбора-то более одного? И еще есть область столбцов? И более одного столбца для значений? Предложенный Вами подход очень и очень топорный и поможет прям именно в данном случае. Но что-то подсказывает, что это лишь для примера. В реальности сводная чуть сложнее. Так что...
Изменено: Дмитрий(The_Prist) Щербаков - 2 Июн 2020 17:48:12
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Получить детали из сводной таблицы в массив (показать детали)
 
Господа - вообще тема-то не такая уж и новая. Но собирать в массив, не создавая деталей - та еще мука. Но сделать можно. Но зачем? Если это делать макросом, то проще тупо отобразить детали и забрать в массив полученную таблицу:
Код
Sub PivotDetails()
    Dim pt As PivotTable
    Dim wsSource As Worksheet
    Dim arr

    Application.DisplayAlerts = False
    Application.Calculation = xlCalculationManual
    Application.ScreenUpdating = False
    
    Set pt = ActiveCell.PivotTable
    Set wsSource = ActiveSheet
    If Not pt.EnableDrilldown Then
        pt.EnableDrilldown = True
    End If

    Selection.ShowDetail = True
    arr = ActiveSheet.UsedRange.Value
    
    ActiveSheet.Delete
    wsSource.Activate

    Application.DisplayAlerts = True
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
End Sub
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Удаление (очистка) вложения при использовании CDO
 
вообще-то правильнее все же обнулять именно целевой oCDOMsg, чтобы избежать в дальнейшем разных непоняток с отправками и другими свойствами письма. Каждое письмо должно сначала быть создано, потом отправлено, а потом стерто из памяти через Nothing. Игра с вложениями и свойствами одного и того же письма на целый список адресатов не самый правильный путь на мой взгляд. Или я чего-то не так понял.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Обращение к ячейкам в цикле по листам
 
Предлагаю так: Обращение к ячейкам в цикле по листам
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Отправка НЕСКОЛЬКИХ файлов, используя CDO
 
1. Код цикла по всем файлам папки у Вас реализован неверно. Точнее не до конца - не все перекопировано так, как нужно
Цитата
OlegO написал:
sAttachment вроде бы принимает правильный вид "1.pdf, 2.pdf"
вроде бы самое правильное здесь :) Помимо имени файла(sFiles) нужен и путь к нему: ThisWorkbook.Path & "\" & sFiles
2. Почему нельзя сразу-то их в письмо подгружать? Зачем эти мучения с созданием строки без уверенности, что разделитель выбран верно?
Код
sFiles = Dir(ThisWorkbook.Path & "\" & "*.pdf")
Do While sFiles <> ""
   oCDOMsg.AddAttachment ThisWorkbook.Path & "\" & sFiles
   sFiles = Dir
Loop
Изменено: Дмитрий(The_Prist) Щербаков - 29 Май 2020 12:54:38
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Запрет на отправку писем из VBA
 
На самом деле скорее всего проблему правкой кода не решить, т.к. отправка запрещена на уровне приложения. Если отправлять себе - видимо, сервер, игнорирует такие отправки, т.к. все файлы и сообщения и так есть на этом пк. А при попытке отправить кому-то еще уже вступает в роль политика безопасности.
Мое мнение: надо просто попросить одобрения у руководства на такие действия. Иначе в любом случае получите по шапке, т.к. сервер-то в любом случае все отслеживает...
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
При нажатии на ToggleButton1 все остальные ToggleButtons на форме должны принять значение false кроме ToggleButton1
 
ToggleButton1 = True 'нафига это? Всегда делать его нажатым?
Код
Option Explicit
Dim IsNonEvents as boolean
Private Sub ToggleButton1_Click()
  if ToggleButton1 = false then exit sub 'ничего не делаем, если кнопка была отжата
  if IsNonEvents then exit sub
  Dim x As Control
  
  For Each x In UserForm1.Controls
    If TypeOf x Is msforms.ToggleButton then
     IsNonEvents = True
     if x.Name <> "ToggleButton1" Then x.Value = False
     IsNonEvents = false
    end if
  Next
End Sub
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Конвертировать XLS в XLSX несколько файлов в одной папки
 
Как сменить формат сразу для нескольких файлов Excel
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Обращение к ячейкам в цикле по листам
 
Цитата
Кирилл Дяденко написал:
For Each y In Worksheets("Заполнение реализации ГВС").Range(Cells(1, 1), Cells(b, 1))
вот это фигня. Есть предположение, что и далее по коду есть обращение к просто Cells, а не к ячейкам конкретного листа. Советую ознакомиться внимательно со статьями:
Как обратиться к диапазону из VBA
Select и Activate - зачем нужны и нужны ли?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Не возможно добавить примечание к ячейке на защищенном листе при открытии документа, защита с добавленной группировкой
 
Цитата
ElenaD написал:
установила галочку на "изменение объектов"
теперь запишите это макрорекордером и увидите какой еще параметр надо добавить в метод Protect. Это самый простой и быстрый вариант. Сейчас у Вас разрешено только использовать группировку и изменять ячейки макросом. Ни о каких объектах в коде защиты листа нет упоминаний.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Бекап/Импорт отдельных нескольких листов книги
 
Цитата
OSA913 написал:
так сработало
Вы же вообще на другую строку как на ошибочную показывали и код был другой. Копирование диапазонов против копирования листов целиком...
Ваш код по идее должен был бы так выглядеть:
Код
Application.DisplayAlerts = False
Application.EnableEvents = False
with ThisWorkbook.Sheets(l)
    .Range(.Cells(2, 1), .Cells(j, 197)).ClearContents
end with
With GetObject(i).Sheets(l - 1)
    .Range(.Cells(2, 1), .Cells(k, 197)).Copy ThisWorkbook.Sheets(l).Range("A2")
end with
Application.DisplayAlerts = True
Application.EnableEvents = True
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Как создать письмо "Иванов И.И. от имени Пупкина П.П." VBA
 
Код
.SentOnBehalfOfName = "123@mail.ru"
Изменено: Дмитрий(The_Prist) Щербаков - 18 Май 2020 11:22:33
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Бекап/Импорт отдельных нескольких листов книги
 
Цитата
OSA913 написал:
GetObject(i).Sheets(l - 1).Range(Cells(2, 1), Cells(k, 197)).Copy
перед Cells надо тоже указать полностью объект. Лучше так:
Код
With GetObject(i).Sheets(l - 1)
.Range(.Cells(2, 1), .Cells(k, 197)).Copy
end with
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Как заставить работать ВПР с длинными текстами?
 
А не проще использовать не ВПР вообще тогда? Формулы массива ИНДЕКС(ПОИСКПОЗ, например....
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
В списке combobox'a обрезаются строки по вертикали
 
Цитата
vikttur написал:
Почему - так и не поняли
Тогда чуть проясним: символ № по сути приписан к кириллической кодировке, с которой и так-то не всегда все ладно. И он просто не обработан корректно всеми шрифтами внутри VBA. Отсюда и проблема. Какие-то шрифты полноценно поддерживают это в VBA, какие-то нет.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
При копировании среза, оба среза привязаны к одной и той же таблице и изменения копируются. Как отвязать 1 срез от 2?
 
Цитата
Андрей VG написал:
В примере, который любезно предодставил  PooHkrd , для каждой из таблиц сделан отдельный срез
это ключевое здесь. А в примере, который любезно представил Александр, такого нет. Там сводные связаны одним кэшем и срезы перекопированы и как ни пытайся привязать скопированные срезы только к одной таблице - срез будет влиять и на остальные как таблицы, так и срезы.
И ?ThisWorkbook.SlicerCaches.Count там выдает тоже 1. А если создать еще один срез руками - будет уже два, что логично, т.к. этот срез мы создаем для конкретной сводной и Excel здесь уже иначе себя ведет.
А если посмотреть, то вопрос-то был такой:
Цитата
Александр написал:
Но как можно разорвать связь между срезами если я копирую?
других вариантов отвязать скопированный срез без создания нового руками я лично не нашел :( Хотя я согласен с тем, что проще создать новый срез и всех делов.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
При копировании среза, оба среза привязаны к одной и той же таблице и изменения копируются. Как отвязать 1 срез от 2?
 
Вам не срезы надо отключать, а сводную таблицу о общего кэша отвязывать.
Здесь описывал как это сделать можно: Сделать независимой. Нужны только первые пара абзацев, дальше уже к надстройке относится. Основной посыл для уже созданных таблиц:
Цитата
Если сводная уже создана, то сделать её независимой без танцев с бубном никак не получится. Надо будет копировать сводную в новую книгу, обновить, скопировать обратно.
И тут на сайте тоже где-то было про то, как отвязать сводную от общего кэша. Но сходу не нашел.
Изменено: Дмитрий(The_Prist) Щербаков - 29 Апр 2020 17:17:53
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Открытие Excel'я из Visio
 
Цитата
БМВ написал:
и стандартного события для этого в Visio нет
ну это не конкретизировано самим ТС :) А в качестве основного заголовка темы написано явно про открытие. Все остальное явно не по адресу(да и это-то не совсем), о чем уже писали.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Открытие Excel'я из Visio
 
Цитата
poceluev написал:
открывался соответствующий лист книги Excel?
соответствующий чему? Точке? Если да, то как точка вообще к Excel относится? И как по ней понять какой лист/книгу открывать?
Открыть легко:
Код
On Error Resume Next
Set oEx = Getobject(, "excel.Application")
If oEx Is Nothing Then
    Set oEx = Createobject("excel.application")
    oEx.Visible = True
End If
set wb oEx.Workbooks.Open("путь к нужному файлу excel")
wb.sheets("соответствующий лист").Activate
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Вписать один код макроса в другой
 
А модераторы тут на каждое сообщение/тему и не реагируют и не обязаны(и даже уверен, что физически не смогут) :) Это движок форума блокирует все подозрительные по его мнению сообщения и модератор это может увидеть только если сам зайдет в ту тему или ему дадут об этом знать. Поэтому, к сожалению, придется либо писать им, либо ждать, пока кто-то из них заглянет в ту самую тему и увидит проблему.
Изменено: Дмитрий(The_Prist) Щербаков - 20 Апр 2020 14:19:29
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Макрос не работает при его программном запуске
 
Цитата
kmak написал:
вызове из Макрос1 Макрос2 последний не срабатывает
Видимо элементы не успевают полностью зарегистрироваться. Измените вызов Макроса 2 на такой:
Application.OnTime Now, "Макрос2"
Цитата
kmak написал:
На форме все работает.
Во втором та же история - ActiveX несколько более муторные объекты и не очень хорошо управляемы, особенно в последних версиях и поэтому не рекомендованы к использованию.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 368 След.
Наверх