Ниже приведен код VBA, найденный в Интернете, который полезен для печати желаемых диапазонов из Excel, но не уверен, как его улучшить, чтобы выполнить следующее условие. При выполнении он выводит несколько вариантов на одну страницу, но не умещает их должным образом. После копирования первого выбора второй появляется в последующей строке этой страницы и так далее. Например, если два случайных столбца (A и C), содержащие по 10 значений в каждом, выбраны в качестве желаемых диапазонов для распечатки, второй выбранный столбец (C) будет помещаться под первым столбцом (A). Можно ли изменить его так, чтобы второй (и следующий выбор) располагался в новом столбце справа от первого выбора/столбца?
'VBA Code
Sub printOutRange()
Dim xRng1 As Range
Dim xRng2 As Range
Dim xNewWs As Worksheet
Dim xWs As Worksheet
Dim xIndex As Long
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set xWs = ActiveSheet
Set xNewWs = Worksheets.Add
xWs.Select
xIndex = 1
For Each xRng2 In Selection.Areas
xRng2.Copy
Set xRng1 = xNewWs.Cells(xIndex, 1)
xRng1.PasteSpecial xlPasteValues
xRng1.PasteSpecial xlPasteFormats
xIndex = xIndex + xRng2.Rows.Count
Next
xNewWs.Columns.AutoFit
xNewWs.PrintPreview
xNewWs.Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Это должно сделать это:
Dim xRng1 As Range
Dim xRng2 As Range
Dim xNewWs As Worksheet
Dim xWs As Worksheet
Dim xIndex As Long
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set xWs = ActiveSheet
Set xNewWs = Worksheets.Add
xWs.Select
xIndex = 1
For Each xRng2 In Selection.Areas
xRng2.Copy
Set xRng1 = xNewWs.Cells(1, xIndex)
xRng1.PasteSpecial xlPasteValues
xRng1.PasteSpecial xlPasteFormats
xIndex = xIndex + 1
Next
xNewWs.Columns.AutoFit
xNewWs.PrintPreview
xNewWs.Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
user20594516, мне нужен пример вашего "множественного выбора диапазонов". А что именно "перекрывается"?
У меня был случай выбрать более 10 случайных столбцов, и, скажем, вместо вывода 10 появится 8, а остальные останутся скрытыми. Но замена xIndex = xIndex + 1 на xIndex = xIndex + xRng2.Columns.Count помогла мне, и, похоже, это работает. Спасибо!
пользователь 20594516. Добро пожаловать и спасибо за обратную связь.
Спасибо за ваш вклад. Выполнение модифицированного исправил проблему с положением, но при использовании его с несколькими диапазонами выбора некоторые столбцы перекрываются, т. Е. Появляются не все выбранные столбцы. Есть идеи?