2016-08-31 3 views
0

У меня есть следующий скрипт, который устанавливает диапазон для копирования в электронную почту, однако мне требуется, чтобы этот диапазон находился в столбце 1 до 13, удаляя столбец 7 («1: 6», «8:13») Я пробовал все виды, чтобы исправить это, однако каждая попытка приводит к ошибке.Send HTML Email Range

Вот код, я использую

Set RangeCopy = Sheets("Applications").Range(Cells(1, 1), Cells(R, 13)).SpecialCells(xlCellTypeVisible) 

Любая помощь приветствуется. Спасибо.

ответ

2

Использование Union - довольно чистый способ сделать это. Ниже приведен пример кода с кодом.

Dim unionrng As Range 
    Set unionrng = Application.Union(Sheets("Applications").Range(Cells(1, 1), Cells(r, 6)), _ 
            Sheets("Applications").Range(Cells(1, 8), Cells(r, 13))) 
    Sheets("Applications").Range(unionrng.Address).SpecialCells (xlCellTypeVisible) 
1

У вас есть несколько вариантов - либо путем конкатенации адресов диапазона через запятую, либо создания отдельных диапазонов, и с использованием метода Union. Просмотрите статью How to: Refer to Multiple Ranges в справке Microsoft.

+0

Спасибо, я искал часы, пытаясь найти это. Это прекрасно работает. – Paul

1

Вы можете попробовать использовать Union в цикле, подобном этому.

Dim x As Long 
Dim y As Long 

For y = 1 To 13 
    For x = 1 To r 

     If y <> 7 Then 
      If RangeCopy Is Nothing Then 
      Set RangeCopy = cells(x, y) 
      Else 
      Set RangeCopy = Application.Union(RangeCopy, cells(x, y)) 
      End If 
     End If 

    Next x 
Next y