По каким причинам UnMerge не будет работать в Access VBA? - PullRequest
0 голосов
/ 30 сентября 2019

У меня есть макрос VBA в Access 2016 (на самом деле, написанный для более ранней версии, но сейчас я работаю с 2016). Он настраивает несколько электронных таблиц Excel и перемещает их в другое место, а также записывает некоторые журналы в таблицу SQL.

Одним из изменений является объединение нескольких объединенных ячеек. Странно то, что эти файлы Excel не могут обрабатываться время от времени (не всегда), когда эта база данных Access запускается программно (из другого макроса в другой базе данных Access). Когда я запускаю его вручную или пошагово выполняю отладку, он всегда работает - поэтому я запутался и не могу найти причину.

Я попытался заменить "MergeCells = False" на "Unmerge "- это то же самое. Я также попытался создать новый файл ACCDE - безрезультатно.

Это часть кода, в которой происходит разуплотнение.

xlsh.Select
xlsh.Range("A1:D1").Select
xlsh.Outline.ShowLevels RowLevels:=2
With Selection
    .UnMerge
End With
xlsh.Range("A1").Value = "Alfa"
xlsh.Range("B1").Value = "Bravo"
xlsh.Range("C1").Value = "Golf"
xlsh.Range("D1").Value = "Tango"
xlsh.Range("A1").Select
If xlsh.Range("A1").Value = "" Then GoTo error

Когда не удается разгрузить ячейку, значение выигралему не присвоено, и в конце она пуста, поэтому продолжает помечаться как «ошибка».

1 Ответ

1 голос
/ 30 сентября 2019

Попробуйте это:

xlsh.("A1:D1").Unmerge

Вместо

xlsh.Select
xlsh.Range("A1:D1").Select
xlsh.Outline.ShowLevels RowLevels:=2
With Selection
    .UnMerge
End With

Последние 2 строки являются ненужными, так как:

If xlsh.Range("A1").Value = "" Then GoTo error

Не будет верно, как выприсваивают значение несколькими строками раньше. (* 1 010 *)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...