#excel #vba
Вопрос:
Исходный код работает. При изменении, чтобы пропустить копирование столбцов, я получаю ошибку.
Я хотел бы пропустить некоторые столбцы при копировании на временный лист для электронной почты.
Оригинальный код.
' header row
Set ws = wb.Worksheets("New_IDs")
With wsBody.Range("A1:N1")
.Value2 = ws.Range("B2:O2").Value2
.Font.Bold = True
End With
iMailRow = 1
Измененный кодекс.
' header row
Set ws = wb.Worksheets("New_IDs")
With wsBody.Range("A1:N1")
.Value2 = ws.Range("B2:J2" And "N2:O2").Value2
.Font.Bold = True
End With
iMailRow = 1
Комментарии:
1. @Luuk я все еще получаю ошибку, и она по-прежнему копирует все значения между столбцами
2. Я предполагаю, что ваш измененный код содержит 2 диапазона ячеек, поэтому вам, вероятно, придется сделать это дважды, т. Е.
wsBody.Range("A1:I1").Value2 = ws.Range("B2:J2").Value2
ТогдаwsBody.Range("J1:K1").Value2 = ws.Range("N2:O2").Value2
3. Поскольку ваш диапазон не является непрерывным, он состоит из разных
.Areas
областей ; каждая область представляет собой единый непрерывный диапазон (всего два, в вашем примере используется синтаксис, предложенный @luuk)..Value2
, затем возвращает только значения из первой области. Вам нужно будет повторить области или повторить процесс, как предлагает @Raymond Wu.4. Привет Реймонд и pdtcaskey ваше предложение сработало, однако оно работает с заголовком, но теперь фактическое значение данных, в которое оно копируется; iMailRow = iMailRow 1 ws.Диапазон(«B» amp; i amp; «:O» amp; i). Скопируйте wsBody. Диапазон («A» и iMailRow) строк. Добавить i, CStr(i)
5. или как скрыть столбцы между двумя диапазонами, прежде чем они будут скопированы в HTML-файл электронной почты
Ответ №1:
Скопируйте каждый смежный диапазон отдельно
imailrow = imailrow 1
ws.Range("B" amp; i amp; ":J" amp; i).Copy wsbody.Range("A" amp; imailrow)
ws.Range("N" amp; i amp; ":O" amp; i).Copy wsbody.Range("J" amp; imailrow)
Lines.Add i, CStr(i)
Комментарии:
1. Привет, это сработало большое спасибо за CDP1802 и Реймонда