我对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来说是一种天真的伤害我。
任何帮助都会很棒,提前谢谢你!
答案 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