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

1

голосов
1

ответ
37

Просмотры

Как исправить чч: мм

У меня есть файл Excel, импортируемый из конкретной информационной системы. Я работал с его автоматизации через VBA код. Однако я столкнулся с проблемой при работе с чч: мм клеток. Я не могу подвести их, я пытался отформатировать их чч: мм, я также пытался отформатировать выходную ячейку как [HH]: ММ, ни один из них не похоже на работу. Я предполагаю, что проблема с тем, как клетки отформатированы, они находятся в Times New Roman и кажутся немного прочь. Мне нужен код VBA, чтобы выбрать определенный диапазон и скопировать древне значение и вставьте их снова, но с нормальным по умолчанию форматирования Excel.
Yassine Lachgar
1

голосов
2

ответ
78

Просмотры

Формы (рабочий лист) против управления (UserForm)

Я пытаюсь вызвать рабочий лист помещен ярлык, но я хотел бы динамически называть его, предоставляя строку имени. Я пробовал много предложений, это один дал мне большую надежду: Могу ли я ссылаться на объект, используя строку? Я успешно достичь желаемого эффекта в прошлом, но эти приложения были UserForm основе. Это одна не имеет UserForms так, видимо, я не могу использовать Userform.Controls? Предлагается использовать Shape вместо этого, однако всякий раз, когда я хочу, чтобы изменить заголовок формы, он говорит, что он не имеет это свойство. Я пытался «объединение» этикетки и формы в странных отношениях, но я, конечно, всегда есть несоответствие. Я просто буду использовать пример из связанного ответа Dim shpLabel Как Shape Set shpLabel = Sheet1.Shapes ( «labelnum» и я) shpLabel.Caption = «некоторая строка» Видимо, это работает для некоторых людей (возможно, более старые версии?), Но для меня он всегда возвращается, что свойство отсутствует. Я надеюсь, что я не должен делать что-то вроде этого: Использование строки в качестве имени объекта Основной причины, почему я хочу сделать это таким образом, скорость и размер. Файл уже очень медленно, и я обеспокоен тем, что рекурсивный код как это только собирается сделать это хуже.
JohnT
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

ответ
21

Просмотры

Диапазон не меняется несколько ячеек

.. Sub ButtonLower () Range ( "b2", "b7") Значение = Range ( "b2", "b7") Значение - 2 End Sub Sub ButtonHigher () Range ( "b2", "b7") Значение =. Range ( "b2", "b7"). Value + 2 End Sub Конечный результат в том, что значение изменяется только B2, а не весь ассортимент. Может кто-то помочь мне с этим?
sleighter
1

голосов
2

ответ
57

Просмотры

Requery форма после перекомпоновки таблицы

Я разрабатываю приложение MS-Access с сидящими данными в отдельных серверной базе данных (также MS-Access). Основная форма содержит кнопку, чтобы открыть диалоговое окно настроек, кнопка выхода (как в заголовке формы) и навигационный контроль с несколькими вкладками, показывая субформ в деталях формы. Диалог настроек является всплывающим окном. В диалоговом окне пользователь может изменить путь к внутренней базе данных и все связанные таблицы будут перекомпоновываются автоматически, если пользователь сохраняет настройку. Это работает очень хорошо. Тем не менее, после закрытия диалога, requerying активных подчиненного не имеет никакого эффекта, только если я закрыть и снова открыть форму (например, нажав на другую вкладку) будет это показывать данные из нового (соотнесения базы данных). И я думаю, что это не имеет никакого отношение как-то сделать с моей перекомпоновкой УВОЙ. Я попытался открыть свой подчиненной непосредственно и использовал Linked Table Manager, с тем же результатом. Нажатие на кнопку обновления на ленте ничего не делает, только тогда, когда я изменить дизайн вид и обратно, чтобы сформировать представление, данные в форме будут обновлены. Я также пробовал различные комбинации перекрашивать, обновление и Requery, но безрезультатно. Я использую Requery широко в моем коде, и она работает хорошо, но это, кажется, не после простого переподключения связанных таблиц. Различные базы данных Серверные имеют точно такую ​​же структуру, они просто дублирует с некоторыми записями удалены иметь тестовые случаи. Что тут происходит? С уважением Оливер но это, кажется, не после простого переподключения связанных таблиц. Различные базы данных Серверные имеют точно такую ​​же структуру, они просто дублирует с некоторыми записями удалены иметь тестовые случаи. Что тут происходит? С уважением Оливер но это, кажется, не после простого переподключения связанных таблиц. Различные базы данных Серверные имеют точно такую ​​же структуру, они просто дублирует с некоторыми записями удалены иметь тестовые случаи. Что тут происходит? С уважением Оливер
Oliver Bienert
1

голосов
2

ответ
91

Просмотры

What's a shorter way of writing this code?

I have made this excel VBA code through a macro recording and would like to know a shorter way of writing it with some sort of input loop maybe? The sheet has two inputs which vary with respect to time, these are found in cells (B5:Y5) and (B8:Y8). The code picks up the first input (B5) and pastes it into its appropriate cell (J16). It then copies the other input (B8) and pastes it into its appropriate cell (N12). The sheet calculates two outputs and the code copies these from cells (H41) and (K41) into a "RESULTS" table at the bottom. It repeats this for the next column of cells in the "INPUTS" section and keeps going until the end of the inputs. I understand this is a very crude way of doing this and would greatly appreciate any help. Keep in mind I am a complete coding noob :) Sub CopyVariables() ' ' CopyVariables Macro ' ' Range("J16").Select Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "=R[-11]C[-8]" Range("N12").Select Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "=R[-4]C[-12]" Range("H41").Select Selection.Copy Range("E47").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("K41").Select Application.CutCopyMode = False Selection.Copy Range("E48").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("J16").Select Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "=R[-11]C[-7]" Range("N12").Select Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "=R[-4]C[-11]" Range("H41").Select Selection.Copy Range("F47").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("K41").Select Application.CutCopyMode = False Selection.Copy Range("F48").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False .... and keeps repeating for each cell individually.
Sid
1

голосов
2

ответ
32

Просмотры

Используйте переменную в Objectname для С заявлением

У меня есть макрос первенствовать который считывает содержимое из конкретного столбца в другом листе. Я хочу использовать переменную в имени листа в С утверждением, но получаю сообщение об ошибке «Ошибка во время выполнения, объект требуется» в Для каждой строки я уже искал, как использовать переменные в именах объектов и пытался, но ни к чему помогло. Этот код работает с Blad2 strData = Range (ид и "1") и vbLf & vbLf Для каждого С в .Range (ID & "2:" & ID & "10") Если c.Value "" Тогда strData = strData & "-" & c.Value & vbLf End If Next End Ĉ С помощью этого кода не удается. Я знаю наверняка, переменная зд имеет числовое значение, испытано, что с MsgBox с ( "Блад" & BLD) strData = Range (ид и "1") и vbLf &
Jeroen Swets
1

голосов
3

ответ
67

Просмотры

Is the a quicker way to determine the largest string length in an array?

Это сегмент кода, который был беспокоит меня, так как я уверен, некоторые простые функции существуют, что будет делать цикл через массив значений избыточным. Вместо этого я использовал массив, цикл и логический, чтобы сказать мне ли клетки пустые (или проверить их длину) и заявление, если запустить последнюю часть кода. Я думал, что, возможно, Макс будет работать, но я считаю, что это только для целых чисел. (См Debug.Print часть дим arrArchLoc как вариант Тусклое boolArchLoc As Boolean Dim rowCounter As Long boolArchLocEmpty = False arrArchLoc = ActiveSheet.Range (Клетки (2, colArchiveLocation), Клетки (lastRow, colArchiveLocation)) Для rowCounter = LBound (arrArchLoc) К UBound (arrArchLoc) Если клетки (rowCounter, colArchiveLocation) "" Тогда boolArchLocEmpty = True Next rowCounter «Debug.Print workshetfunction. Макс (arrArchLoc) Если boolArchLocEmpty = True Then ActiveSheet.Cells (1, colArchiveLocation) .value = "Arch Loc" Столбцы (colArchiveLocation) .ColumnWidth = 6 Конец Если ли такая функция или простой способ существует? EDIT: В то время, что SpecialCells решение (xlCellTypeBlanks) выглядит довольно хорошо, я бы до сих пор скорее получить решение длины строки. Мои извинения, код изначально было что-то вроде ... Если LEN (Cells (rowCounter, colArchiveLocation))> 6, то ... но я с тех пор удалить его после того, чтобы получить что-то в месте, которое будет работать. Есть ли что-то я мог бы сделать с LEN (MAX)? Я экспериментировал с ним, но не очень далеко. Несмотря на то, что SpecialCells (xlCellTypeBlanks) решение выглядит довольно хорошо, я бы до сих пор скорее получить решение длины строки. Мои извинения, код изначально было что-то вроде ... Если LEN (Cells (rowCounter, colArchiveLocation))> 6, то ... но я с тех пор удалить его после того, чтобы получить что-то в месте, которое будет работать. Есть ли что-то я мог бы сделать с LEN (MAX)? Я экспериментировал с ним, но не очень далеко. Несмотря на то, что SpecialCells (xlCellTypeBlanks) решение смотрится очень хорошо, я бы еще скорее получить решение длины строки. Мои извинения, код изначально было что-то вроде ... Если LEN (Cells (rowCounter, colArchiveLocation))> 6, то ... но я с тех пор удалить его после того, чтобы получить что-то в месте, которое будет работать. Есть ли что-то я мог бы сделать с LEN (MAX)? Я экспериментировал с ним, но не очень далеко.
HotSauceCoconuts
1

голосов
1

ответ
40

Просмотры

Доступ к VBA Application.Quit закрытия нескольких баз данных

Я создал приложение запуска для пользователей базы данных, чтобы открыть передний конец конкретной базы данных. Например, пользователь открывает приложение запуска (который является Access БД по общей сети), который затем выполняет следующие действия: Копирует передний конец дб от общей сетевой папки на локальный диск пользователя открывает локальную копию фронта конец дб Закрывает запуска приложения Этот процесс делает его гораздо проще для меня реализовать обновления к переднему концу, и работает отлично подходит для почти всех. Тем не менее, есть несколько пользователей, которые испытывают такой же вопрос. Когда они открывают приложение запуска, передний конец копируется в их локальный диск и открыт, но когда линия «Application.Quit» называется, как приложение запуска и передний конец близко. Кто-нибудь есть какие-либо идеи, что может быть причиной этого, и почему это может повлиять лишь некоторые пользователи, а не другие? Ниже приведен пример кода в приложении запуска, который открывает локальную БД (после того, как он был скопирован из местоположения сети), а затем закрывает себя (и должен покинуть передний конец открыты). Dim appAccess Как Access.Application Set appAccess = CreateObject ( "Access.Application") appAccess.OpenCurrentDatabase "C: \ Базы данных \ Database1.accdb" appAccess.Visible = True appAccess.RunCommand acCmdAppMaximize Set appAccess = Nothing Application.Quit Спасибо! Тим Применение Набор appAccess = CreateObject ( "Access.Application") appAccess.OpenCurrentDatabase "C: \ Базы данных \ Database1.accdb" appAccess.Visible = True appAccess.RunCommand acCmdAppMaximize Set appAccess = Nothing Application.Quit Спасибо! Тим Применение Набор appAccess = CreateObject ( "Access.Application") appAccess.OpenCurrentDatabase "C: \ Базы данных \ Database1.accdb" appAccess.Visible = True appAccess.RunCommand acCmdAppMaximize Set appAccess = Nothing Application.Quit Спасибо! Тим
Tim
1

голосов
2

ответ
63

Просмотры

Excel VBA CMD в список содержимого каталога

Как я могу изменить этот Excel VBA для: Перечислите пути каталогов, а не только файлы? Фильтр из системы и скрытые файлы? Вот это ток VBA: Sub MM () Dim fResults как вариант fResults = GetFiles ( "C: \ Temp") Range ( "A1") Изменение размера (UBOUND (fResults) + 1, 1) .Value = _ WorksheetFunction.. транспонировать (fResults) End Sub // UDF для заполнения массива с файлами, присвоить переменной Variant. Функция GetFiles (parentFolder As String) Как вариант GetFiles = Фильтр (Split (CreateObject ( "WScript.Shell"). Exec ( "CMD / C DIR """ & parentFolder & _ IIF (Right (parentFolder, 1) = "\" , vbNullString, "\") & "*. *" "/ S / B /A:-D").StdOut.ReadAll, vbCrLf),". ") End Function
BadDogTitan
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

голосов
0

ответ
58

Просмотры

Поиск и сортировка диапазонов в Excel с помощью кнопок рычажных

У меня есть электронная таблица, содержащую ± 100 названных диапазонов (5 строк, 15 colums), которые отсортированы по времени. Мой план состоял в том, чтобы сделать кнопки переключения, чтобы скрыть или отобразить именованные диапазоны, если они содержат определенное значение. Поэтому, когда я выбираю кнопку-переключатель для «Opel», например, отображаются все именованные диапазоны, содержащие «Opel». И когда я выбираю «Opel» и «Форд. Все диапазоны, содержащие «Opel» и «Форд» отображаются в то же время возможность сортировать диапазоны в этом представлении. Для сортировки я использую следующий код: Sub SorterenOpdrachten () Dim деталь, как Worksheet Dim I As Long Dim ListRng Как Range Dim LijstWks As Worksheet Dim NamedRng как имя Dim R As Long Dim Rng As Range Dim SortWks как рабочий лист «Рабочий лист declareren ALS variabele Набор деталь = Рабочие ( "деталь") Set LijstWks = Рабочие (» Opdrachten Naar деталь kopiëren R = 1 Worksheets ( "SortWks") Диапазон... ( "A1: T499") Копирование Worksheets ( "деталь") Range ( "A5: T504") Next End Sub intCounter Это работает отлично. Но когда я использую его в сочетании с кнопками коленчатых он работает слишком медленно. Для кнопок коленчатых я использую следующий код: Sub Tegels () Dim нм Как имя для каждого нм Application.Names Диапазон (нм) .EntireRow.Hidden = True Next нм Если TglOpel Тогда для каждого нм Application.Names Если Application. СЧЕТЕСЛИ (диапазон (нм), "*" и "Opel" и "*") Тогда диапазон (нм) .EntireRow.Hidden = False Next нм End If Если TglChevrolet Тогда для каждого нм Application.Names Если Application.CountIf (диапазон (нм), "*" и "Шевроле" и "*") Тогда диапазон (нм) .EntireRow.
Tommy
1

голосов
0

ответ
379

Просмотры

Включение опции Run-а-Script в мастере правил (Windows 7, Outlook 2016)

Опция «Выполнить скрипт» отключена для безопасности с помощью обновления Windows. Здесь https://www.slipstick.com/outlook/rules/outlook-2016-run-a-script-rules/ вы можете увидеть разницу до и после обновления: «запустить приложение» отсутствует. Если вы хотите посмотреть на скриншот от меня (после обновления Microsoft) посмотреть на последнее изображение в этом сообщении. У меня немецкая версия Outlook. Для включения этой опции я смотрел на Outlook 2013 «Выполнить скрипт» правило исчезло. Я включил макрокоманд (испытано как было упомянуто @jsotola) и добавьте в реестре следующий ключ: [HKEY_CURRENT_USER \ Software \ Microsoft \ Office \ 15.0 \ Outlook \ Security] "EnableUnsafeClientMailRules" = DWORD: 00000001. Но нет никакого «Выполнить скрипт» -option в правилах Outlook. Я тестировал его даже с перезагрузкой. Редактировать: Я проверил его на другом компьютере с Windows 10, а также Outlook, 2016: Вот ключ реестра работает как необходимо, и я могу выбрать «Выполнить скрипт». Так что я вижу, это все еще работает. Но мне это нужно для моего компьютера с Windows 7.
Sascha
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

голосов
0

ответ
28

Просмотры

No exclusive rights after removing tables

В MS Access 2007 Я импортировал несколько файлов CSV. Этот импорт действительно создают ошибки импорта, поскольку некоторые поля имеют обширный текст, который не может быть сохранен в мемо поле. Для этих ошибок, MS Access создает новые таблицы с ошибками импорта для каждого файла, который он импортирует. Я создал подводную лодку, которая удаляет таблицы ошибок импорта и, в общем, работает отлично. Что не в порядке является то, что после того, как код запуска я больше не администратор базы данных, и я в первую очередь необходимо закрыть базу данных, прежде чем я смогу продолжить дальнейшее развитие на базе. Sub DelteTbls () On Error GoTo DelteTbls_Error Dim дб Как DAO.Database Dim TDF As DAO.TableDef Set дб = CurrentDb () Установить объект базы данных "Чистые таблицы ошибок импорта. Для каждого TDF В db.TableDefs Если (tdf.Name Like «*» и «импорт» & "*") Тогда DoCmd.DeleteObject воздействующие, tdf.Name End If Next On Error GoTo 0 SmoothExit_DelteTbls: Set дб = Nothing DoCmd.SetWarnings Правда Exit Sub DelteTbls_Error: MsgBox "Ошибка" и Err.Number & "(" & Err. Описание и «) в процедуре DelteTbls» Резюме SmoothExit_DelteTbls End Sub сообщения я получаю после выполнения этого кода является Microsoft Access не может сохранить изменения дизайна или сохранить новый объект базы данных, как другой пользователь имеет открытый файл. Чтобы сохранить изменения дизайна или сохранить на новый объект, вы должны иметь эксклюзивный доступ к файлу. Это странно, так как я единственный пользователь базы данных и никто другой вошел. Что я делаю не так? Имя End If Next On Error GoTo 0 SmoothExit_DelteTbls: Set дб = Nothing DoCmd.SetWarnings Истинного Выхода Sub DelteTbls_Error: MsgBox "Ошибка" & err.number & "(" & Err.Description & ") в процедуре DelteTbls" Резюме SmoothExit_DelteTbls End Sub В сообщение я получаю после выполнения этого кода является Microsoft Access не может сохранить изменения дизайна или сохранить новый объект базы данных, как другой пользователь имеет открытый файл. Чтобы сохранить изменения дизайна или сохранить на новый объект, вы должны иметь эксклюзивный доступ к файлу. Это странно, так как я единственный пользователь базы данных и никто другой вошел. Что я делаю не так? Имя End If Next On Error GoTo 0 SmoothExit_DelteTbls: Set дб = Nothing DoCmd.SetWarnings Истинного Выхода Sub DelteTbls_Error: MsgBox "Ошибка" & err.number & "(" & Err.Description & ") в процедуре DelteTbls" Резюме SmoothExit_DelteTbls End Sub В сообщение я получаю после выполнения этого кода является Microsoft Access не может сохранить изменения дизайна или сохранить новый объект базы данных, как другой пользователь имеет открытый файл. Чтобы сохранить изменения дизайна или сохранить на новый объект, вы должны иметь эксклюзивный доступ к файлу. Это странно, так как я единственный пользователь базы данных и никто другой вошел. Что я делаю не так? Err.Number & «(» & Err.Description & «) в процедуре DelteTbls» Резюме SmoothExit_DelteTbls End Sub Сообщения я получаю после выполнения этого кода является Microsoft Access не может сохранить изменения дизайна или сохранить новый объект базы данных в качестве другого пользователя имеет открытый файл. Чтобы сохранить изменения дизайна или сохранить на новый объект, вы должны иметь эксклюзивный доступ к файлу. Это странно, так как я единственный пользователь базы данных и никто другой вошел. Что я делаю не так? Err.Number & «(» & Err.Description & «) в процедуре DelteTbls» Резюме SmoothExit_DelteTbls End Sub Сообщения я получаю после выполнения этого кода является Microsoft Access не может сохранить изменения дизайна или сохранить новый объект базы данных в качестве другого пользователя имеет открытый файл. Чтобы сохранить изменения дизайна или сохранить на новый объект, вы должны иметь эксклюзивный доступ к файлу. Это странно, так как я единственный пользователь базы данных и никто другой вошел. Что я делаю не так? Чтобы сохранить изменения дизайна или сохранить на новый объект, вы должны иметь эксклюзивный доступ к файлу. Это странно, так как я единственный пользователь базы данных и никто другой вошел. Что я делаю не так? Чтобы сохранить изменения дизайна или сохранить на новый объект, вы должны иметь эксклюзивный доступ к файлу. Это странно, так как я единственный пользователь базы данных и никто другой вошел. Что я делаю не так?
Jasper
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

ответ
26

Просмотры

RegEx Запрос возврата п-й матч

В принципе, у меня есть регулярное выражение выражения в запросе доступа, который тянет код продукта из длинной строки текста. Существует до 10 кодов в каждой строке и мне нужно десять полей в моем запросе, чтобы тянуть каждый из десяти кодов. До сих пор я могу только получить его, чтобы вытащить первый или последний код, изменив Global = True | Ложь. Код, я использую ниже: Функция extSKU (_ Комментарии As Variant) Dim SKU_re Как Новый RegExp SKU_re.Pattern = "\ п \ г {4,5} [AZ] {0,1}" SKU_re.Global = False SKU_re.IgnoreCase = True Dim SKU_m Для каждого SKU_m В SKU_re.Execute (Комментарии) extSKU = Replace (Обрезка (UCase (SKU_m.Value)), "Завершена By:", "") Next End Function Любая помощь очень ценится!
Jack Diamond
1

голосов
1

ответ
30

Просмотры

Перемешайте возврата результатов - Доступ

Мне нужно, чтобы совпасть работник с задачей в небольшой Microsoft Access DB, который я построил. По сути, у меня есть список из 45 потенциальных задач, и у меня есть 25 сотрудников. Что мне нужно: Каждый сотрудник, чтобы иметь по крайней мере одну задачи Нет сотрудник, чтобы иметь более двух Уметь рандомизации результатов каждый раз, когда я выполнить запрос (так же люди не получают последовательно один и ту же задачу) Моя структура таблицы : Сотрудники - ж / поля: ID, Имя задачи - ж / поля: ID, местоположение, групповая, задача, которую я знаю, что это глупый вопрос, но я действительно борюсь. Я искал через SO и Google за помощью, но не увенчались успехом. У меня нет способа связать вместе сотрудников задач, поскольку каждый сотрудник способен каждой задачи, поэтому я собирался: SELECT * из сотрудников SELECT * из задач Союза COUNT (Имя)
Jerry M.
1

голосов
1

ответ
31

Просмотры

Добавление PDF в Outook

Можете ли вы помочь мне с этим кодом, я новичок пытается решить это. Я создаю PDF файл из конкретного листа (первая страница), и я хотел бы, чтобы добавить его к электронной почте с CC-адресом. Sub zapisz () Dim ThisFile As String Dim OutApp как объект Dim OutMail как объект ThisFile = Range ( "b8"). Value & "" & Range ( "B9"). Value & "" & Range ( "g8"). Value & "" & Range ( "h8") Значение ActiveWorkbook.ExportAsFixedFormat Тип:. = xlTypePDF, FileName: = _ ThisFile, Качество: = _ xlQualityStandard, IncludeDocProperties: = False, IgnorePrintAreas: = False, _ С: = 1 To: = 1, OpenAfterPublish: = False Набор OutApp = CreateObject ( "Outlook.Application") Set OutMail = OutApp.CreateItem (0) С OutMail .to = "" .CC = "[email protected]" .BCC = "" .Subject = "OFERTA ххх" .Body = "Szanowni Państwo, ш załączniku przesyłam ofertę." не .Attachments.Add (ThisFile & "*" и ".pdf") .Display End With On Error GoTo 0 Set OutMail = Nothing Set OutApp = Ничто с применением .ScreenUpdating = True .EnableEvents = True End With End Sub`
Ada
1

голосов
0

ответ
54

Просмотры

В Access 2007, как я могу изменить * Design View * Вкладка порядок управления ..?

Там в океан веб-страниц, которые объясняют, как изменить порядок табуляции в Access 2007 формы контроля, как они функционируют в форме представления. Но ... может вкладка порядок управления быть изменен, как они функционируют в режиме конструктора ..? Я клавиатура урод и предпочитаю вкладки с помощью элементов управления в режиме конструктора, а также использовать клавиатуру как можно больше, чтобы настроить свойство элемента управления. Но в сложных формах с большим количеством элементов управления, отсутствие очевидной табуляции может раздражать. Я сейчас работаю в форме с более чем 50 управлением, и если бы я мог табуляцию через них в любом виде узнаваемого того, было бы весьма признателен.
spinjector
1

голосов
1

ответ
33

Просмотры

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

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

голосов
0

ответ
34

Просмотры

VBA - какой элемент он может быть после «!»

Я работаю на файл первенствовать и встретил проблему с диаграммой. Поскольку файл передается мне, я открыл ось метки диаграммы, чтобы увидеть, как график сделан. И я вижу, метка оси «file.xlsm»! Company_list, странное дело в том, что файл не имеет никакого листа под названием company_list. Я проверил код VBA файла, нет такой переменной называется company_list либо. Мне интересно, что элемент может быть за «!» без предъявления каких-либо следов в файле?
exteralvictor
1

голосов
1

ответ
237

Просмотры

MS Access Query ColumnHidden недвижимости

Я написал некоторые VBA код, который (а) устанавливает SQL для запроса на основе входных переменных, (б) открывает запрос в режиме таблицы, и (с) скрывает или показывает столбцы на основе «истинных» / «ложных» значений флажки в другой таблице. Это рассматривает свойство «ColumnHidden», как описано в Microsoft Dev Center помощи. Dev Center Помощь - ColumnHidden Property При выполнении кода (а) и (б) работают, как предполагалось. Тем не менее, я получаю ошибку 3270, «Свойство не найдено» на линии fld.Properties ( «ColumnHidden») = False при выполнении (с). Я был не в состоянии решить эту проблему, даже при попытке методы обработки ошибок, описанной в Dev Center. Пожалуйста помоги! Dim rsLabel Как DAO.Recordset, rsCOlumn Как DAO.Recordset Dim qryCPQ Как DAO.QueryDef Dim strLabel As String, strSQL As String, dbOpenSnapshot) Если не rsCOlumn.EOF Тогда Если rsCOlumn! [CPQ_Publish] = False Тогда fld.Properties ( "ColumnHidden") = True End If End If rsCOlumn.Close Set rsCOlumn = Nothing Set FLD = Nothing Next х Набор д.б.н. = Nothing DoCmd. Закрыть acForm, «CM_frmCollectionReportPre», предложение acSaveNo Per Eric Von Asmuth, я уже добавил в обработке ошибок, поэтому код в настоящее время выглядит следующим образом. Тем не менее, я все еще получаю ошибку 3270 на том же месте. Не исправил вещь. Dim rsLabel Как DAO.Recordset, rsCOlumn Как DAO.Recordset Dim qryCPQ Как DAO.QueryDef Dim strLabel As String, strSQL As String, strColumn As String Dim FLD Как DAO.Field Dim д.б.н. Как DAO.Database Dim прп Как DAO.Property Dim AttArray Как вариант Dim х As Integer Const conErrPropertyNotFound = 3270 '
jhalf2008
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

ответ
25

Просмотры

Установка диапазона с помощью двух ячеек из разных листов

Я пытаюсь пройти через календарь, чтобы установить диапазон перемещение 13 дня для каждого столбца. Если диапазон 13 дня идет за текущий месяц, я хочу, чтобы иметь возможность перейти на следующий лист, и найти меня, где это заканчивается. Я, однако, не в состоянии ссылаться на оба листа одновременно. Установите rng13 = .Range (start13, finish13) Я планирую запустить булеву проверку в этом диапазоне 13 дней, чтобы увидеть, если все 13 дней истинны. Любая помощь или рекомендации будут оценены с ActiveWorkbook.Worksheets (я) Set onePersonLoop = .Cells (RowNum, colNum) .offset (-1) .END (xlToRight) .offset (, -2) Установите onePersonLoop = .Cells (RowNum, colNum) .offset (-1) .END (xlToRight) .offset (, -2) Для RowNum = 6 24 Шаг 6 Установка nameLocation = .Cells (RowNum, colNum) .offset (-2, -1) .EntireRow. Клетки (1, 2) Для colNum = 4 до onePersonLoop. Установите start13 = .Cells (RowNum,
jiwanheo
1

голосов
1

ответ
53

Просмотры

Давать уравнения конкретных чисел

Я новичок в VBA, и я бы очень признателен за помощь. Во-первых, я должен упомянуть, что я использую OFFICE 2016 года я использовал Macro запись, чтобы создать макрос, который копирует выделенный уравнение затем вставляет таблицу (один ряд, две колонки) и отрегулировать его, чтобы удалить границы. После того, что макро пасты скопированное уравнение в первой ячейке и перемещается в следующую ячейку и вставить пустое уравнение (которые пользователь вставляет нужное количество уравнения в нем). Он отлично работает, за исключением, пока он не достигнет стадии, где он должен вставить скопированный уравнение. Каждый раз, когда я запускаю макрос я получаю сообщение об ошибке времени выполнения: 6335 и макро-брейки, и когда я его отладки, это линия, которая нарушает процедуру: Selection.PasteAndFormat (wdFormatOriginalFormatting) после отладки, когда я нажал на кнопку продолжения / запуска, он завершает работу по мере необходимости. Ниже макрос я использую. Заранее спасибо. Sub MacroEQNUMBER () '' MacroEQNUMBER Macro '' Dim ГСЧ Как диапазона, если Selection.Range = "" Тогда Selection.HomeKey Unit: = wdLine Selection.EndKey Unit: = wdLine, Extend: = wdExtend End If Set RNG = Selection.Range RNG .Cut ActiveDocument.Tables.Add Диапазон: = Selection.Range, NumRows: = 1, NumColumns: = _ 2, DefaultTableBehavior: = wdWord9TableBehavior, AutoFitBehavior: = _ wdAutoFitFixed С Selection.Tables (1) Если .style "Таблица Энергосистемы" Тогда .style = "Таблица Сетка" End If .ApplyStyleHeadingRows = True .ApplyStyleLastRow = False .ApplyStyleFirstColumn = True .ApplyStyleLastColumn = False .ApplyStyleRowBands = True .ApplyStyleColumnBands = False .Borders.
Warlock-993

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