2016-07-03 2 views
-1

私は情報の領域をコピーし、値を貼り付けようとしています。 forループの最後で特定のセルの値を変更することによって、その周りの領域にある情報も変更します。したがって、私はこの462回のループを繰り返し、別のワークシート上の各領域を特別に貼り付けようとしており、各領域は以前に貼り付けられた行(行2から始まる)よりも下の行に貼り付けられます。しかし、実際にプログラムを実行すると、絶対に何も起こりません。誰もこれで助けることができますか?Ran時にVBAコードが機能しない?

本当にありがとうございました、以下のコードは貼り付けられます:

Sub timeToLoop() 
Dim currentVal As Integer, count As Integer, countStr As String, i As Integer 
count = 1 
    For i = 1 To i = 462 
     count = count + 1 
     countStr = CStr(count) 
     currentVal = Range("V34").Value 
     Worksheets("Query_Tab").Range("V34:BQ34").Copy 
      With Worksheets("Compiled") 
       .Range(.Cells(countStr, "A"), _ 
        .Cells(countStr, "AV")).PasteSpecial xlValues 
      End With 
     Worksheets("Query_Tab").Range("V34").Value = currentVal + 1 
    Next i 
End Sub 
+0

なぜ「.Cells()」で数字を使用するのですか?それは可能ですが、 '.Range()'のためにもっと...そして、 'Count'が常にi + 1に等しい場合、2つの変数を使う必要はありません。 –

+0

値をコピーするには、コピー/ペーストする必要はありません。単純な 'SheetB.RangeB.value = SheetA.RangeA.Value'が行います。 –

答えて

1

あなたの問題は、Forループであり、それは次のようになります。

For i = 1 To 462 

は、他のマイナーな問題/ヒントがあります。

  • 行/列のカウンターはタイプである
      ロング
    • countStr
    • を使用する必要はありませんがV34のフォーマットに依存します:BQ34は、あなただけの、例えば、Range("V34:BQ34").Copy後に先の範囲を割り当てることができますRange("A1:A10").Copy Range("B1:B10")
    • Range()メソッド内で文字列連結を使用できます。例えばRange("A" & count & ":" & "AV" & count)
  • +1

    'i = 462'という文は' False'と評価され、0にキャストされ、ループは 'For i = 1 To 0'に評価されます。これを確認するには、 'Step -1'を追加します。ループは2回実行されます。 – Comintern

    1

    あなたは

    currentVal =レンジ( "V34")の参照を欠落していた。バリュー

    currentVal =ワークシート( "Query_Tab" を参照してください).Range( "V34")。値

    私はPatrickに同意します。あなたは本当に過度に複雑なことをしています。

    Sub timeToLoop() 
        Application.ScreenUpdating = False 
    
        Dim currentVal As Integer, i As Integer 
        With Worksheets("Query_Tab") 
    
         For i = 2 To 463 
          currentVal = .Range("V34").Value 
    
          .Range("V34:BQ34").Copy Worksheets("Compiled").Range("A" & i & ":" & "AV" & i) 
    
          .Range("V34").Value = currentVal + 1 
         Next i 
    
        End With 
    
        Application.ScreenUpdating = True 
    End Sub 
    
    +0

    あなたはYouTubeでできるだけ多くのWiseOwlsチュートリアルを視聴する必要があります。 [Ranges](https://www.youtube.com/watch?v=c8reU-H1PKQ&list=PLNIs-AWhQzckr8Dgmgb3akx_gFMnpxTN5&index=5)に1つあります。私は[Smart Indenter](http://www.oaltd.co.uk/indenter/indentpage.asp)もお勧めします。あなたのコードをインデントする無料ダウンロードです。 –

    関連する問題