2012-02-14 3 views
1
A  B 

1.  count 
2.  _ 
3.  Count 
4.  _ 
5.  _ 
6.  Labels 
7.  2 
8.  3 
9.  5 
10. 6 
11. shorttest 
12. midtest 
13. longtest 
14. coldtest 
15. hottest 
16. Resultant 

私はコードを書こうとしましたが、それがうまくいくかどうかは分かりません。VBAはn番目の行を予測し、パラメータもコピーできますか?

今私がしたいことは、A11をG16にコピーして別のワークシートにコピーしたいと思っていることです。テスト境界として考えることができます。

しかし、テストが行​​われていないため、longtestやcoldtestのようなパラメータが欠落していることがあります。次

A  B 

1.  count 
2.  _ 
3.  Count 
4.  _ 
5.  _ 
6.  Labels 
7.  2 
8.  3 
9.  5 
10. 6 
10. shorttest 
11. midtest 
12. hotest 
13. Resultant 

に示されており、また、

があることに注意取るか...などmorning_testなどnight_test、などの試験パラメータがあることができ、これらの測定値は行わテストから得られ、手動でページに追加されます。また、「結果」は常に最後の行に表示されます。

私のコードに示されているように、VBAがA11の代わりにn番目の "A_"値(つまりA1、A2、A3 ... An)を処理できるかどうかは疑問でしたか?そして、それは(結果には、この例でshorttest用)テストパラメータをコピーすることができ

マイコード

次のとおりです。

Sub macro1() 
    Dim valuecell As Range 
    Dim irow As Range 
    Dim iCol As Range 

    For irow = 1 To 6 
     For iCol = 1 To 1 
      If valuecell = "1" Or _ 
       valuecell = "2" Or _ 
       valuecell = "3" Or _ 
       valuecell = "4" Or _ 
       valuecell = "5" Or _ 
       valuecell = "6" Then 
       irow = irow + 1 
      ElseIf valuecell = "Resultant" Then 
       Range("A11:G13").Copy Destination:=Worksheets("sheet4").Range("A11") 
      Else 
       irow = irow + 1 
      End If 
     Next 
    Next 
End Sub 
+0

ご迷惑をおかけして申し訳ございませんが、ご不明な点がありました。あなたは何をするつもりでしたか? – JMax

答えて

4

あなたの質問ではなく不明であるが、私が正しく理解していれば、あなたはすべてをコピーすること1から6までの数字と「結果」までの数字が別のシートに表示されます。次のコードはこれを行います。

Sub macro1() 
    Dim valuecell As Range 
    Dim irow As Long 
    Dim iFirstRowToCopy As Long 
    Dim iLastRowToCopy As Long 
    Dim vValuesToCopy As Variant 

    irow = 1 ' Initialise 

    'Loop until you meet numbers between 1 and 6 
    Do 
     Set valuecell = Sheet1.Cells(irow, 1) 
     If valuecell >= 1 And valuecell <= 6 Then 
      Exit Do 
     End If 
     irow = irow + 1 
    Loop 

    'Loop until you get out of numbers between 1 and 6 
    Do 
     Set valuecell = Sheet1.Cells(irow, 1) 
     If valuecell >= 1 And valuecell <= 6 Then 
      'Do nothing 
     Else 
      iFirstRowToCopy = irow ' Found the first row to copy 
      Exit Do 
     End If 
     irow = irow + 1 
    Loop 

    'Loop until you meet "Resultant" 
    Do 
     Set valuecell = Sheet1.Cells(irow, 1) 
     If valuecell = "Resultant" Then 
      iLastRowToCopy = irow ' Found the last row to copy 
      Exit Do 
     End If 
     irow = irow + 1 
    Loop 

    'Read the values that need copying 
    vValuesToCopy = Sheet1.Cells(iFirstRowToCopy, 1) _ 
     .Resize(iLastRowToCopy - iFirstRowToCopy + 1, 1) 
    'Write the values to the destination sheet 
    Worksheets("Sheet4").Cells(iFirstRowToCopy, 1) _ 
     .Resize(iLastRowToCopy - iFirstRowToCopy + 1, 1) = vValuesToCopy 
End Sub 
+0

ありがとうございます。私は何を意味してうれしいですか?私はこのコードを試してみよう!ありがとうございました! – user1204868

+0

質問が不明なときでも1位になる+1: –

+0

@ Jean-FrançoisCorbett:私はあなたが何を意味しているか絶対に知っています:P –

関連する問題