2017-06-15 1 views
0

私はVBAをかなり新しくしていますが、Pythonを書くことで中程度の快適さを持っています。変数の宣言は、2つの間で少し異なっており、私はこれが私の闘いの大部分が存在するところだと信じています。実行時エラー5とループ用の一般的なコピー/貼り付け

これは、2つの部分から頭痛である:最初の頭痛は、私は以下のコードのセクションを実行しようとすると、私は「:無効なプロシージャ呼び出しまたは引数をランタイム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」というように、各郡を2回貼り付ける必要があります。私は数日間ループと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 

私は状態の名前が含まれているセルの範囲を見て、その後、状態の名前は私のリストに状態が一致するかどうかを確認するために検索するため...各ループに配置されています。一致するものがあれば、右側にオフセットして、アクティブなワークブックのセルにcountyの値をコピーします。私はしばらくの間、それぞれとループとロジックの組み合わせを試しましたが、私はそれが私を傷つけているVBAへの私のナイーブであると信じています。

何か助けがあれば、事前にありがとう!

+0

行全体をコピーしようとしていますか? 'cll.offset(0,1).EntireRow.Copy'が動作するかもしれません。今は、行に貼り付けようとする単一の値があります。どのように貼り付けたいのですか? – BruceWayne

+0

@ BruceWayne私はそのセルだけをコピーしたいです。私は問題なくvbaを通してその参照を引き出すことができました。しかし、私は1つのセルに値を貼り付けることしかできず、ループしたときに以前と同じセルにペーストしました。そのため、貼り付けたい列の最後の空のセルを探すためのコードスニペットを追加したいのです。 –

答えて

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 
関連する問題