VBA - 复制一系列单元格(Random Row)

时间:2013-11-01 21:26:48

标签: excel vba random range cells

第一次使用,如果我的问题不符合格式指南,我会道歉。

我有几张每天都要改变的数据,我希望和解。 在一个特定的表单中,详细列出了客户列表。 作为对账的一部分,我需要随机选择其中一家公司并列出其中的某些细节

这些详情载于第3,5,7,14和20栏。

下面我粘贴了代码,在那里我计算了一天(最后一行)中有多少客户,并随机抽取客户并列出数据。

但是我一直收到运行时错误450:错误的数字争议或无效的属性分配。

任何人都可以帮助我吗?

'Regency
        Dim Regrows As Integer
        Dim RegCust As Integer
        Dim Regcustomer As Range

        AgedDebtors.Activate
        AgedDebtors.Sheets("Regency").Activate
        Regrows = Range("C" & Rows.Count).End(xlUp).Row
        RegCust = Int((Regrows - 45 + 1) * Rnd + 45)

        With AgedDebtors.Sheets("Regency")
            Regcustomer = Range(Cells(RegCust, 3), Cells(RegCust, 5), _
                                Cells(RegCust, 7), Cells(RegCust, 14), _
                                Cells(RegCust, 20))
            Regcustomer.Activate
        Selection.Copy

        End With

1 个答案:

答案 0 :(得分:1)

在为对象变量赋值时需要使用Set,但主要问题是Range()无法按照您希望的方式运行。

Set Regcustomer = .Range(Replace("C?,E?,G?,N?,T?", "?", RegCust))

您不需要激活工作表来复制范围,也不需要激活范围

    Dim Regrows As Integer
    Dim RegCust As Integer
    Dim Regcustomer As Range

    With AgedDebtors.Sheets("Regency")
        Regrows = .Range("C" & .Rows.Count).End(xlUp).Row
        RegCust = Int((Regrows - 45 + 1) * Rnd + 45)
        .Range(Replace("C?,E?,G?,N?,T?","?",RegCust)).Copy
    End With