运行时错误5和循环

时间:2017-06-15 16:29:42

标签: excel vba excel-vba excel-2016

我对VBA相当新,但是编写python时有一定的舒适感。声明变量在两者之间有点不同,我相信这是我的大部分斗争所在。

这是一个两部分的头痛:

1)第一个令人头痛的是当我尝试运行下面的代码段时,我得到“运行时错误'5':无效的过程调用或参数”

cll.Offset(0, 1).Copy (Worksheets("Sheet7").cells(Rows.Count & "L").End(xlUp).Row)

我已经尝试将“复制”的所有内容设置为变量,然后调用该变量,但我仍然收到相同的错误。我已经查看了许多有关引用列中最后一个空白单元格的教程和指南,我的代码与我找到的相匹配,但错误另有说明。

2。)我正在处理的更大的代码图片包含一个下拉列表(仅用于引用50个状态),一个引用该列表中的状态的代码,一个counta工作表函数,以及一个单独的工作表,每个州都有一个县。

我想在下拉列表中选择一个州,将特定州的县从单独的工作表(“Fips_Reference”)复制到我的活动表(“Sheet7”)。从那里我需要它来引用我的counta(pcount)并确定实际包含数据的单元格数。例如,如果counta = 2,那么我需要将每个县粘贴两次,以便该列从上到下读取“County1”“County1”“County2”“County2”,依此类推。我一直在努力尝试将循环和if语句嵌套在一起好几天并继续被难倒。

Sub fipsloop2()

pcount = WorksheetFunction.CountA(Worksheets("StateSource").Range("b3:b8"))


Dim cll As Range
Dim rng As Range
Dim fip As Range
Dim state As Range

Set rng = Worksheets("FIPS_Reference").Range("c2:c3280")
Set fip = Worksheets("FIPS_Reference").Range("d2")
Set state = Worksheets("Sheet7").Range("C1")


For Each cll In rng
    If cll = state Then
        cll.Offset(0, 1).Copy (Worksheets("Sheet7").cells(Rows.Count & "L").End(xlUp).Row)
        ActiveCell.Offset(1, 0).Select
        'If pcount > 1 Then
    End If

Next


End Sub

我已经安排了for ...每个循环来查看包含状态名称的一系列单元格,然后查看状态名称是否与列表中的状态匹配。如果匹配,它将向右偏移并将县值复制到我的活动工作簿中的单元格。我已经尝试过do和for each以及if循环和逻辑的组合,但我相信这对VBA来说是一种天真的伤害我。

任何帮助都会很棒,提前谢谢你!

1 个答案:

答案 0 :(得分:0)

我找到了上述所有内容的答案。我是个天才!如果有人需要提供类似情况的帮助,请参考下面的代码和此链接(Change the way a VBA script pastes data

Sub fipsloop2()

pcount = WorksheetFunction.CountA(Worksheets("StateSource").Range("b3:b8"))

Dim cll As Range
Dim rng As Range
Dim fip As Range
Dim state As Range
Dim x As Integer
Dim i As Integer


Set rng = Worksheets("FIPS_Reference").Range("c2:c3280")
Set fip = Worksheets("FIPS_Reference").Range("d2")
Set state = Worksheets("Sheet7").Range("C1")

x = 3

For Each cll In rng
    If cll = state Then
        For i = 1 To pcount
            cll.Offset(0, 1).Copy (Worksheets("Sheet7").cells(x, 12))
            x = x + 1
        Next i
    End If
Next cll

End Sub