Вопросы с тегами [excel-vba]

1

голосов
3

ответ
15.9k

Просмотры

Как изменить расширение файла в VBA

Я чувствую, как это должно быть простым, но я не могу найти ответ. Я спасаю кучу CSV файлов с помощью VBA и хотел бы изменить все расширения файлов с расширением .csv в .txt импортировать в другую программу (Revit), которая распознает только расширение .txt. Это возможно? Вот команда, я использую. Для I = 1 WS_Count пути = Curdir () + "\" + ActiveWorkbook.Worksheets (I) .name Sheets (ActiveWorkbook.Worksheets (I) .Name) .Select ActiveWorkbook.SaveAs Имя файла: = путь, FileFormat: = xlCSV, CreateBackup: = False Имя пути As ( "путь" + ".txt") Next I Спасибо!
user1707675
1

голосов
2

ответ
4k

Просмотры

Как изменить RefersTo для именованного диапазона?

У меня есть класс ValidationChanger с методом changeNamedRangeAddress, который должен изменить адрес RefersTo для именованного диапазона. Тем не менее, мой код неожиданно оберточной новый адрес в двойных кавычках. Определение класса для ValidationChanger здесь: «ValidationChanger Sub changeNamedRangeAddress (Б.К. В учебном пособии, rangeName As String, newAddress As String) bk.Names (rangeName) .RefersTo = newAddress End Sub Я проверить его на диапазон имени TestRange, который ссылается на адрес в лист Инструкции: Инструкции $ A $ 133: $ A $ 138. Мой тест должен изменить адрес в инструкции $ A $ 133: $ A $ 139 со следующим: Sub testValidationChanger () Dim ВХ As New ValidationChanger Dim Б.К. As Workbook Набор Ьк = Workbooks ( "test.xlsm") Debug.Print bk.Names ( "TestRange"). RefersTo vc.changeNamedRangeAddress Б.К., "TestRange", "
sigil
1

голосов
0

ответ
326

Просмотры

Проблема с отправкой левой кнопкой мыши

У меня есть ряд кликов и движений курсора у меня есть в макросе. Все отлично работает до конца. Все клики работают до последнего клика. Я пытался поставить различные количества Спит между щелчками и до щелчка. Что странно, что, когда я нажимаю на реальные, это работает! ааа Что же нечетное, если я нажимаю ввести это работает BUTTTT! SendKeys "{ENTER}" не нажмет кнопку Это мой код: Public DECLARE PtrSafe Функция SetCursorPos Lib "user32" (ByVal х As Long, ByVal Y As Long) Как LongPtr Public Declare PtrSafe Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal ой As Long, ByVal ау As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long) «Объявляет событие мыши Public Const MOUSEEVENTF_LEFTDOWN = & H2 Public Const MOUSEEVENTF_LEFTUP = &
Justin Captain Wypij
1

голосов
3

ответ
541

Просмотры

Excel VBA ByVal Target As Range Does not update Target Worksheet when excuting from a function cell

У меня возникли проблемы с копированием значения из ячейки, которая использует функцию, чтобы получить его значение из другой ячейки. Вставить значение в A1, A3 = A1 и когда-либо значение A3 изменяет изменения должны автоматически передавать в колонке H. Проблемы, я имею что если я введите значение в A1, то A3 обновляется, но значения не передаются через , если я введите значение в A3, то столбец Н делает обновление. Private Sub Worksheet_Change (ByVal Target As Range) Если Target.Address = Range ( "A3"). Адрес Then 'Получить последнюю строку на нашем целевом листе (с использованием Лист2, Col А вот) ... Тусклый intLastRow As Long intLastRow = Лист1 .Cells (Sheet2.Rows.Count, "H"). End (xlUp) .Row 'Добавить наше значение в следующей строке ... Sheet1.Cells (intLastRow + 1, "H") = Target. Значение End If End Sub Смотрите изображение Я также попытался следующий код. Private Sub Worksheet_Change (ByVal Target As Range) Private Sub Worksheet_SelectionChange (ByVal Target As Range) Private Sub Worksheet_Change (ByVal Target As Range) Ни один из вышеперечисленных не кажется, чтобы вызвать события изменения. Пожалуйста, я не могу использовать значение A1 для изменения Value он пришел от изменения значения A3. Я даже думал о запуске копирования и вставки макроса Trigger A3. Но действительно как код изменения значения для работы я могу получить значение изменений для работы с A3. Заранее спасибо. Пожалуйста, я не могу использовать значение A1 для изменения Value он пришел от изменения значения A3. Я даже думал о запуске копирования и вставки макроса Trigger A3. Но действительно как код изменения значения для работы я могу получить значение изменений для работы с A3. Заранее спасибо. Пожалуйста, я не могу использовать значение A1 для изменения Value он пришел от изменения значения A3. Я даже думал о запуске копирования и вставки макроса Trigger A3. Но действительно как код изменения значения для работы я могу получить значение изменений для работы с A3. Заранее спасибо.
Kenneth O'Donnell
1

голосов
0

ответ
54

Просмотры

Сочетание Vba фильтров

Кто-нибудь знает, как объединить эти две строки, так что, когда я запускаю строки кода, которые содержат апельсины не появляются. На данный момент, только первый фильтр работает. Так я получаю все яблоки, а второй фильтр не делает. Заранее спасибо! ActiveSheet.Range ( "B4", Range ( "BT4") End (xlDown).) Автофильтр поле:. = 24, факторам1: = "Яблоки" ActiveSheet.Range ( "B4", Range ( "BT4") End (. . xlDown)) Автофильтр поле: = 20, факторам1: = «Апельсины», оператор: = xlAnd Edit: решение - то, что мне нужно сделать, чтобы поставить «*» вокруг апельсинов, потому что я хотел, чтобы отфильтровать все, что содержало слово «Апельсины». С ActiveSheet .AutoFilterMode = False .Range ( "B4", Range ( "BT4"). End (xlDown)). Автофильтр .Range ( "B4", Range ( "BT4").
Gandalfrandalf
1

голосов
1

ответ
822

Просмотры

Получить адрес измененной ячейки

Я пытаюсь вызвать макрос (в зависимости от адреса ячейки) всякий раз, когда какой-либо DDE связаны значение ячейки изменяется. Я попытался Workbook.SetLinkOnData и Worksheet_Calculate события (с фиктивной формулой, чтобы вызвать событие), но проблема в том, что ни один из них не возвращает адрес обновленной ячейки. Так есть ли способ, чтобы получить адрес обновленной ячейки, чтобы использовать его с моим макро? Это мой макрос Public Sub UpdateCell (ByVal strTargetAddress As String) «Некоторый код End Sub Спасибо и заранее.
user3286479
1

голосов
0

ответ
68

Просмотры

Как пропустить конкретный текст ячейки в Excel VBA

Когда я запускаю ниже код, как я могу пропустить определенную текстовую ячейку от слияния. Оригинал S.No. данные Часы Номер 01 02 03 04 05 06 1 099566 WP р ППС 2 282420 PPPWPP 3 623738 PPWLPP 4 406290 PPWPPP 5 792585 PPPPP ш 6 097608 РРРР ш P после того, как код, выполняемый S.No. Часы Номер 01 02 03 04 05 06 1 099566 WP р ППС 2 282420 PPPWPP 3 623738 Р пл пл пл ПП 4 ПП 406290 кл Clp ПП 5 792585 PPPPP ш 6 097608 РРРР ж PI потребность ш текста ячейки является постоянной или пропуском при выполнении коды ,
1

голосов
0

ответ
39

Просмотры

Открытие файла TIFF из Excel приводит к потере клеток редактирования функциональности

У меня есть таблица, с разными людьми с использованием копий на различных ПК. Существует макрос запускается Worksheet_Selection_Change, который открывает файл изображения. На двух из ПК, при открытии рабочей книги, пользователь не может изменить ячейку без двойного щелчка на нем. Кроме того, событие Selection_Change не запускается, если дважды не нажата. В опции «Разрешить редактирование непосредственно в клетках» проверяется. На моем компьютере, это работает отлично, это означает, что я могу редактировать клетки. Мы испробовали все обходные пути, предлагаемые здесь: https://social.technet.microsoft.com/Forums/ie/en-US/b3f38d61-698a-4117-84a7-e73e3e209c25/excel-2013-unable-to-type-in- ? клетки форум = officeitpro и здесь: https://www.mrexcel.com/forum/excel-questions/345218-cannot-enter-text-cell-unless-double-click.html Некоторые из этих работ, пока изображение было открыт, Затем он вернулся не позволяет редактировать, и нам пришлось перезагрузить книгу. Это может быть что-то в макросе причиняло это произошло, за исключением того, я тогда стерт весь код, сделал гиперссылка на изображение (все макрос сделал открытые изображения), и будет происходить подобное поведение. Вы можете редактировать клетки, пока вы не открыли изображение (используя гиперссылка на этот раз), и тогда вы не могли редактировать ячейки. Кроме того, как я сказал на моем компьютере это не происходит вообще, и когда мы проверили, точно такую ​​же версию Windows, точно такой же версия Excel (14.0.7190.5000). Является ли это просто случайная ошибка в Excel? Я пропускаю что-то очевидное? Это делает 0 смысла для меня, почему это будет происходить на некоторых ПК, а не другие. Кто-нибудь знает, как я могу решить эту проблему? Вот что я хочу, чтобы произойти: Пользователь открывает таблицу. Они могут редактировать клетки. Пользователь либо: A) щелкает гиперссылку, направленную на файл изображения, который затем открывает на своем компьютере. или B) щелкает ячейку в электронной таблице, которая вызывает следующий код для запуска: Private Sub Worksheet_SelectionChange (ByVal Target As Range) Если Target.Cells.Count = 1 Тогда Если Target.Column = 1 Тогда Dim Shex как объект Dim tgtFile As Строка дим имя_файла As String = имя_файла Клетки (Target.Row, Target.Column) .Value & ".tif" Set Shex = CreateObject ( "Shell.Application") tgtFile = ThisWorkbook.Path & "\" & FileName Shex.Open ( tgtFile) End If End If End Sub Затем после того, как а или в, завершена, и пользователь открыл файл изображения, она может вернуться в таблицу, и по-прежнему может редактировать клетки. Что на самом деле происходит это пользователь завершает А или В, а затем вернуться в таблицу, а теперь вдруг не может редактировать клетки. Это происходит только на некоторых компьютерах, а не другие, и все компьютеры находятся в одной и той же версии Windows, и Excel. Кроме того, копия таблицы можно найти здесь: http://batesplus.com/temp/example.xlsm Как сделать так, чтобы пользователь мог открыть изображение, а затем вернуться в таблицу, и по-прежнему редактирование ячеек? Спасибо
1

голосов
1

ответ
87

Просмотры

VBA электронной почте ответ - текст не добавляет

Я сочинительство макрос, который находит по электронной почте и ответы на него. Проблема заключается в том, что текст, который я хочу ответить не добавляет. Не могли бы вы сказать мне, что я делаю неправильно? Sub Test () Dim olApp как объект Dim olNs как объект Dim Fldr как объект Dim I As Long Set olApp = CreateObject ( "Outlook.Application") Set olNs = olApp.GetNamespace ( "MAPI"). GetDefaultFolder (olFolderInbox) .Folders ( "Тест") я = 1 Для каждого olMail В olNs.Items Если InStr (olMail.Subject, "kanapka") 0 Тогда С olMail.ReplyAll .CC = "хуг @ хуг" .Body = "Dear All," _ & vbCrLf и "аааааа" «эти две линии должны добавить olMail.Reply.Display End С I = I + 1 End If Next End Sub olMail
Tomek
1

голосов
4

ответ
117

Просмотры

Скопируйте Конкретные значения в столбце

Мне нужна помощь VBA. Я хочу, чтобы скопировать значения в столбце. Обращение к картинке, я хочу, чтобы начать копирование, если значение «Dept код / ​​Отрасли: 144», потому что это единственное значение последовательное и остановить копирование, пока значение ячейки не является «Total». Пожалуйста помоги!!!! Я не могу использовать диапазон для копирования, поскольку те диапазоны не могут быть последовательны в другой книге. Sub СкопироватьКолонки () Для я = 1 К 100 Если левый (Cells (я, "A") Значение, 21.) = ( "Dept код / ​​Отрасль: 144"). Затем клетки (я, "A") Копировать Пункт назначения: = Range ( "C1") End If Next End Sub
dannylee
1

голосов
1

ответ
48

Просмотры

Как создать простую страницу помощи для VBA Excel надстройки

Я создал небольшую надстройку для моего клиента. Он добавляет 2 кнопки на панели инструментов и работает нормально. Теперь я хотел бы добавить третью кнопку, чтобы отобразить номер версии и небольшой текст справки (15 строк). Интересно, что это легкий способ сделать это. Опции я могу думать: Insert (копия) листа с помощью & версии в текущей книге (эффективный и простой, чтобы сделать, но немного грубо и навязчиво) Создание формы VBA с текстом справки в элементе управления этикетки, и кнопка OK (очень хороший, но содержание этикетки не может быть отформатирована AFAIK) написать информацию на локальный HTML-файл и открыть, что один (возможно, более универсальный?) Любой (другое) предложение? Примечание: У меня нет прав администратора на моем компьютере, так что решения, связанные с дополнительным программным обеспечением исключены.
Patrick Honorez
1

голосов
1

ответ
224

Просмотры

Vba code getting error “select method of range class failed”

В приведенном ниже коде, я получаю сообщение об ошибке «Выберите метод Range класса Failed» на линии, указанной. Я пытаюсь скопировать некоторые фиксированные диапазоны от рабочего листа А Workbook XY в рабочий лист А всех открытых книг. Пожалуйста, помогите мне с вопросами. Кроме того, предлагают более или оптимизированный способ сделать то же самое. Заранее спасибо. Sub Macro1 () Dim WBS Как Workbooks Dim As Workbook Всемирный банк Dim ws11111 As Worksheet Set WBS = Application.Workbooks Для каждого ВБ в WBS Установите ws11111 = wb.Worksheets ( "A") '' ОШИБКА изломов на следующей строке: wb.Worksheets ( "А") Строки (.. "1: 1") Выберите '' ОШИБКА: "Выберите метод Range Class Failed" Selection.Insert сдвиг: = xlDown, CopyOrigin: = xlFormatFromLeftOrAbove Selection.Insert сдвига: = xlDown, CopyOrigin:
yashika vaish
1

голосов
1

ответ
203

Просмотры

Excel VBA для отправки по электронной почте напоминание каждые 28 дней с даты

У меня есть следующий код, который работает уже, но я предполагаю, что это гораздо лучше, чем иметь много, если заявления происходят в 28 дней. Может кто-то пожалуйста, покажите мне, как сказать, каждые 28 дней отправить электронное письмо на основе даты создания? Благодарю вас! Sub Current28 () '' ' 'Dim ответ As VbMsgBoxResult' Ответ = MsgBox ( "Вы уверены, что хотите работать?", VbYesNo, "Выполнить макрос")' Если ответа = vbYes Тогда Dim I As Integer, Mail_Object, EMAIL_SUBJECT, о As Variant, Л.Р. As Long = Lr клеток (Rows.Count, "A"). End (xlUp) .Row Dim создан как 'Dim позиции As String' строка Dim ветвь As String Set Mail_Object = CreateObject ( "Outlook.Application" ) Для я = 2 Для Л.Р. С Mail_Object.CreateItem (о) .Subject = "Текущие Продавец ухода за 28 дней" .Чтобы = "[email protected]".
Paul C
1

голосов
1

ответ
33

Просмотры

Добавить или среднее удельное значение ячейки в разных рабочих листах, если они существуют

У меня есть книги, которая создает до 3 (с использованием макро) рабочих листов, и мне нужно усреднить значение конкретной ячейки в каждой из создаваемых листов. Проблема заключается в том, что 2-й и / или 3-й листы не могут быть созданы на всех, но мне еще нужно значение существующих рабочих листов я попробовал Average рабочих листов и ячеек, но Excel требует файл со значением «не -existent»клетки. Рабочие листы называются, например, май - May1 (если он создан) - May2 (если он создан) и расположение элемента, который будет использоваться значение I7 = СРЗНАЧ (май I7, May1 I7, May2 I7!!) - Работает, когда существуют все рабочие листы, но не тогда, когда они отсутствуют
RHC002
1

голосов
0

ответ
174

Просмотры

Копирование и вставка VBA, когда ячейка содержит определенный текст

У меня есть VBA написано, но я хочу, чтобы скопировать, если ячейки в столбце содержат слово новое. Например; У меня есть новые, Создать- удалить, New-добавить, новый доступный и так далее. Так что я действительно хочу, чтобы искать слово нового независимо от того, что после того, как и копии. Это то, что я до сих пор, но это только захватывая любое значение, я сказать ему. Private Sub CommandButton2_Click () а = (листы "Combined2"). Клетки (Rows.Count, 1) .END (xlUp) .Row Для I = 2 А, если Таблицы ( "Combined2"). Cells (I, 1). Значение = "Новое удаление" Тогда Worksheets ( "Combined2"). Rows (я) .Copy Worksheets ( "Запуск данных"). Активизировать б = Worksheets ( "Запуск данных"). Cells (Rows.Count, 1) .END ( xlUp) .Row (листы "Запуск данных"). Клетки (Ь + 1, 1) .Select ActiveSheet.Paste листы ( "Combined2"). Активировать End If Next Application.
Ms Account
1

голосов
2

ответ
40

Просмотры

Добавить формулу с переменной в определенной ячейке с помощью VBA

Я пытаюсь добавить формулу к определенной ячейке с помощью VBA. Формула должна содержать переменную, которую я вычисленное перед тем в сценарии VBA. Формула выглядит следующим образом: ActiveCell.FormulaR1C1 = "= ЕСЛИОШИБКА (ВПР (RC [-4], tbl_LTCSREP, rngCell_NoUsed.Column, FALSE)," "НЕТ НТУС доступное значение" ")" переменная rngCell.Column является одним Я рассчитал до этого. Когда я делаю это так, VBA просто вставляет обычный текст в ячейке и сам Excel не может использовать значение за переменные и ВПР возвращает ошибку. Спасибо заранее за вашу поддержку.
philipph
1

голосов
3

ответ
292

Просмотры

VBA Excel Copy Column to other worksheet with offset

Я нашел этот кусок кода, который делает 99% того, что мне нужно. Описание процедуры: В моей книге есть один SQL лист с именованными столбцами, на основе заголовка столбца, я должен перебрать все остальные листы (переменный от 10 до 50 листов) в книге, где заголовок столбца имеет одинаковое имя, все столбцы из источника SQL листа копируется в целевых листы. В целевых листах заголовок колонки состоит из 4-х строк, в источнике заголовок столбца имеет только один ряд. Проблема-1: Как скопировать столбец без заголовка и вставьте содержимое со смещением в 4 ряда. Проблема-2: Как я могу скопировать только реальный используемый диапазон, рабочая книга становится огромной. Код-Sample: Sub Test () Dim Sh2Cell Как Range Dim Sh3Cell Как Range Dim ShQuelleTitle Как Range Dim ShZielTitle Как Range '
Thomas Strickner
1

голосов
0

ответ
39

Просмотры

Sheet not found via codename

Я бегу по горизонтали и ошибка, которая возникает спорадически. По существу, мастер-файл .xlsm используется несколькими людьми для заполнения данных для агрегации. Затем я использую другой файл .xlsm с макросами для извлечения данных и агрегировать их в одном исходный файл. Код обычно работает довольно хорошо, но с одним исключением:. 'Определяют диапазон на основе подсчета' Set rngItemRange = SourceWb.Sheets ( "Quality") Диапазон (Cells (3, I), Cells ((intItemCount + 2), я)) 'написать каскадный диапазон' targetwb.Sheets ( "Raw Data"). Cells (pintDest_row, pintCol) .Value = concatRange (rngItemRange) Он не может найти вкладку "Качество" на некоторых рабочих книги (но не все). Хорошо, может быть, кто-то переименовали вкладку? проверить, что, то не так. Одна вещь, которая работает как работа вокруг: на исходную книгу открытой, когда отладки выдает ошибку, если я вручную выберите вкладку качества, а затем возобновить макрос, он будет продолжаться. Я также сказал, хорошо, хорошо, может быть, есть какая-то странная проблема распознавания символов, поэтому я начал обращаться к листку по кодовому, как показано в редакторе VBA. Я испытываю то же модель поведения. Это влияет, может быть 50% от книг, и я не могу найти причину. У меня есть подобный код в другом месте, для разных листов, но это только один, где я определить диапазон для передачи в функцию, используя команду «SET». Опять же, это происходит только иногда на некоторых книгах, и я могу продолжать выполнять, когда я вручную нажмите на вкладку Я потянув данные. Я также добавить, есть только одна рабочая книга открыта с этим именем листа, в любой момент времени, так что я не думаю, что задыхается, пытаясь понять, который лист актуален. Плюс sourceWb представляет собой набор переменный. Есть ли кто-нибудь есть какие-либо понятия, что происходит? что-нибудь попробовать? решения? Помогите! (Простите опечатки, я работаю на сломанный палец прямо сейчас.)
mecasull
1

голосов
0

ответ
35

Просмотры

Copying multiple specific cells to specific ranges in new workbook

Я обычно не просят о помощи, но я хотел бы разобраться в этом, и это сводит меня с ума. У меня есть книги Excel с 2 листами (Лист1 и Лист2). Данные в Лист1, что мне нужно. В Лист1 У меня есть несколько столбцов и строк с разными данными; Мне нужно создать макрос, который позволяет копировать certains клетки (все из одной строки, хотя) в новую книгу на основе модели (давайте назовем его «model.xlst»), но в некоторых клетках. а именно: мне нужно скопировать из строки 5, значения из ячеек, соответствующих A5, C5 и H5. Затем мне нужно вставить эти данные в новую книгу. Скажем, например: А5 из Лист1 переходит в В3 в новой книге C5 из Лист1 переходит в F8 в новой книге Н5 из Лист1 переходит в H6 в новом учебном пособии Также я должен повторить процесс для остальных строк, так что я d включает диалоговое окно для выбора ячейки, я хочу, чтобы начать с. (Это мне удалось, по крайней мере!) Я пробовал много сценариев для достижения этого процесса, но я не получаю до точки здесь. Если кто-нибудь может дать мне старт я ценю вашу помощь. Спасибо, Джакомо Edit: это где у меня до сих пор. Как вы можете видеть, что я сумел создать новую книгу, даже если это не модель, которую я хочу использовать (он просто создает новую пустую книгу и открывает модель в то же время), и я пропускаю целые клетки выбор и копирование часть, я пробовал много вещей, но они не работали. На самом деле здесь застряли. Я не настолько опытны в кодировании, как вы можете увидеть :) Sub CopyToLog () Dim SlctRange Как Range, CopyRange Как Range Dim strTemplate As String: strTemplate = "MODELLO_LOGSHEET.xlsx" Dim термометру Как Workbook xTitleId = "SlctRange"
Giacomo Viganò
1

голосов
1

ответ
37

Просмотры

ODBC в VBA медленно нарушение

Я использую Windows 7 Professional на 64-разрядной операционной системе. Я использую VBA в Excel и подключение драйвера MySQL ODBC 5.2ANSI в SysWOW64 для подключения и выполнения запросов в базе данных MySQL Workbench 6.3. Мой макрос запускает серию запросов. Это не работает нормально, пока другой день, когда некоторые из запросов перестали работать. Я печатаю каждый запрос, и когда я вручную скопировать и вставить запрос в базу данных MySQL Workbench, запрос работает нормально; данные, безусловно, есть. Все больше и больше запросов перестали работать, как раз пошел на. Т.Е. первый день с вопросами, пара запросов не дал результатов. Макрос работает около 30 запросов. Теперь о 7 из запросов не работают. Я не понимаю, почему некоторые запросы возвращают результаты, но не другие. Когда я отладки, я вижу ADODB.Connection соединяется, но набор запись erroring из при попытке выполнить запрос. Вот то, что код выглядит следующим образом: Sub Test () Dim MyODBC As String Dim ConnectionString As String Dim свя As New ADODB.Connection Dim RS As New ADODB.Recordset Dim SQL As String, SQL_ML As String Dim Var как Double ConnectionString = «Подключение String»SQL =„SQL String“Var = MyFunction (SQL, ConnectionString)„Различные имена переменных используются в функции для подключения“и записи набора«Есть 4 функции в этой моде. Только 1 erroring из в «момент! Dim rng_ML Как Range Set rng_ML = Application.Range ( "rng_ML") Dim ML_Matrix () As Double ReDim ML_Matrix (1, rng_ML.Columns.count) Для я = 1 Для UBound (ML_Matrix, 2) SQL_ML = SQL & rng_ML (1 , я) Set Rs = Conn. Execute (SQL_ML) «Это где она ИНОГДА erroring вне. rs.MoveFirst ws.Cells (Row, 1 + я) .CopyFromRecordset Р.С. Далее я End Sub` Опять же, этот код работал в течение нескольких месяцев, и теперь медленно ломаясь. Кто-нибудь слышал об этом раньше?
haas
1

голосов
0

ответ
253

Просмотры

VBA Code running in F8 But not in F5

У меня возникли некоторые проблемы с моей УВОЙ. Это, кажется, работает в F8, но не в F5. Когда она работает в F5, элемент не распознается (отображается как пункт = ничего). Я вставил код, приведенный ниже. Sub SlicerSelect () On Error Resume Next ЭЛЕКТРОННЫЕ ТАБЛИЦЫ ( "Лист3"). Activate 'кэш Dim As Excel.SlicerCache Dim деталь как SlicerItem Dim Eval_Cell As String Offset_Cell = Sheets ( "Лист3"). Range ( "A18"). Адрес A = 1: AA = 0: AAA = 0 при А = 1 К 2 AA = AA + 1, если AA = 1 Тогда Slicer_Name = "Slicer_Color" ElseIf AA = 2 Тогда Slicer_Name = "Slicer_Letter" End If «Установить кэш = ActiveWorkbook.SlicerCaches (Slicer_Name) BB = 0 Do До End_Switch = 1 AAA = AAA + 1: BB = BB + 1:
Deen444
1

голосов
0

ответ
755

Просмотры

Excel Treeview Строительство

Используя код, показанный в нижней части I и в состоянии загрузить Treeview для иерархии, как показано ниже, это представляет собой последовательность, в которой материал потребляется, чтобы в конечном итоге сделать Item A. В рамках Treeview Я хотел бы показать, что материал расходуется при различных числа операций, как показано ниже в таблице слева руки, чтобы произвести ниже TreeView. Можно ли добиться этого без построения новой иерархии, как показано ниже справа. Суб LoadTreeView () Dim rNodeNames As Range, rNodeName As Range, nodX Как Sheet2.OLEObjects объектов ( "treeView1") Object.Nodes.Clear Набор rNodeNames = Range ( "A2: A" & Range ( "A" & Rows.Count ) .END (xlUp) .Row) Для каждого rNodeName В rNodeNames С Sheet2.OLEObjects ( "treeView1"). Object.Nodes Если rNodeName.Value = "L.1" Тогда Set nodX =.
user3673417
1

голосов
0

ответ
40

Просмотры

предотвратить переключатель, чтобы проверить при нажатии, если она не будет защищена

Я хочу, чтобы предотвратить Excel радиокнопки активно-х, расположенных в защищенных ячеек будет нажата, если защита клеток не поднимается. Как это сделать? код я использую это один: Private Sub OptionButton17_Click () Если OptionButton17.Value = True Then OptionButton18.Value = False AuthorisationFlag = True AuthorisationLevel AuthorisationFlag End Sub Я не хочу OptionButton17 или OptionButton18 быть нажата, если предыдущие условия не установлены. Если я заблокировать Linked Cell это не имеет никакого эффекта либо, если я заблокировать ячейку, на которой размещены кнопки. Любое предложение?
P. A Ducruet
1

голосов
0

ответ
192

Просмотры

Автозаполнение Ошибка выполнения 1004 Метод «Run» объекта «_Application» Failed

Я искал на вопросы, касающиеся способа автозаполнения и метод «бежать», но я до сих пор не могу понять, почему мой код думает, что я использую метод запуска, когда я не являюсь. Ошибка выполнения 1004 Метод «Run» объекта «_Application» Failed Я пытаюсь сделать автозаполнения при формулу массива. Код работает правильно, пока линия, которая пытается сделать сам автозаполнение. Я думал, что это была проблема с тем, как я установил свои диапазоны, но теперь, так как ошибка говорит «Метод Run» Я думаю, что это не так. Не могу понять, где я использую метод запуска ... rngLastHeader.Offset (1, х) .Select Selection.FormulaArray = "= IFERROR (INDEX (P: P, MATCH (" & "" "" & город & " "" & "" "& "Автомобили" и "" "" &", I: I & R: R, 0)),»
SanomaJean
1

голосов
2

ответ
237

Просмотры

Основные VBA - Циклические и Inputbox

Мне нужна помощь в отделке некоторые довольно основные кодирования VBA. До сих пор я был в состоянии иметь случайные числа в диапазоне от 1 до 100 в определенный диапазон (A1: J10) и имеет значение для чтения с листа и хранить их в 2 одномерном массиве Integer. Тем не менее, мне нужна помощь с: Перебор значений в массиве и подсчитать количество значений, которые больше, чем значение, заданное пользователем (думал об InputBox, помня, чтобы преобразовать значения из строки в interger, а также необходимости если использовать Постулаты для Makesure числа в диапазоне от 1 до 100). Полученные результаты должны быть отображены в окне сообщений Затем он должен цикл по всем значениям в диапазоне и тени клеток со значений больше указанного числа в синем цвете. Может кто-нибудь помочь? Это то, что я до сих пор Sub numrange () Dim г Как Range Set г = Range ( "A1: J10"
Megan Starbuck
1

голосов
2

ответ
130

Просмотры

Искать символ € в диапазоне определены в коде

Я не испытывал в кодировании VBA. Мой код VBA: Поиск = InStr (ActiveCell.NumberFormat, Chr (128)) Selection.Find (Что: = Поиск, After: = ActiveCell, Lookin: = xlValues, _ LookAt: = xlPart, SearchOrder: = xlByRows, SearchDirection: = xlNext, _ MatchCase: = False, SearchFormat: = False) .Activate Он ищет и активирует клетки, которые включают в себя символ €. Он работает только тогда, когда я вручную определить свой диапазон выбора. При попытке вставить ActiveSheet.Range ( «H: H»). Выберите, чтобы сделать столбец H мой выбор (это моя цель), код перестает работать.
1

голосов
1

ответ
75

Просмотры

Lookup in all the sheets for specific text and if match then write value of same row but different column value to master sheet

проверить через все листы Если конкретный текст (например, да) находится в пятой строке листа, получить данные из этой строки (но другого столбца) и записать данные в мастер-лист Как я могу сделать это? Я нашел ниже коду относительно полезна для меня, но не 100% соответствия с моим требованием. Пожалуйста помоги мне с этим. Проблема в этом коде: - У меня есть конкретный текст (да) в определенном диапазоне (e6: е16). То, что я хочу, чтобы проверить только да слово. Если будет установлено затем записать значение столбца A и строки, в которой да слово найдено, в основной лист и проверить его до последнего листа. Sub SeachSheets () Dim FirstAddress As String, WhatFor As String Dim Cell As Range, Sheet As Worksheet WhatFor = InputBox ( "Что вы ищете?", "Критерии поиска") Если WhatFor = Empty Then Exit Sub для каждого листа в листах Если Sheet.Name «ПОИСК» Тогда С Sheet.Columns (1) Установите Cell = .find (WhatFor, Lookin: = xlValues, LookAt: = xlPart) Если не Cell ничего после этого FirstAddress = Cell.Address Do Cell.EntireRow.Copy _ Destination: = Sheets (» ПОИСК "). Range (" A»& Rows.Count) .END (xlUp) .offset (1, 0) Set Cell = .FindNext (Cell) Loop До Cell Is Nothing или Cell.Address = FirstAddress End If End With End Если следующий подшивок Cell = Nothing End Sub Любая помощь будет оценена. Спасибо. = XlPart) Если не Cell ничего после этого FirstAddress = Cell.Address Do Cell.EntireRow.Copy _ Destination: = Sheets ( "ПОИСК") Range ( "A" & Rows.Count) .END (xlUp) .offset (1. , 0) Set Cell = .FindNext (Cell) Loop До Cell Is Nothing или Cell.Address = FirstAddress End If End With End If Next подшивок Cell = Nothing End Sub Любая помощь будет оценена. Спасибо. = XlPart) Если не Cell ничего после этого FirstAddress = Cell.Address Do Cell.EntireRow.Copy _ Destination: = Sheets ( "ПОИСК") Range ( "A" & Rows.Count) .END (xlUp) .offset (1. , 0) Set Cell = .FindNext (Cell) Loop До Cell Is Nothing или Cell.Address = FirstAddress End If End With End If Next подшивок Cell = Nothing End Sub Любая помощь будет оценена. Спасибо. FindNext (Cell) Loop До Cell Is Nothing или Cell.Address = FirstAddress End If End With End If Next подшивок Cell = Nothing End Sub Любая помощь будет оценена. Спасибо. FindNext (Cell) Loop До Cell Is Nothing или Cell.Address = FirstAddress End If End With End If Next подшивок Cell = Nothing End Sub Любая помощь будет оценена. Спасибо.
1

голосов
3

ответ
49

Просмотры

Function to return all events in a certain date

I have a table that has a start date, end date, and then event name I would like to be able to look up a date and see if it falls between the start and end date and then pull in all the event names that meet those criteria For example start end name 1/1 1/7 Event1 1/5 1/8 Event2 1/6 1/6 Event3 If i wanted a date of 1/5, the return value would be Event1; Event2 Function DateEventLookup(eventdate As Long, startrng As Range, endrng As Range, pIndex As Long) ' eventdate is the lookup , startrng is the first array, endrng is the second array, pindex is the column to return Dim rng As Range Dim rng2 As Range Dim xResult As String xResult = "" For Each rng In startrng If rng.Value = eventdate Then xResult = xResult & "," & rng2.Offset(0, pIndex - 1) End If Next End If Next DateEventLookup = xResult End Function I keep getting N/A# so i am not sure how to correct this with the second criteria EDIT #1 I took a combo of two answers. However I am still getting dupes Public Function EventList(starts As Range, ends As Range, events As Range, d As Date) As String Dim N As Long Dim i As Long Dim P As Object Set P = CreateObject("Scripting.Dictionary") N = Cells(Rows.Count, starts.Column).End(xlUp).Row For i = 1 To N If CDate(starts(i)) = d Then P.Item(events(i)) = 1 'EventList = EventList & "; " & events(i) Next i EventList = Join(P.keys, ", ") End Function Not sure how to fix this I tried adding in a If NOT p.exists(events(i)) then ADD but I am getting an N/A# now
UserX
1

голосов
0

ответ
261

Просмотры

Должен ли я зарегистрировать DLL, чтобы использовать его в Excel?

Старше продукт мы используем имеет 32-битный DLL, которая делает выкачать компрессионную / декомпрессию. Мы импортируем его в VBA следующим образом: Declare Function PtrSafe EtUnCompress Lib "CompPl32.dll" (ByVal SrcSt $, ByVal SrcLen As Long, Dest Как и любой, ByVal DestLen As Long) As Long Некоторые из наших клиентов имеют 64-разрядный офис, так что проблема. Я был в состоянии написать свою собственную 64-разрядную версию с помощью System.IO.Compression, с удивительной легкостью. Теперь вопрос Если бы я назвал свою версию CompPl32.dll и поместить его в System32, достаточно ли этого? Или моя версия должна быть зарегистрирована, чтобы работать в Excel VBA? У меня есть 32-битный офис, поэтому я не могу проверить это.
Maury Markowitz
1

голосов
1

ответ
67

Просмотры

Как определить максимальное значение между сделками

У меня есть биржевая торговля электронной таблица, и я хотел бы, чтобы определить максимальное значение и минимальное значение между сделками. Таблица выглядит примерно так: ** Дата ** ** ** Цена со ** ** Действие ** ** ** TradeNumber 01/01/2018 Apple, 1000,00 Купить 1 02/01/2018 Apple, 995.25 - 03/01 / 2018 Apple, 992,50 - 04/01/2018 Apple, 987,50 - 05/01/2018 Яблоко 965,00 Закрыть 1 у меня есть диапазон для столбца, который содержит торговые номера. Я хотел бы цикл через этот диапазон, и каждый раз, когда я сталкиваюсь с Cell с торговым номером, мне нужно, чтобы определить максимальное значение цены Column за период, я держал акцию яблок. Я борюсь работу из диапазона ячеек для максимальной формулы, = Max (C2: C5 :). Любые идеи или указатели будут весьма благодарны.
Lawrence Horner
1

голосов
0

ответ
57

Просмотры

#REF! именованные диапазоны только с указанием после открытия книги

После запуска всего моего проекта, я стараюсь, чтобы удалить все именованные диапазоны в базовой книге с #REF! ошибки в них. Я делаю это, запустив CleanUp Sub в конце: Sub CleanUp () Dim namy как имя для каждого namy В ActiveWorkbook.Names Если InStr (1, namy.RefersTo, "# ССЫЛКА!") Тогда namy.Delete End If Следующий namy End Sub Однако мой CleanUp () Sub не обнаруживает мое # ССЫЛКА! именованные диапазоны. Я думаю, что это такая же проблема, чем в Удалять Брокен именованных диапазонов в Excel с использованием VBA (я знаю, что это, вероятно, дубликат, но я вопрос без ответа, и я не хватает репутации комментировать существующий вопрос и ниже я привожу в некоторые дополнительные идеи). Интересное наблюдение, что, когда я закрыть и повторно открыть мою книгу, то выше Sub ДЕЛАЕТ идентифицировать # ССЫЛКА! диапазоны. Может кто-нибудь объяснить такое поведение? Если мы можем объяснить это, я подозреваю, как это и связанная проблема может быть решена.
Malan Kriel
1

голосов
1

ответ
224

Просмотры

Как объединить 100 книг в главной книге с помощью VBA?

Это попытка сделать так: Sub GetSheets () Dim Path Как вариант Dim файла Как вариант Dim листа как вариант Путь = "C: \ Users \ Asus \ Google Drive \ Доход Генерация \ Фондовый рынок \ Ежедневные котировки \ PSEGet" имя файла = Dir ( "\ *. CSV" Path &) Do While имя файла "" Workbooks.Open имя файла: = Путь & имя файла, ReadOnly: = True Для каждого листа В ActiveWorkbook.Sheets sheet.Copy После: = ThisWorkbook.Sheets (1) Далее лист Workbooks (имя файла) .close имя_файла = Dir () Loop End Sub При нажатии на кнопку Run Macro, путь к файлу распознается, но копирование строк данных не работает. Эта ошибка появляется: Это файлы, которые я хочу объединить в мастер-лист. Расположенный в одной папке: файлы, которые я хочу, чтобы объединить показаны здесь: Пример CSV-файла
Pherdindy
1

голосов
1

ответ
179

Просмотры

VBA SetFocus on Keydown not working if checkbox true?

У меня есть следующие формы в Excel. Она является частью простой инвентаризации листа, и используется для обновления состояния элементов. Он функционирует должным образом, однако, когда я пытался добавить в поле, чтобы сделать выбранный статус не проходит (что позволяет мне только типа в последовательном, а не серийных и состоянии каждый раз при работе с партией деталей) я заметил, что в центре внимания после подачи циклов вперед, как будто я нажал вкладку вместо того, чтобы, когда я установил его с SetFocus. Я предполагаю это упущение связана либо цикла событий для KeyDown или вложенными Если / Else логика, но я уже не повезло на самом деле не диагностировать его. Я только недавно начал использовать VBA, и есть много причуд я пытаюсь понять. Private Sub ясно () Me.txtSerial = "" Если cbPersist.Object.Value = False Тогда Me. cboxStatus = "" Me.cboxStatus.SetFocus Else Me.txtSerial.SetFocus End If End Sub Private Sub представить () Dim LOC Как Range Dim WS As Worksheet Set Ws = ( "Рабочие листы Полный Inventory") Set LOC = ws.Columns (» B ") Найти (что:. = Me.txtSerial.Value, Lookin: = xlValues, LookAt: = xlWhole) Если не LOC ничего после этого ActiveWindow.ScrollRow = loc.Row ws.Cells (loc.Row, 10) .Value = Me.cboxStatus.Value Else MsgBox "Serial не найден." End If End Sub ясно Private Sub txtSerial_KeyDown (ByVal KeyCode Как MSForms.ReturnInteger, ByVal сдвиг As Integer) Если KeyCode = vbKeyReturn Затем представить ELSEIF KeyCode = vbKeyEscape Тогда ясно End If End Sub Private Sub UserForm_Initialize () cboxStatus.List = Array ( "Сток ""
Steven R
1

голосов
0

ответ
200

Просмотры

как объединить несколько таблиц для работы с несколько Excel файлов и таблиц в Python / VBA для формирования сводной таблицы

Можно ли объединить несколько таблиц в нескольких файлах Excel и листы в Python / VBA для формирования сводной таблицы? Мне нужно создать сводную таблицу на этой сводной таблице для дальнейшего анализа. Это для анализа ежемесячного статуса сообщили в команде. Предположим, что команда сообщает свой статус в качестве еженедельного первенствует файла. Так как вход у меня есть 4 файлов Excel (один Excel файл в неделю месяца), каждый из файла Excel имеет 2 листов (по одному для каждого продукта, что команда работает над), и каждый лист имеет 2 таблицы (1 стол для развития команды и один стол для команды тестирования) Как разобрать каждый из этих файлов Excel и объединить все таблицы T1, T2 таблицы, таблицы T3 и T4 таблицы? Исполнив это вручную в настоящее время в Excel 2016 с помощью следующих шагов: 1. Откройте новый файл первенствовать 2. Загрузите все таблицы (из 4-х файлов Excel) в этот файл с помощью «Data -> Получить данные -> From File -> Из Workbook -> Выберите файл, который вы хотите (диалоговое окно просмотра) -> Выбрать все таблицы (Навигатор диалоговое окно) -> Нажмите на кнопку Load»3. Объединить таблицы по„Data -> Получить данные -> Объединить запросы -> Append“Я хочу сделать это с помощью Python / VBA, но я не могу найти какой-либо источник в Интернете, где я могут читать таблицы первенствовать в память. Метод Панды read_excel (), считывает весь первенствовать лист в кадр данных, и что на самом деле не решить мою цель. Я не мог найти ничего в xlrd, XlsxWriter модули либо. Пожалуйста помоги. т действительно решить мою цель. Я не мог найти ничего в xlrd, XlsxWriter модули либо. Пожалуйста помоги. т действительно решить мою цель. Я не мог найти ничего в xlrd, XlsxWriter модули либо. Пожалуйста помоги.
Divya
1

голосов
2

ответ
63

Просмотры

Копирование отфильтрованных записей в новый временный лист

Я пытаюсь скопировать некоторые отфильтрованные записи на новый лист в той же первенствует. Но, его просто скопировать заголовок и не записи. Просьба предложить. Я определил nc_it_an_sub как число записей, отображаемых после ввода автоматического фильтра. Рабочие книги ( "WB1.xlsx") Рабочие листы ( "Лист1") Диапазон.. ( "A2: N", и nc_it_an_sub). .Select. Selection.Copy Рабочие книги ( "WB1.xlsx") Рабочие листы ( "Темп листа") Диапазон ( "A1") PasteSpecial Paste:. = xlPasteValues
user9351236
1

голосов
1

ответ
342

Просмотры

Sum cells from a workbook and paste in another workbook

У меня есть 2 книги и мне нужно скопировать сумму 2 ячейки в ячейку другой книге. Я копирую значение нормально, но в одном случае мне нужно скопировать сумму 2-х ячеек. Я пытаюсь с этим кодом, но он не работает: Sub Excel_Excel () Dim х As ThisWorkbook Dim у As Workbook Dim Total As Double Application.ScreenUpdating = False Application.DisplayAlerts = False '' позволяет пользователю выбрать один файл Application.FileDialog (msoFileDialogOpen) .AllowMultiSelect = False «» сделать файловый диалог видимым для пользователя intChoice = Application.FileDialog (msoFileDialogOpen) .Show 'определить, какой выбор сделал пользователь Если intChoice 0 Тогда «» получить путь к файлу, выбранный пользователь strPath = Application.FileDialog (msoFileDialogOpen) .SelectedItems (1) End If '## Открыть рабочую книгу: Установите у = Workbooks.Open (strPath)' Теперь,
Z. Turienzo
1

голосов
1

ответ
718

Просмотры

Время выполнения Ошибка 424 Требуется объект работы с UserForm

Я пытаюсь связать пользовательскую форму I, построенный в редакторе VBA для MS Excel 2010 с данными в электронной таблице Excel, но я получаю во время выполнения ошибки 424: требуется объект. Я сослался на активный лист явно в моем коде, чтобы попытаться исправить это, но он по-прежнему приходит с той же ошибкой. Мой код:. Private Sub GetData () Dim г As Long г = ActiveSheet.Range ( "B2") Значение Если IsNumeric (RowNumber.Text) Тогда г = CLng (RowNumber.Text) Else MsgBox ClearData "Неверный номер строки" Выход Sub End If Если г> 1 и г
Mari
1

голосов
1

ответ
250

Просмотры

Excel VBA Пользовательская сортировка не работает должным образом

Хорошо, Так что я пытаюсь сделать пользовательский вид на моей засекреченной таблице с помощью справочной таблицы, вот небольшая часть справочной таблицы Теперь, когда я отсортировать мое Объявлений таблицы, становится это, как вы можете видеть, это только разные до некоторого количества строк (C & J Global Enterprises), то остальные сортируются в алфавитном порядке (что не то, что я хочу) Вот мой VBA код Private Sub WorkSheet_Activate () Dim гика Как Worksheet, RefSheet Как Worksheet Set гика = Worksheets ( "Объявления клиента стол") Set RefSheet = Worksheets ( "RefTable") Dim RangeOne Как Range, RangeTwo Как Range Set RangeOne = MainSheet.Range ( "A2: A150") Установите RangeTwo = RefSheet.Range ( "A1: A137") Dim MainRange Как Range Set MainRange = MainSheet.Range ( "A2: H150") Application.AddCustomList ListArray: = RangeTwo MainSheet.Sort.SortFields.Clear MainRange.Sort Key1: = MainRange, Header: = xlNo, _ OrderCustom: = Application.CustomListCount + 1, MatchCase: = False, _ Ориентация: = xlTopToBottom, DataOption1: = xlSortNormal Application.DeleteCustomList Application.CustomListCount Заранее спасибо !
1

голосов
1

ответ
33

Просмотры

Найти определенный текст, скопировать и вставить в новый лист

У меня есть этот код здесь, который идет через мою колонку лист С и и найти все ячейки с «Джеф» в нем и копирует его и вставляет его в «Джеф» листа от активного листа. что мне это нужно, чтобы выполнить копирует всю строку и вставить его в листе «Geoff». Тусклое K As Long, г As Range, V как вариант К = 1 Тусклое w1 как рабочий лист, w2 Как Рабочий лист Набор W1 = Sheets ( "Активный") Set w2 = Sheets ( "Джеф") w1.Activate для каждого г В Intersect ( Диапазон ( "C: C"), ActiveSheet.UsedRange) v = r.Value Если InStr (V, "Джеф")> 0 Тогда r.Copy w2.Cells (К, 1) К = К + 1 End If Следующий г он копирует Geoff из столбца CI нужно, чтобы скопировать всю строку. Любая помощь или идеи?
Joshua Martinez
1

голосов
2

ответ
360

Просмотры

Обновление графики в ручном режиме расчета (Excel для Mac 2016 года)

У меня есть большая книга, из которой я пытаюсь создавать отчеты, в то числе нескольких графиков. Учебное пособие должно быть в ручном режиме расчета на работу. Я разобщенный расчеты в разные листы, а также письменные Vba скриптов для выполнения вычислений на различных комбинациях листов. Проблема я бегу в к тому, что после того, как я запускать эти сценарии, графики, которые я не буду обновлять. Данные делает обновление, и если я вручную идти к графику и «выбрать данные» и повторно выбрать одни и те же данные, то они будут обновлены. Есть ли способ, я могу автоматизировать это в конце моего сценария? Я пробовал различные предложения на разных форумах, но ничего не похоже на работу. Вот код, я работаю с, но это не будет обновлять графики: Sub Calculate1 () Sheets ( «Лист 1») Рассчитать ". Лист с расчетами Sheets ( «лист 2»). Вычислить «Листа ссылки окончательных цифр из листа 1, и отображение графиков дима CO AS ChartObject Для каждого совместно в листах („Лист 2“). ChartObjects co.Chart.Refresh DoEvents Далее со Концом Sub Спасибо, что нашли время, чтобы посмотреть! Я бегу Excel для Mac 2016. Одно из предложений, которое было сделано на других форумах на мгновение установить режим расчета в автоматический режим, но это не вариант для меня, так как это приведет к краху программы.
mcflame

Просмотр дополнительных вопросов