2014-01-28 4 views
0

Это должно быть очень просто, но я не могу найти способ выбрать только одну целую колонкуВыберите только один столбец

Мне нужно выполнить цикл и вставить скопированный столбец каждый n столбцов. Проблема заключается в том, что, когда я пишу

Dim a As Integer 
Dim b As Integer 


b = 1 
'a = InputBox("Insert number", "Insert number") 
a = 6 

While Application.CountA(Columns(b)) > 0 
    b = b + a 
    Columns(b).Select 
    b = b + 1 
Wend 

не только на колонке (б) выбирают, но некоторые из них. Число меняется, но от 1 до 10. Я не знаю, что здесь не так! Я пробовал много мелочей с тем же результатом.

+3

Я не уверен, что понимаю, что вы пытаетесь сделать. Команда 'Columns (b) .Select' будет выбирать только один столбец, соответствующий номеру, хранящемуся в переменной' b'. Вы должны объяснить, что вы пытаетесь сделать более подробно, например, цель цикла «While». –

+0

У меня много данных на листе, и мне нужно экспортировать его части через изображение. В начале есть заголовки, которые должны быть включены в каждую картинку, поэтому мне нужен макрос, который копирует столбец и вставляет его в каждую -а-столбцы. Извините, если я плохо объяснил. – Sturm

+0

Если вы хотите скопировать заголовки, возможно, вам нужно скопировать строку, а не столбец. Можете ли вы предоставить скриншот? – Makah

ответ

0

Из памяти, если вы меняете:

Columns(b).Select 

к:

Columns(b).EntireColumn.Select 

Тогда он может работать.

+0

К сожалению, это не работает. – Sturm

+0

@Sturm. У вас есть объединенные ячейки, которые пересекают колонку, которую вы пытаетесь выбрать? – MarkHone

+0

Да! Вот и все, я просто понял это и вернулся к SO, чтобы прокомментировать это здесь. спасибо – Sturm

0

Вы можете попробовать:

Dim a As Integer 
Dim b As Integer 

b = 1 : a = 6 

While Application.CountA(Columns(b)) > 0 
    b = b + a 
    Columns(b).Copy(Sheets("MySecondSheet").Columns(b).Cells(1,1)) 
    b = b + 1 

    Debug.Print "a = " & a & "; b = " & b ' just for debug your values 
Wend 

EDIT:

Мой код скопировать весь столбец и вставить его в "MySecondSheet". Если вы хотите скопировать заголовки, возможно, вам нужно скопировать строку, а не столбец.

Можете ли вы предоставить скриншот?

1

Из того, что я собираю, вы хотите выбрать каждый шестой столбец и вставить предварительно определенные значения столбцов в каждый из них.

Sub selectCols() 
    'b=1 is your starting column, 20 is the last column, step 6 makes it go up in 6's, if needs be, you can set this to a 
    For b = 1 To 20 Step 6 
     'I like to do this to ensure 100% there is no carry-over of selected cells from the previous run 
     Range("A1").Select 

     Columns(b).EntireColumn.Select 
     'do your pasting here 
    Next b 
End Sub 
Смежные вопросы