[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『マクロ記述の省略もしくは繰り返しをしたい』(あずま)
VBAでIEを起動し、それぞれの項目にセル内の情報を記入するー…という
具体的には注文書のデータをIEブラウザに転記する動作をさせています。
CSVの表からの転記なのですが
違う注文番号ならば、新規ウィンドウを立ち上げるところから
同じ注文番号ならば、商品情報を2点目として増やすだけで下の行へ。という分岐のため以下のような記述をしています。
後半★★★からの記述は現状1行ずつ書いているのですが重複記述が多すぎて無駄と思います。
これらを省略もしくは簡略化する記述はないものでしょうか?
Public Sub()
'IEを格納する変数(オブジェクト型) Dim ie As Object 'IEオブジェクトのドキュメントプロパティを変数docに保存出来るようにする Dim doc As HTMLDocument 'IEオブジェクトのインプットプロパティを、変数inpに保存出来るようにする Dim inp As HTMLInputElement 'IEオブジェクトのプルダウンセレクト選択用 Dim objInpSel As HTMLSelectElement
'セル位置参照用の変数(ループ処理向け Dim Process_Line As Long '重複注番の行カウント(2行目以降の型式数量代入用 Dim Proc_Count As Integer
'シートを変数に格納出来るようにする Dim WScsv As Worksheet
'これ以降「変数WS1」を省略して記入 With WScsv
'--------------------------------------------------------------------------------
'セル(変数,14)の値が一個上のセルと=一致もしくは≠不一致で判断
For Process_Line = 2 To .Cells(1, 14).End(xlDown).Row
If .Cells(Process_Line, 14).Value <> .Cells(Process_Line - 1, 14).Value Then
Proc_Count = 1
'----------------------------------------------------------------
' 製品情報入力
'---------------------
'商品情報の1行目だけを代入 '型式 Set inp = doc.getElementsByName("txt_standard_1")(0) inp.Value = .Cells(Process_Line, 21)
'数量 Set inp = doc.getElementsByName("txt_accept_num_1")(0) inp.Value = .Cells(Process_Line, 22)
'------------------------------------------------------------------------------------------
' ★★★
' 直上の行と注番が一致した場合は以下の処理のみを行ってループの最初に戻り、変数に1を加える
'----------------------------------------------------------------------------------------------------------
Else
Proc_Count = Proc_Count + 1
If Proc_Count = 2 Then 'セル(変数,1)の値が一個上のセルと=等しいなら2行目の型式と数量を代入 '型式 Set inp = doc.getElementsByName("txt_standard_2")(0) inp.Value = .Cells(Process_Line, 21) '数量 Set inp = doc.getElementsByName("txt_accept_num_2")(0) inp.Value = .Cells(Process_Line, 22) End If
If Proc_Count = 3 Then '3行目の型式と数量を代入 '型式 Set inp = doc.getElementsByName("txt_standard_3")(0) inp.Value = .Cells(Process_Line, 21) '数量 Set inp = doc.getElementsByName("txt_accept_num_3")(0) inp.Value = .Cells(Process_Line, 22) End If
If Proc_Count = 4 Then '4行目の型式を代入 Set inp = doc.getElementsByName("txt_standard_4")(0) inp.Value = .Cells(Process_Line, 21) '数量 Set inp = doc.getElementsByName("txt_accept_num_4")(0) inp.Value = .Cells(Process_Line, 22) End If
If Proc_Count = 5 Then '5行目の型式を代入 Set inp = doc.getElementsByName("txt_standard_5")(0) inp.Value = .Cells(Process_Line, 21) '数量 Set inp = doc.getElementsByName("txt_accept_num_5")(0) inp.Value = .Cells(Process_Line, 22) End If
End If Next
End With End Sub
< 使用 Excel:Office365、使用 OS:Windows10 >
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.