2017-06-15 76 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