VBA — печать нескольких диапазонов

Ниже приведен код 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
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
1
0
87
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это должно сделать это:

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 25.11.2022 10:23

user20594516, мне нужен пример вашего "множественного выбора диапазонов". А что именно "перекрывается"?

john-project 25.11.2022 15:41

У меня был случай выбрать более 10 случайных столбцов, и, скажем, вместо вывода 10 появится 8, а остальные останутся скрытыми. Но замена xIndex = xIndex + 1 на xIndex = xIndex + xRng2.Columns.Count помогла мне, и, похоже, это работает. Спасибо!

user20594516 26.11.2022 16:47

пользователь 20594516. Добро пожаловать и спасибо за обратную связь.

john-project 27.11.2022 00:59

Другие вопросы по теме