2014-09-08 2 views
0

Я запрограммировал небольшой инструмент в VBA, который генерирует лист с некоторыми статистическими данными. Я хочу, чтобы автоматически печатаемого листа, поэтому я поставил VPageBreak так:Как установить VPageBreak между двумя конкретными столбцами?

ActiveWindow.View = xlPageBreakPreview 
ActiveSheet.VPageBreaks(1).DragOff Direction:=xlToRight, RegionIndex:=1 
ActiveWindow.View = xlNormalView 

Сначала это работало нормально. Но содержимое этого сгенерированного рабочего листа основано на данных на другом листе, и когда эти данные изменились, команда DragOff выкинула ошибку. Ошибка произошла из-за того, что VPageBreak теперь автоматически устанавливается в месте, где Dragoff невозможен.

Мне нужен надежный код, не зависящий от исходных данных ... Есть ли способ сказать «Я хочу этот VPageBreak после столбца E»?

Заранее спасибо

ответ

1

Для начала, попробуйте это ...

Sub SetPageBreaks() 
Dim MySh As Worksheet 

    Set MySh = ActiveWorkbook.Worksheets("Sheet1") 
    MySh.VPageBreaks.Add MySh.[E1] 
    MySh.VPageBreaks.Add MySh.[J1] 

    MySh.HPageBreaks.Add MySh.[A5] 
    MySh.HPageBreaks.Add MySh.[A10] 

    ' removing breaks 

    ' note ... page breaks are only counted and accessible as objects 
    ' when they intersect with a Print range 
    MySh.PageSetup.PrintArea = "A1:J10" 
    MySh.HPageBreaks(1).Delete 

End Sub 

Это добавляет вертикальные seperations страницы перед тем столбцы E и J. Нет необходимости, чтобы сделать VBA переключатель в PageBreakView, просто установите свойство VPageBreaks.

Вы уже догадались, Ther также свойство HPageBreak для объекта Worksheet ...

further reading

+0

Спасибо, что работает, но тогда моя проблема заключается в том, что я до сих пор VPageBreak (1) в неправильном положении , Я пробовал VPageBreak (1). Удалить, но он генерирует ошибку. Если я устанавливаю VPageBreak (1) .Location ничего не происходит вообще. :( – oHoodie

+0

Но как? Ни .Location, ни .Dragoff xlToLeft, 1 не оказывают никакого влияния на VPageBreak. – oHoodie

+0

отредактированный ответ ... убедитесь, что у вас установлен диапазон печати, который пересекает разрывы страниц. – MikeD

Смежные вопросы