2017-09-28 96 views
0

这是整个代码,以防您想要查看它:https://pastebin.com/TbewRRCc。我的问题是,检查后,我的集合确实只包含我想要的列。所以,如果我有三列我想在那里,columnsToCopy.Count将= 3,当我只是复制columnToCopy(3)。复制结果将只是一列。但是当我通过循环来创建这三列的联合时,这些列之间的所有列也将在联合中。联盟正在抓住我的选择之间的所有范围

例如。假设我正在复制第1列,第13和第30列。粘贴表格将是从1到30的所有列。这不是我想要的。我只想要列1,13,和30 ...所以这三个列总共为这个特殊的Colelction。

关于什么可能会导致我的问题,以及如何解决它的任何想法?

  For arrayLoop = LBound(iq_Array) To UBound(iq_Array) 
       ' Take copy of potential ref and adjust to standard if required 
       checkStr = iq_Array(arrayLoop) 
       If hasIQs And Left(checkStr, 3) <> "iq_" Then checkStr = "iq_" & checkStr 

       ' Look for existence of corresponding column in local copy array 
       pCol = 0 
       For iCol = 2 To colNumb 
        If checkStr = IQRef(iCol) Then 
         pCol = iCol 
         Exit For 
        End If 
       Next iCol 

       If pCol > 0 Then 
        ' Paste the corresponding column into the forming table 
        columnsToCopy.Add ShRef.Columns(pCol).EntireColumn 
       End If 

      Next arrayLoop 

      If columnsToCopy.Count > 1 Then     'data was added 
       ' Copy table 

Dim unionVariable As Range 

Set unionVariable = columnsToCopy(1) 


For k = 1 To columnsToCopy.Count 
    Set unionVariable = xlApp.Union(unionVariable, columnsToCopy(k)) 
Next k 

unionVariable.Copy 
Next k 

unionVariable.Copy    

回答

1

根据您解释这对我的作品


Option Explicit 

Public Sub TestUnion() 
    Dim ws1 As Worksheet, ws2 As Worksheet, k As Long 
    Dim unionVariable As Range, columnsToCopy As Collection 

    Set ws1 = Sheet1 
    Set ws2 = Sheet2 

    Set columnsToCopy = New Collection 

    columnsToCopy.Add ws1.UsedRange.Columns(1) 
    columnsToCopy.Add ws1.UsedRange.Columns(3) 
    columnsToCopy.Add ws1.UsedRange.Columns(5) 

    Set unionVariable = columnsToCopy(1) 

    For k = 2 To columnsToCopy.Count 
     Set unionVariable = Union(unionVariable, columnsToCopy(k)) 
    Next k 

    unionVariable.Copy ws2.Cells(1)  'copy AND paste 
End Sub 

(只包含您需要的列集合),我只是改变了For循环从2开始,进行贴在与复制相同的行

+0

所以你说当你粘贴它只粘贴3列?第1,3,5列?我真的不明白为什么它不适合我......我能上传我正在使用的文件,这样你就可以看到我在说什么了吗? – Pinlop

+0

[PPT幻灯片病毒扫描](https://www.virustotal.com/#/file/ff5125e3234eb4795dbd330be554dbc90197eafb60cea1cf036da9389a92165f/detection),[Excel文件病毒扫描](https://www.virustotal.com/#/file/24d41c015f53fe0621d91a0db8661701b6e858e98edc9e961f703e1da8706a58/检测),[PPT幻灯片文件](https://filetea.me/n3wZluzhVXFTpmjlUPmTxzKew),[Excel文件](https://filetea.me/n3wG3zbxnKoRuuYhonhFf7PHQ) – Pinlop