Forループに複数のDoループを含むVBAコード全体を挿入する

ヴェダントダワン

私のコードは現在、製品コードと製品の数量を要求し、消費者が得る総コストと割引を表示します。ただし、「購入したさまざまな種類の製品」を尋ねるForループを使用する必要があるため、現在のコードをこのForLOOPに配置します。つまり、ループを通過するたびに、購入した特定の製品に関する情報を取得して表示する必要があります。私は自分のコードをForループに挿入しようとして何時間も費やしましたが無駄になりました。私はかなり経験が浅く、自分自身を教えているので、どんな助けでも非常に役に立ちます!ありがとう!

Sub Product() 
Dim ProductCode  As String 
Dim ErrorCheck As Boolean 
Dim Cost As Double, MinQty As Double, Discount As Double 
Dim MyRange As Range 
Dim found As Variant 
Dim QtyBought As Integer 
Dim TotalCost As Double 

Set MyRange = Worksheets("Data").Cells '<-- the range containing the data provided


Do '"main" outer loop
    Do '"Product code input" inner loop
        ProductCode = Application.InputBox("Enter the Product's code.", Type:=2) '<--| force string input
    Loop While ProductCode = "" 


    found = Application.Match(ProductCode, MyRange.Columns(1), 0) '<-- try getting ow index of prodcut code in 1st column of "MyRange" range
    If IsError(found) Then '<--| if no match found...
        MsgBox "The value entered was not found!" & vbCrLf & vbCrLf & "Please, try again", vbCritical + vbOKOnly '<-- inform the user and loop again
    Else '<--| otherwise
        With MyRange(found, 1) '<-- reference the matching cell
            Cost = .Offset(0, 1).Value '<--| store "Cost from cell 1 column to the right of the referenced one
            MinQty = .Offset(0, 2).Value '<--| store "MinQty" from cell 2 columns to the right of the referenced one
            Discount = .Offset(0, 3).Value '<--| store "Discount" from cell 3 columns to the right of the referenced one
        End With 
    End If 
Loop While IsError(found) 

 'Obtaining QtyBought Value
QtyBought = InputBox("Enter the QtyBought ordered.") 


 'Error checking
Do Until ErrorCheck = False 
    If IsNumeric(QtyBought) = False Then 
        ErrorCheck = True 
        MsgBox ("Not a valid entry.") 
        QtyBought = InputBox("Enter the QtyBought ordered.") 
    Else 
        ErrorCheck = False 
    End If 
Loop 
 'finding out the cost of the prodcut ordered.

TotalCost = Selection.Value * QtyBought 
Discount = Selection.Value * Discount 
 'Obtaining discount rate
If QtyBought > MinQty Then 
    MsgBox ("You purchased " & QtyBought & "units of product " & ProductCode & ".The total cost is " & Format(TotalCost, "$#,##0") & "Because you purchased at least " & MinQty & "units, you get a discount of " & Discount & "on each unit") 

Else 
    MsgBox ("Sorry, You don't qualify for any discount") 

End If 


End Sub 
user3598756

ProductName次のように、入力ループ内で「外部」サブが「内部」サブを呼び出すようにします。

Option Explicit

Sub Products()
    Dim ProductCode  As String
    Do '"main" outer loop
        Do '"Product code input" inner loop
            ProductCode = Application.InputBox("Enter the ProductCode's code [input space to end]", Type:=2) '<--| force string input
        Loop While ProductCode = ""
        If ProductCode <> " " Then Product ProductCode
    Loop While ProductCode <> " "
End Sub

Sub Product(ProductCode As String)
    Dim Cost As Double, MinQty As Double, Discount As Double
    Dim MyRange As Range
    Dim found As Variant
    Dim QtyBought As Integer
    Dim TotalCost As Double

    Set MyRange = Worksheets("Data").UsedRange '<-- the range containing the data provided

    found = Application.Match(ProductCode, MyRange.Columns(1), 0) '<-- try getting ow index of prodcut code in 1st column of "MyRange" range
    If IsError(found) Then '<--| if no match found...
        MsgBox "The value entered was not found!" & vbCrLf & vbCrLf & "Please, try again", vbCritical + vbOKOnly '<-- inform the user and loop again
        Exit Sub '<--| exit sub to get another product code
    End If

    With MyRange(found, 1) '<-- reference the matching cell
        Cost = .Offset(0, 1).Value '<--| store "Cost from cell 1 column to the right of the referenced one
        MinQty = .Offset(0, 2).Value '<--| store "MinQty" from cell 2 columns to the right of the referenced one
        Discount = .Offset(0, 3).Value '<--| store "Discount" from cell 3 columns to the right of the referenced one
    End With

     'Obtaining QtyBought Value
    QtyBought = Application.InputBox("Enter the QtyBought ordered.", Type:=1) '<--| force numeric input

     'finding out the cost of the product ordered.
    TotalCost = Selection.Value * QtyBought '<--shouldn't this be: TotalCost = Cost * QtyBought
    Discount = Selection.Value * Discount '<--shouldn't this be: Discount = TotalCost * Discount
     'Obtaining discount rate
    If QtyBought > MinQty Then
        MsgBox ("You purchased " & QtyBought & "units of product " & ProductCode & ".The total cost is " & Format(TotalCost, "$#,##0") & "Because you purchased at least " & MinQty & "units, you get a discount of " & Discount & "on each unit")
    Else
        MsgBox ("Sorry, You don't qualify for any discount")
    End If
End Sub

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

forループに複数のレコードを挿入する

分類Dev

entityManagerを使用して@GeneratedValueを含むテーブルに複数のレコードを挿入する

分類Dev

linq2sqlを使用して複数のファイルを含む複数のテーブルにレコードを挿入する方法

分類Dev

forループを使用してSQLServerデータベースに複数のレコードを挿入する

分類Dev

パターンの前にスペース、パイプ、grep、sedコマンドを含む複数の複雑な行を挿入する方法

分類Dev

ユーザー入力時にwhileループを含む複数のプロセスを終了する

分類Dev

MySQLはwhileループで複数のレコードを挿入します

分類Dev

複数の画像をアップロードするためにMYSQLテーブルにIDを挿入する

分類Dev

テーブルに複数のレコードを挿入するLaravel

分類Dev

forループを使用してデータベーステーブルに複数のレコードを挿入する方法

分類Dev

マルチコマンドで使用するための入力変数を含むxargsループ

分類Dev

プレースホルダーに画像を挿入するためのVBAコード

分類Dev

パンダ:グループ内の条件を含む列を繰り返し挿入する複雑な質問

分類Dev

nvarcharフィールドに複数のドットを含む数値を挿入できません

分類Dev

最初のループの後に広告コードを挿入する

分類Dev

$ currentDateを含むフィールドをMeteorのMongoDBコレクションに挿入する

分類Dev

春に追加情報を含む複数のファイルをそれぞれアップロードする

分類Dev

Oracleにシーケンスを含む複数の行を挿入する

分類Dev

<script>を含むコードをiFrameに挿入する際のJavascriptエラー

分類Dev

forループの変数を別の変数名に挿入する

分類Dev

Word2010でキャプション用のスペースを含む複数の画像を挿入する

分類Dev

Spark Scalaの複数行にレコードを含むCSVファイルをロードする方法は?

分類Dev

「do」の前にコードを含む奇妙な(無限の)whileループ

分類Dev

Forループを使用して複数の子Divを含むDivを追加する

分類Dev

Yii2の複数のテーブルに同じデータレコードを挿入する方法

分類Dev

forループなしでロード時に剣道グリッドに複数の行を挿入します

分類Dev

2つのテーブルに複数のレコードを挿入するPostgres関数

分類Dev

PHP複数の入力を含む複数のファイルのアップロード

分類Dev

Knex.js:forループで複数のデータを挿入する方法は?

Related 関連記事

  1. 1

    forループに複数のレコードを挿入する

  2. 2

    entityManagerを使用して@GeneratedValueを含むテーブルに複数のレコードを挿入する

  3. 3

    linq2sqlを使用して複数のファイルを含む複数のテーブルにレコードを挿入する方法

  4. 4

    forループを使用してSQLServerデータベースに複数のレコードを挿入する

  5. 5

    パターンの前にスペース、パイプ、grep、sedコマンドを含む複数の複雑な行を挿入する方法

  6. 6

    ユーザー入力時にwhileループを含む複数のプロセスを終了する

  7. 7

    MySQLはwhileループで複数のレコードを挿入します

  8. 8

    複数の画像をアップロードするためにMYSQLテーブルにIDを挿入する

  9. 9

    テーブルに複数のレコードを挿入するLaravel

  10. 10

    forループを使用してデータベーステーブルに複数のレコードを挿入する方法

  11. 11

    マルチコマンドで使用するための入力変数を含むxargsループ

  12. 12

    プレースホルダーに画像を挿入するためのVBAコード

  13. 13

    パンダ:グループ内の条件を含む列を繰り返し挿入する複雑な質問

  14. 14

    nvarcharフィールドに複数のドットを含む数値を挿入できません

  15. 15

    最初のループの後に広告コードを挿入する

  16. 16

    $ currentDateを含むフィールドをMeteorのMongoDBコレクションに挿入する

  17. 17

    春に追加情報を含む複数のファイルをそれぞれアップロードする

  18. 18

    Oracleにシーケンスを含む複数の行を挿入する

  19. 19

    <script>を含むコードをiFrameに挿入する際のJavascriptエラー

  20. 20

    forループの変数を別の変数名に挿入する

  21. 21

    Word2010でキャプション用のスペースを含む複数の画像を挿入する

  22. 22

    Spark Scalaの複数行にレコードを含むCSVファイルをロードする方法は?

  23. 23

    「do」の前にコードを含む奇妙な(無限の)whileループ

  24. 24

    Forループを使用して複数の子Divを含むDivを追加する

  25. 25

    Yii2の複数のテーブルに同じデータレコードを挿入する方法

  26. 26

    forループなしでロード時に剣道グリッドに複数の行を挿入します

  27. 27

    2つのテーブルに複数のレコードを挿入するPostgres関数

  28. 28

    PHP複数の入力を含む複数のファイルのアップロード

  29. 29

    Knex.js:forループで複数のデータを挿入する方法は?

ホットタグ

アーカイブ