一行ごとにマクロボタンを設置して、ボタンをクリックするとその行にあるデータをIEへ転記するというVBAを作りました。
このボタンを2行目から30行目まで設置して、クリックするごとにその行のデータを転記するようにしたく、転記するための処理をFunctionプロシージャで作って、1つのボタンごとにCallで呼び出すようなVBAを作成したのですが、Callを数十個作成するのが非常に手間で、どうにかもっとシンプルなコードにできないかアドバイスを頂きたく質問させて頂きました。
VBA
1Function tenki(ByVal a As Integer, ByVal d As Integer, ByVal e As Integer, ByVal f As Integer, ByVal g As Integer) As Integer 2 3 Dim colSh As Object 4 Dim win As Object 5 Dim objIE As Object 6 Set colSh = CreateObject("Shell.Application") 7 8 '開いているすべてのウインドウに対して処理する 9 For Each win In colSh.Windows 10 11 On Error Resume Next 'Window取得エラー対策 12 '開いているファイルの種類がHTMLなら処理を実行する 13 If TypeName(win.document) <> "HTMLDocument" Then 14 Else 15 16 '開いているサイトのURLが下記だったら 17 If win.LocationURL = "https://www.shopjapan.co.jp/shop/customer/entry" Then 18 19 'このウインドウをobjIEとして指定する 20 Set objIE = win 21 22 objIE.document.getElementsByName("customerLastNameKana")(0).Value = Left(Range("D" & d).Value, 3) 23 objIE.document.getElementsByName("customerFirstNameKana")(0).Value = Right(Range("D" & d).Value, 4) 24 objIE.document.getElementsByName("address1")(0).Value = Mid(Range("E" & e).Value, 4) 25 objIE.document.getElementsByName("address2")(0).Value = Range("F" & f).Value 26 objIE.document.getElementsByName("address3")(0).Value = Range("G" & g).Value 27 28 '都道府県コードをAddressへ代入 29 Dim Address As Object 30 Dim Addresses As Object 31 Set Addresses = objIE.document.getElementById("todofukenCd") 32 33 'リスト項目名で選択 E列にある都道府県名を選択 34 For Each Address In Addresses.getElementsByTagName("option") 35 If Address.innerText = Left(Range("E" & e).Value, 3) Then 36 Address.Selected = True 37 End If 38 Next 39 40 '処理を中断してFor~Nextを終了する 41 Exit For 42 43 End If 44 45 End If 46 47 On Error GoTo 0 48 49 Next 50 51 'ウインドウが見つからなければ 52 If objIE Is Nothing Then 53 54 'メッセージを表示して 55 MsgBox "入力するページが見つかりません" 56 57 '処理を終了する 58 Exit Function 59 60 End If 61 62 Range("A" & a).Interior.Color = RGB(255, 0, 0) 63End Function 64Sub 転記1() 65 Dim a As Integer 66 Dim d As Integer 67 Dim e As Integer 68 Dim f As Integer 69 Dim g As Integer 70 71 a = 2 72 d = 2 73 e = 2 74 f = 2 75 g = 2 76 77 Call tenki(a, d, e, f, g) 78 79End Sub 80Sub 転記2() 81 Dim a As Integer 82 Dim d As Integer 83 Dim e As Integer 84 Dim f As Integer 85 Dim g As Integer 86 87 a = 3 88 d = 3 89 e = 3 90 f = 3 91 g = 3 92 93 Call tenki(a, d, e, f, g) 94 95End Sub 96Sub 転記3() 97 Dim a As Integer 98 Dim d As Integer 99 Dim e As Integer 100 Dim f As Integer 101 Dim g As Integer 102 103 a = 4 104 d = 4 105 e = 4 106 f = 4 107 g = 4 108 109 Call tenki(a, d, e, f, g)
以上になります。
お忙しいところ恐縮ですが、何卒よろしくお願い申し上げます。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/27 01:18
2020/09/27 01:51
2020/09/27 02:04
2020/09/27 02:08
2020/09/27 03:41
2020/09/27 05:25
2020/10/03 00:18