2017-06-15 124 views
0

我对VBA相当陌生,但对编写python有适度的舒适感。声明变量在两者之间有点不同,我相信这是我大部分的斗争所在。运行时错误5和循环的一般复制/粘贴

这是由两部分组成头痛:

1)第一头疼的是,当我尝试运行下面的代码段,我得到“运行时error'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,那么我需要每个县粘贴两次,以便该列从上到下读取“县1”,“县1”,“县2”,“县2”等。我一直在努力尝试嵌套循环,并且如果对方内部的陈述持续了好几天,并且继续被困住。

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 

我已经安排了对...每个循环来看看包含状态的名称的单元格区域,然后看看,如果状态的名字在我的名单中的状态匹配。如果匹配,它将向右偏移并将县的值复制到我的活动工作簿中的单元格。我尝试过每种做法的组合,如果循环和逻辑,但我相信这是我对VBA的天真伤害我。

任何帮助将是伟大的,提前谢谢!

+0

您是否试图复制整行? 'cll.offset(0,1).EntireRow.Copy'可能工作。现在,你有一个试图粘贴到“Row”的值。如何让它被粘贴? – BruceWayne

+0

@BruceWayne我只想复制那个单元格。我已经能够通过vba获得该参考,没有任何问题。然而,我只能将这个值粘贴到一个单元格中,并且当它循环时,它将粘贴到与之前相同的单元格中。这就是为什么我想添加代码片段来查找我想要粘贴的列中最后一个空单元格的原因。 –

回答

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