0

その中に while wend ループがある for next ループを使用しています。問題は、最初のデータを入力してから、vbYes を選択して挿入を繰り返したい場合です。ループは繰り返されますが、値が再び i=32 に設定され、while{condition} が false であっても while ループが続行されます。例、

コンボボックス1.値 = {a,b,c,d}

i={32,33,34,35} ~> i は行番号に設定されます。

最初のカウントでは、c をコンボボックス 1 に挿入し、combobox1.value=c と cells(34,2).value=c を指定してループを続行します。しかし、2回目のデータの挿入を続けることを選択すると、次のループに戻りますが、i = 32の値を設定し、cells(32,2).value = cを与えてからwhileループに進みますが、 cells(32,2).value=a の正しい値のため、ループは続行されないとします。誰でも助けることができますか?

Dim i As Long
Dim prod As String
Dim RowNo As Long
Dim sh1 As Worksheet
Dim sh2 As Worksheet

Application.ScreenUpdating = False


prod = ComboBox1.Value

For i = 32 To 35

  While ComboBox1.Value = Worksheets("Input").Cells(i, 2).Value

    Rows(i).Select
    Selection.Insert shift = xlDown

    With Worksheets("Input")
    '~insert data
    .Range("B" & i) = ComboBox1.Text
    .Range("C" & i) = TextBox1.Text
    .Range("D" & i) = TextBox2.Text
    .Range("E" & i) = TextBox3.Text
    .Range("F" & i) = TextBox4.Text
    .Range("G" & i) = TextBox5.Text
    .Range("H" & i) = ComboBox2.Text
    .Range("I" & i) = TextBox6.Text
    .Range("J" & i) = TextBox7.Text
    .Range("K" & i) = TextBox8.Text

    End With

    Workbooks(prod & " Input.xlsm").Activate

    '~select row number from another worksheet
    RowNo = Workbooks(prod & " Input.xlsm").Worksheets("Input").Cells(31, 3).Value

   Set sh1 = Workbooks(prod & " Input.xlsm").Worksheets("Input")
   Set sh2 = Workbooks("MasterInput.xlsm").Worksheets("Input")

 '~copy inserted data from master input to product input
   sh1.Range(sh1.Cells(RowNo, 2), sh1.Cells(RowNo, 11)).Value = sh2.Range(sh2.Cells((i, 2), sh2.Cells(i , 11)).Value

    If MsgBox("One record written to Master Input. Do you want to continue entering data?", vbYesNo) = vbYes Then
       GoTo repeat1:

        Else
          Unload Me
    End If

    Exit Sub
  Wend
Next

 Application.ScreenUpdating = True
repeat1:
End Sub
4

2 に答える 2

0

最後に!置くのを忘れた単純な1行のコマンド。

forループの上に挿入

Workbooks("MasterInput.xlsm").Activate
For i = 32 To 35

今動作します!最初のブックから取得することを想定している2番目のワークブックから取得したi値。

于 2013-03-01T09:13:50.487 に答える
0

メモリからフォームをアンロードしています.続行したくない場合はフォームをアンロードしてください..

if msgbox("you want to continue",vbyesNo)=vbyes then

 goto repeat1

そうしないと

 unload me

終了する場合

于 2013-03-01T05:57:39.693 に答える