2017-05-24 8 views
0

私はさまざまな例を見てきましたが、私のニーズに合っていません。 複数のセルに基づいてシートを作成する必要があります。 たとえば、シート1のC5セルでは2を、c6では5を、c7では8を返しました。 シート2では、列eに "e001、e002"という行を作成します。それ以降のセルa3 "E101、.... E105"、 "E401 .... E408" まだvbaを使っていない方が良いですね。EXcelの別のシートにある入力に基づいて行を挿入する

Sample sheet enter image description here

Sample sheet 2 enter image description here

後、私は書かれたが、私の期待に働いていませんでしたコードです。

Public Sub InsertTagNumbers() 
    Dim ehv_breaker As Long 
    Dim row_no As Long 
    Dim breaker11kv As Long 
    Dim breaker33kv As Long 
    Dim breaker415V As Long 
    Dim breaker415E As Long 
    Dim carry11 As Long 
    Dim carry33 As Long 
    Dim carry415 As Long 
    Dim counter1 As Integer 
    Dim counter2 As Integer 

    ehv_breaker = 0 
    row_no = 5 
    Sheets("Sheet2").Range("b5").Select 

    For ehv_breaker = 1 To Sheets("Sheet1").Range("c6").Value 
     Sheets("sheet2").Cells(row_no, 2).Value = Sheets("sheet1").Cells(6, 4) & 
     Format$(ehv_breaker, "00") 
     ActiveCell.Offset(1, 0).Select 
     row_no = row_no + 1 
    Next ehv_breaker 

    For breaker11kv = 1 To Sheets("Sheet1").Range("c7").Value 
     Sheets("Sheet2").Cells(row_no, 2).Value = Sheets("sheet1").Cells(7, 4) & 
     Format$(breaker11kv, "00") 
     ActiveCell.Offset(1, 0).Select 
     row_no = row_no + 1 
     Next breaker11kv 
    carry11 = breaker11kv 

    For breaker33kv = 1 To Sheets("Sheet1").Range("c8").Value 
     Sheets("sheet2").Cells(row_no, 2).Value = Sheets("sheet1").Cells(8, 4) & 
     Format$(breaker33kv, "00") 
     ActiveCell.Offset(1, 0).Select 
     row_no = row_no + 1 
     Next breaker33kv 
    carry33 = breaker33kv 

    For breaker415V = 1 To Sheets("Sheet1").Range("c9").Value 
     Sheets("sheet2").Cells(row_no, 2).Value = Sheets("sheet1").Cells(9, 4) & 
     Format$(breaker415V, "00") 
     ActiveCell.Offset(1, 0).Select 
     row_no = row_no + 1 
     Next breaker415V 
    carry415 = breaker415V 

    For breaker415E = 1 To Sheets("Sheet1").Range("c10").Value 
     Sheets("sheet2").Cells(row_no, 2).Value = Sheets("sheet1").Cells(10, 4) & 
     Format$(breaker415E, "00") 
     ActiveCell.Offset(1, 0).Select 
     row_no = row_no + 1 
    Next breaker415E 

    'For breaker11kv > breaker11kv To Sheets("Sheet1").Range("c11").Value + carry11 
    Do 
     Sheets("sheet2").Cells(row_no, 2).Value = Sheets("sheet1").Cells(11, 4) & 
     Format$(breaker11kv, "00") 
     ActiveCell.Offset(1, 0).Select 
     row_no = row_no + 1 
     breaker11kv = breaker11kv + 1 
    Loop Until breaker11kv > Sheets("Sheet1").Cells("c11").Value + carry11 
    'Loop Until breaker11kv > Sheets("Sheet1").cells(c11").Value + carry11 
    'Next breaker11kv 

    For breaker33kv = breaker33kv To Sheets("Sheet1").Range("c12").Value + carry33 
     Sheets("sheet2").Cells(row_no, 2).Value = Sheets("sheet1").Cells(12, 4) & 
     Format$(breaker33kv, "00") 
     ActiveCell.Offset(1, 0).Select 
     row_no = row_no + 1 
    Next breaker33kv 

    For breaker415V = breaker415V To Sheets("Sheet1").Range("c13").Value + carry415 
     Sheets("sheet2").Cells(row_no, 2).Value = Sheets("sheet1").Cells(13, 4) & 
     Format$(breaker415V, "00") 
     ActiveCell.Offset(1, 0).Select 
     row_no = row_no + 1 
    Next breaker415V 

    MsgBox "ehv_breaker=" & ehv_breaker 
    Application.ScreenUpdating = False 
End Sub 
+0

ようこそStackOverflow。これは無料のコード作成サービスではありませんのでご注意ください。しかし、私たちは、仲間のプログラマー(そして志望者)が自分のコードを書くのを助けることを熱望しています。 [良い質問をするにはどうすればよいですか](http://stackoverflow.com/help/how-to-ask)のヘルプトピックをお読みください。その後、達成したいタスクを完了するために、これまでに書いたVBAコードで質問を更新してください。私たちはあなたを待っています。あなたのコード*を完成させるのに役立ちます。ちょうど、**あなたが**この仕事を自動化するためにVBAを必要とすることに注意してください。だから、あなたはいくつかの学習を開始する必要があります... – Ralph

+0

同じ更新していないのは残念です。しかし、私が働いていたコードを追加して、誰かが助けてくれることを願っています。 – Andee

答えて

0

最初のループはうまく見えますが、Do .. Loop Untilがありますが、それはやや珍しいことです。

混乱のように見える後のループは:たとえば:

For breaker33kv = breaker33kv To Sheets("Sheet1").Range("c12").Value + carry33 

はどのようにして、それ自体として未初期化変数を開始することができますか? 1から始めるべきか?

For breaker33kv = 1 To Sheets("Sheet1").Range("c12").Value 

また、carry変数が何であるかについてもわかりません。同期と非同期のブレーカーをグループ化する予定であれば、コードはSheet1!7:7の直後にSheet1!11:11を処理してからSheet1!8:8に進みます。

関連する問題