允许数据从用户定义的列移至预定义的列

时间:2018-08-21 11:24:08

标签: excel vba user-defined

这是我在这个出色网站上的第一条帖子。 希望您能帮我解决我要设置的代码。如果这是重复的话,请提前道歉,但是我认为搜索该网站没有类似的情况。

在子例程中,我确定用户可以选择一列。我希望它采用F:F列格式(但是实际列将由用户指定,因此F列是一个示例)。我提出了以下建议:

Dim rng As Range

On Error Resume Next

Set rng = Application.InputBox(Prompt:="Select the column", Title:="Selecting the column", Type:=8)

On Error GoTo 0

接下来,我希望选定的列移至Z列。对于本练习,我们编写了以下内容:

Range("F2:F" & Cells(Rows.Count, "F").End(xlUp).Row).Copy Destination:=Range("Z2")

因此,我希望从用户选择的列开始的数据移动到我们指定的列(当前为Z列)。数据从第2行开始,第1行为标题。

我试图链接上面的2,但是不确定如何继续。

感谢您的投入。

2 个答案:

答案 0 :(得分:0)

您在这里:

Sub test()

Dim rng As Range

On Error Resume Next

Set rng = Application.InputBox(Prompt:="Select the column", Title:="Selecting the column", Type:=8)

If rng Is Nothing Then Exit Sub

On Error GoTo 0

rng.Copy Destination:=Range("Z:Z")

End Sub

所以基本上您在正确的轨道上。

答案 1 :(得分:0)

以下代码从所选列获取列号,创建从第2行到使用该列的最后一行的范围,并将内容复制到Col“ Z”。

  Sub copyCol()
    Dim rng As Range, col As Long
    Set rng = Application.InputBox(Prompt:="Select the column", _ 
                                   Title:="Selecting the column", Type:=8)
    If rng Is Nothing Then Exit Sub    ' User pressed Cancel.      
    col = rng.Column

    With ActiveSheet
        ' Get number of rows in selected column
        Dim lastRow As Long
        lastRow = .Cells(.Rows.Count, rng.Column).End(xlUp).row 
        ' Copy the selected column, starting at row 2, to Col Z
        If lastRow > 1 then
            .Range(.Cells(2, col), .Cells(lastRow, col)).Copy Destination:=.Range("Z2")
        End If
    End With
End Sub

(请注意,在此版本中,用户只需选择该列的单个单元格即可)