2014-01-28 141 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 

不僅列(b)中被選擇,但幾個是。數字有所不同,但從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

是的!就是這樣,我剛剛意識到這一點,然後回到這裏來評論它。謝謝 – 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 

編輯:

我的代碼複製整列並粘貼 「MySecondSheet」。如果你想複製標題,也許你需要複製行,而不是列。

你能提供截圖嗎?

1

從我收集的內容來看,您希望每隔6列選擇一個列,並在每個列中插入預定列值。

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