如何使用vba隐藏和复制复选框

时间:2016-03-04 16:27:28

标签: vba excel-vba excel-2010 excel

我的基本列带有复选框(我的代码中的D列),我想将带有checbox的列复制到其他列,但列D必须隐藏(所有数据包括复选框) )。

这里的问题是:

  1. 我不知道如何隐藏checbox,当我隐藏列时,checbox仍然可见。
  2. 当我对列进行处理时,列中的checbox不会被复制
  3. 这是我实际使用的功能。

        Private Sub cmdAddNewXref_Click()
        Columns("D:D").Select
        Selection.Copy
    
        i = 3
        Cells(2, i).Select
        Do
            i = i + 1
        Loop While Cells(2, i) <> ""
        Cells(2, i).Select
    
        'MsgBox ActiveCell.Column
    
        Columns(i - 1).Select
        Columns("D:D").Select
        Selection.Copy
    
        Columns(i).Select
        ActiveSheet.Paste
        Selection.EntireColumn.Hidden = False
    
        Application.CutCopyMode = False
    
        Range("A1").Select
        End Sub
    

    但最重要的是,我想做什么呢?

    编辑1:实际上,多亏了Scott Holtzman,我可以隐藏列中的复选框。

2 个答案:

答案 0 :(得分:0)

选择粘贴,粘贴特殊值,以隐藏检查其相信的.visible属性。

希望这会有所帮助。

从我收集到的内容......将行复制到其他地方,而不是控件,然后他想隐藏复制的行。 :)

    Option Explicit

    Sub test()


    '   From above code in yours I will be col number

    Dim i As Integer

i = 5

Columns("A:A").Copy

Sheet2.Activate
ActiveSheet.Cells(1, i).PasteSpecial xlPasteValues

End Sub

答案 1 :(得分:0)

给这个是一个镜头。可能有更多理想的方法来做到这一点,但我测试了它并让它工作。

对细胞范围有一些假设,因此您需要进行调整以满足您的确切电子表格规格。

Option Explicit

Private Sub cmdAddNewXref_Click()

    Dim i As Integer
    Dim ws As Worksheet

    Set ws = Worksheets("mySheet") 'change as needed

    'find next column to copy
    i = 3
    Do
        i = i + 1
    Loop While ws.Cells(2, i) <> ""

    With ws.Columns("D:D")
        .EntireColumn.Hidden = False
        .Copy Columns(i)
    End With

    'copy checkbox in column D
    Dim cb As Shape
    Set cb = ws.Shapes("CheckBox1") 'change name as needed
    cb.Copy
    ws.Cells(4, i).Select 'assumes checkbox should be in row 4, change to wherever it is on column D for you
    ws.Paste

    ws.Columns("D:D").EntireColumn.Hidden = True


End Sub