エクセルでデータの比較をしたい!マクロ作成中のお悩み

このQ&Aのポイント
  • エクセルで2つのシートにある同一の商品コードと在庫数を比較するマクロを作成中です。商品コードが合致した後、処理を抜けて次の商品コードを比較させたいのですが、下行にある商品コードを探し続けてしまいます。(データの総当りとなる)どの様に記述すれば良いのでしょうか
  • エクセルでデータの比較をするマクロを作成中ですが、同じ商品コードを探す処理がうまくいきません。商品コードが合致した後に処理を抜けて次の商品コードを比較させたいのですが、下行にある商品コードを探し続けてしまいます。解決方法を教えてください。
  • エクセルで2つのシートにある同じ商品コードと在庫数を比較するマクロを作成中ですが、下行にある商品コードを探し続けてしまいます。どのように記述すれば次の商品コードを比較させることができるでしょうか。解決策を教えてください。
回答を見る
  • ベストアンサー

エクセルでデータの比較をしたいです。お教え頂けないでしょうか

エクセルでデータの比較をしたいです。お教え頂けないでしょうか エクセルで2つのシートにある同一の商品コードと 在庫数を比較するマクロを作成中です。 シート1のA列にある商品コードとB列にある在庫数を取得し シート2のA列にある商品コードから同じ商品コードを探します。 同一の商品コードがあった場合に在庫数を比較して その数が減少していなければC列に次の処理を加える。  商品コードが合致した後は 処理を抜けて次の商品コードを比較させたいのですが 下行にある商品コードを探し続けてしまいます。(データの総当りとなる) つきましては どの様に記述すれば良いのでしょうか お教え頂けます様 よろしくお願い致します。 *********** Sub check1() Dim kz1 As long 'シート1データ数 Dim kz2 As long 'シート2データ数 Dim st1 As String 'シート名 Dim dt1 As Variant '商品コード Dim dt2 As Variant '在庫数 Sheets("sheet1").Select st1 = ActiveSheet.Name kz1 = Range("a65536").End(xlUp).Row Range("a1").Select ActiveCell.Offset(1, 0).Select For a = 0 To kz1 - 2 Sheets(st1).Select dt1 = ActiveCell.Value '商品コード dt2 = ActiveCell.Offset(0, 1).Value '在庫数 Sheets("sheet2").Select kz2 = Range("a65536").End(xlUp).Row Range("a1").Select ActiveCell.Offset(1, 0).Select For b = 0 To kz2 - 1 '同一商品コードを検索 if activecell.value = dt1 '在庫数を比較 if activecell.value >= dt2 '在庫数が同じ もしくは増加していた場合に処理 '次の処理を追加 endif else ActiveCell.Offset(1, 0).Select endif Next b Sheets(st1).Select Next a end sub

質問者が選んだベストアンサー

  • ベストアンサー
  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.3

コードを提示する場合は、書き写すと書き写し間違いの可能性があるので、コピペするようにしましょう。 if activecell.value = dt1 これなんて、文法的にエラーですよね。 セルの値を調べたり、セルに値を入力したりする場合は、わざわざシートやセルをSelectする必要はありません。 たとえば、Sheet1のA1に、Sheet2のB2の値を入力したかったら、 Worksheets("Sheet1").Range("A1").Value = Worksheets("Sheet2").Range("B2").Value だけで良いです。 Dim st1 As String 'シート名 Sheets("sheet1").Select st1 = ActiveSheet.Name Sheets(st1).Select このように、シート名用の文字列変数を使うのも一つの手ですが、それよりも、st1をワークシート変数として使うほうが、一般的だし、便利です。 st1をワークシート変数として使うと、上記のコードは、下記のようになります。 Dim st1 As Worksheet Set st1 = Sheets("sheet1") st1.Select そして、Sheet1のA1は、 st1.Range("A1") と書くことが出来ます。 Forループを抜けたいときは、Exit For です。 セルをいちいち選択して、ActiveCellを変数代わりに使っているから、ややこしいことになっていると思われます。 セルも変数を使いましょう。 Forループのカウンターとして使っているaもbも、ループの中で使用していないので、ループはDo Whileループ、もしくはDo Untilループを使うのも良いでしょう。 これらを踏まえて、コードを書き直すと、以下のようになります。 Sub check2() Dim st1 As Worksheet Dim st2 As Worksheet Dim cl1 As Range Dim cl2 As Range Set st1 = Sheets("sheet1") Set st2 = Sheets("sheet2") Set cl1 = st1.Range("A2") Do Until cl1.Row > cl1.Range("a65536").End(xlUp).Row Set cl2 = st2.Range("A2") Do Until cl2.Row > cl2.Range("a65536").End(xlUp).Row '同一商品コードを検索 If cl2.Value = cl1.Value Then '在庫数を比較 If cl2.Offset(, 1).Value >= cl1.Offset(, 1).Value Then '在庫数が同じ もしくは増加していた場合に処理 '次の処理を追加 Exit Do End If End If Set cl2 = cl2.Offset(1) Next b Set cl1 = cl1.Offset(1) Next a End Sub

vbn00b
質問者

お礼

nattocurryさん はじめまして ご回答して頂きありがとうございます お伺いしたい内容には不必要な処理が多かった為に 手入力にて修正をしたところ文法誤りをしていた様です。 大変失礼致しました。 大変判り易いご説明をして頂きまして 希望していた事が進められそうです。 皆さん お時間を割いて頂きまして心より深く感謝申し上げます。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

雑感 下記参考にしてみて。 質問者はまだプログラムロジックというものが色々あるという経験を積んでないようだ。 マッチングという手法もあるが。 質問にはそのロジックの説明が無い。意識が薄い状態では。それによってコードが短くなったりする。 マクロの記録で出てくるSelectは、VBAが良くわかって慣れれば、ほとんど使わなくて良い。 特にセルのSelectはね。 それに両シートを扱うときのSet Sh1=worksheets("Sheet1")のような書き方も使ってない。 WEBで照会すること。 また両シートで、同じ商品コードが複数行現れるケースかも認識してますか。書いてないのであいまいのままでは。これが処理に大きく影響する場合が多いよ。 ーー 検索するにはどういうロジックがあるのか勉強のこと。 全行総なめ Findメソッド 両データをソートして検索不要に持ち込む フィルタ利用 SQLなど 1つしか該当ないならVLOOKUPやMATCHのVBA関数の利用 など勉強してみて。

vbn00b
質問者

お礼

imogasiさん はじめまして ご回答して頂きありがとうございます ご指摘の通り VBというものをよく理解していない中で 本マクロを作成しております。 また 同じコードが複数ある場合など想定が足りておらず おはずかしい限りでございます。 記述の簡略化など大変参考になりました。 お伺いしたように 理解を深められるように時間を設ける事に致します。

  • myRange
  • ベストアンサー率71% (339/472)
回答No.1

コード合致処理の後はFor~Nextから抜けるために、Exit For を入れてやります。 '--------------------------------------------------- Sub test()  Dim R1 As Long  Dim R2 As Long  Dim Sht1 As Worksheet  Dim Sht2 As Worksheet  Set Sht1 = Worksheets("Sheet1")  Set Sht2 = Worksheets("Sheet2")  For R1 = 2 To Sht1.Cells(Rows.Count, "A").End(xlUp).Row    For R2 = 2 To Sht2.Cells(Rows.Count, "B").End(xlUp).Row      If Sht1.Cells(R1, "A").Value = Sht2.Cells(R2, "A").Value Then        If Sht1.Cells(R1, "B").Value > Sht2.Cells(R2, "B").Value Then           '▼在庫減少の処理        Else           '▼在庫同じ&増加の処理        End If        Exit For '●コード合致したのでForを抜けて次のコードへ      End If    Next R2  Next R1 End Sub '--------------------------------------------------- 今回のような場合は、シート等をいちいちSelectする必要ありません。 また、データが多い場合は、コード検索にはFindメソッドを使いますが 質問者の場合はまだFor~Nextを理解してからでいいでしょう。 以上です。  

vbn00b
質問者

お礼

myRangeさん はじめまして ご回答して頂きありがとうございます 早速 使わせて頂きたいと思います。 これまで必要以上の無駄な記述をしていた様です 大変参考になりました。 ありがとうございます。

関連するQ&A

  • Excel VBAを使った重複行の抜き出しについて教えてください

    以下のような2シートから、重複する「商品番号」のあるsheet1の行を抜き出して、別シートに書き出したいと思っております。 sheet1  |  A   |  B   | C -+--------+-------+----- 1|      |      | -+--------+------+-------- 2|商品番号|商品名|責任者 -+--------+------+-------- 3|  123456|  ガム|山田太郎 -+--------+------+-------- 4| 2345678| チョコ|田中花子 ・・・ sheet2  |  A   |  B   | C -+--------+-------+----- 1|      |     | -+--------+------+-------- 2|商品番号|商品名|責任者 -+--------+------+-------- 3| 3987624|     | -+--------+------+-------- 4| 193678|      | ・・・ そこでVBAを作成したのですが、例えば商品番号「222011001」の行を抜き出したいのに、「22011001」の行も一緒に抜き出してしまいます。 どこがいけないのか、教えて頂けないでしょうか。 作成したVBAは以下の通りです。 VBA初心者で本を見ながら作ったため、大変見にくくなっているかと思います。申し訳ありませんが、どなたかおわかりになる方がいらっしゃいましたら、どうぞ宜しくお願い致します。 Option Base 1 Option Explicit Sub 重複データ抽出書き直し() Dim シート(2) As Worksheet Dim 比較列(2) As Integer Dim 一致セル As Range Dim 検索範囲 As Range Dim i As Integer Set シート(1) = Sheets("sheet1") Set シート(2) = Sheets("sheet2") 比較列(1) = 1: 比較列(2) = 1 シート(2).Activate ActiveCell.CurrentRegion.Select Selection.Offset(1, 比較列(2) - 1) _ .Resize(Selection.Rows.Count - 1, 1) _ .Select Set 検索範囲 = Selection Sheets.Add After:=Sheets(Sheets.Count) シート(1).Activate ActiveCell.CurrentRegion.Select Selection.Resize(1).Copy With Sheets(Sheets.Count).Range("A1") If Application.Version >= 9 Then .PasteSpecial 8 End If .PasteSpecial End With For i = 2 To Selection.Rows.Count Set 一致セル = 検索範囲.Find(Selection.Cells(i, 比較列(1)).Value) If Not 一致セル Is Nothing Then Selection.Offset(i - 1).Resize(1) _ .Copy Sheets(Sheets.Count) _ .Range("A65536").End(xlUp) _ .Offset(1) End If Next i Sheets(Sheets.Count).Activate End Sub

  • プログラムの作り方

    まったくの素人です。 1列にあるデータをキーにして情報の抽出をしたいのですが うまくコードが書けません。 何卒、助勢頂ければ幸いです。 よろしくお願いいたします。 具体的な内容) B列 C列 x  11 ・・適当な不要なデータが数行 y  (2A) ・・適当な不要なデータが数行 x  12 ・・適当な不要なデータが数行 y  (44) ・・適当な不要なデータが数行 x  39 ・・適当な不要なデータが数行 y  (7) ・・適当な不要なデータが数行 から、xのデータとyのデータの表を作りたい。 ただし、yのデータ()内はB列のyの次の行。 できれば、抽出したデータはシート2に並べたい。 Sub macro() Dim a As String Dim b As Variant Dim c As range Dim i As Integer a = x b = "y" i = 1 Worksheets("sheet1").range("B1").Activate For i = 1 To 5000 With ActiveCell If .Value = a Then ActiveCell.Offset(0, 1).Copy Worksheets("sheet2").Select Cells(i, 1).Select ActiveSheet.Paste Sheets("sheet1").Select Else ActiveCell.Offset(1, 0).Activate End If If .Value = b Then ActiveCell.Offset(1, 0).Copy Worksheets("sheet2").Select Cells(i, 2).Select ActiveSheet.Paste Sheets("sheet1").Select Else ActiveCell.Offset(1, 0).Activate End If End With Next End Sub

  • Excelマクロ 複数のシートそれぞれで計算

    マクロの勉強を始めて間もない初心者です。 手持ちの解説書やネットで探してみたのですが解決できなかったので質問させてください。 計算式を手打ちで入力する手間を省くため、コードを書きました。 (不要かもしれませんが、一応記してみます。) sub 計算() dim 行番号 as integer for 行番号 = 10 to 46 cells(行番号,4).select with activecell .value=.offset(-2,0).value-.offset(-1,0) .offset(1,0).select end with next end sub マクロを実行すると、1枚目のシートでのみ、この計算がなされます。 が、私はこの計算を、複数の(もしくは全ての)シートで行いたいと考えています。 シートのフォーマットは全く同じで、入力してある数値が違うだけです。 シートが20枚以上あり、1枚ずつ選択して同じコードを書くには、コピー&ペーストを使うにしてもしんどいので、検索してみたのですが。。 調べて試してみた sheets.select や、 sheets(array("シート名1","シート名2"…).select では、セル値が異なるにもかかわらず、シート1の計算結果が以降のシートにも反映されてしまいました。 コードは共通でも各シートで独立した計算結果を導くには、どうすれば良いのでしょうか? お詳しい方、ご教示くださいますようよろしくお願い致します。

  • エクセルマクロについて助言下さい。

    エクセルマクロについて助言下さい。 ★やりたい事 シート名を指定しアクティブにする BOOOKに複数のセルがあり、シート名は日付(1・2など) 但し、必ず連続ではなく1~31までのシートが存在します。 現在のマクロ↓ シート名を取得し関数で指定のシートが存在するか確認しています。 作業シートのC1セルが0で指定シートなし 0でないで指定シートあり(処理開始)としてます。 作業2のI3セルに日付データがあります。 Sub 抽出() 'シート名を取得する Sheets("作業").Select Dim i As Integer Dim mySheetCnt As Integer Dim mySheetNam As String    mySheetCnt = ThisWorkbook.Sheets.Count For i = 1 To mySheetCnt mySheetNam = Sheets(i).Name Sheets("作業").Cells(i, 1) = mySheetNam Next i   Range("A1").Select If ActiveCell.Value = "" Then 'A1が空白の場合の処理 MsgBox "指定の日付のシートが存在しません" Exit Sub End If Sheets("作業").Select Range("C1").Select If ActiveCell.Value = 0 Then 'C1が0の場合の処理 MsgBox "指定の日付のシートが存在しません" Exit Sub End If Sheets("作業2").Select Range("I3").Select Sheets(ActiveCell.alue).Select End Sub このコードだと3と指定すると左から3枚目にあるシートが選択されます。 3枚目ではなくシート名が 3 を選択したいのです。。 分かりにく説明で申し訳ありませんが、教えてください。

  • マクロの作業で、アクティブにしたくない

    マクロを実施しているのですが、シートを切り替えアクティブにしながら作業をしているのです。表のAから内容を抽出し、表のBから抽出し表のCに印字、この繰り返しを1千回以上行います。その為、画面処理で非常に時間がかかり困っています。 例えば下記のようにしています。 Windows(S_F).Activate Sheets("Sheet1").Select     ActiveCell.Offset(0, 1).Value = ("計") ActiveCell.Offset(1, 0).Select Windows(S_S_F).Activate Sheets("Sheet2").Select ActiveCell.Offset(0, 1).Value = ("担当者合計") Windows(S_AK_F).Activate Sheets("Sheet1").Select ActiveCell.Offset(1, 0).Select Sheets("Sheet2").Select Rows("1:4").Select Windows(S_M_F).Activate Sheets("Sheet1").Select Range("A2").Select Windows(S_S_F).Activate Sheets("Sheet1").Select Range("A4").Select 実際のマクロの一部です。 アクティブにするから画面処理(切り替え)をしてしまうと思いますが、それをしないで、作業を行いたいのですがどのようにか出来ますでしょうか?

  • エクセルマクロが重い

    こんにちは。 ご教授くださいませ。 すでに先方が作っているエクセルのシートがありまして、 そのシートの表組み規則にのっとって入力するユーザーフォーム を私のほうで作ったのですが、重いです。 selectの多用はだめ!というところまでは調べたのですが じゃあどうしたらいいかわかりません。 ■ '--------------------8時から If OptionButton1.Value = True Then ActiveCell.Offset(3, -1).Range("A1").Select ActiveCell = UserForm3.TextBox1.Value ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell = UserForm3.TextBox2.Value ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell = UserForm3.TextBox3.Value ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell = UserForm3.TextBox4.Value ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell = UserForm3.TextBox5.Value ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell = UserForm3.TextBox6.Value ActiveCell.Offset(3, 0).Range("A1").Select ActiveCell = UserForm3.TextBox12.Value ActiveCell.Offset(0, -1).Range("A1").Select ActiveCell = UserForm3.TextBox11.Value ActiveCell.Offset(0, -1).Range("A1").Select ActiveCell = UserForm3.TextBox10.Value ActiveCell.Offset(0, -1).Range("A1").Select ActiveCell = UserForm3.TextBox9.Value ActiveCell.Offset(0, -1).Range("A1").Select ActiveCell = UserForm3.TextBox8.Value ActiveCell.Offset(0, -1).Range("A1").Select ActiveCell = UserForm3.TextBox7.Value ActiveCell.Offset(3, 0).Range("A1").Select ActiveCell = UserForm3.TextBox13.Value ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell = UserForm3.TextBox14.Value ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell = UserForm3.TextBox15.Value ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell = UserForm3.TextBox16.Value ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell = UserForm3.TextBox17.Value ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell = UserForm3.TextBox18.Value ActiveCell.Offset(3, 0).Range("A1").Select ActiveCell = UserForm3.TextBox24.Value ActiveCell.Offset(0, -1).Range("A1").Select ActiveCell = UserForm3.TextBox23.Value ActiveCell.Offset(0, -1).Range("A1").Select ActiveCell = UserForm3.TextBox22.Value ActiveCell.Offset(0, -1).Range("A1").Select ActiveCell = UserForm3.TextBox21.Value ActiveCell.Offset(0, -1).Range("A1").Select ActiveCell = UserForm3.TextBox20.Value ActiveCell.Offset(0, -1).Range("A1").Select ActiveCell = UserForm3.TextBox19.Value ActiveCell.Offset(3, 0).Range("A1").Select ActiveCell = UserForm3.TextBox25.Value ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell = UserForm3.TextBox26.Value ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell = UserForm3.TextBox27.Value ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell = UserForm3.TextBox28.Value ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell = UserForm3.TextBox29.Value ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell = UserForm3.TextBox30.Value 'ActiveWorkbook.Save MsgBox "入力しました。", vbInformation, "確認" End If '--------------------8時から(END ■ 基本の流れは... 最初にオプションボタン3つのどれか1個の 選択を求め、その条件に応じて 始基点となるセルが変わります。 で、あとは与えられた表組みを縦や横に 移動しながら、対応するテキストボックスの 値を入れる、という 我ながら頭の悪い方法で^^; .selectではない、スマートな方法があればと思います。 ぜひお知恵を!

  • Excelのontimeについて

    a1に数式が入っています。 c3からd3,e3,f3…に一定時間ごとにa1の値を入力するマクロがあります。 Sub 入力() Sheets("Sheet1").Select Range("a3").End(xlToRight).Offset(0, 1).Select ActiveCell.Value = Cells(1, 1).Value End Sub Sub スタート() Dim MyTime As Date Dim Jikan As Date Dim i As Integer Jikan = TimeValue("13:59:00") For i = 0 To 5 MyTime = Jikan + TimeSerial(0, 0, 5) * i Application.OnTime MyTime, "入力" Next End Sub で、教えていただきたいのですが、"入力"を動かしている途中で 上記のマクロをとめるにはどうしたらよいのでしょう? ご教授ください。

  • エクセルのマクロの作り方

    マクロ初心者です。 今勉強している最中ですが、以下の物を作りました。 Sub Macro1() ' ' Macro1 Macro ' ' Sheets("Sheet2").Select Range("A4").Select ActiveCell.Formula = "=Sheet1!IM4" ActiveCell.Offset(3, 0).Select ActiveCell.FormulaR1C1 = "=Sheet1!R[-3]C[240]" ActiveCell.Offset(3, 0).Select ActiveCell.FormulaR1C1 = "=sheet1!r[-6]c[234]" ActiveCell.Offset(3, 0).Select ActiveCell.FormulaR1C1 = "=sheet1!r[-9]c[228]" End Sub わかる人はもうお分かりかもしれませんが、ループという機能でもっと簡単にできるように思います。 これを手打ちしていくのであれば、手間がかかってしまい、マクロの意味がないというか… [-3]→[-6]→[-9]と、縦に参照したいセルが3つずつ上がっていき、横には左に6ずつ移動していきます。正確にはアクティブセルが移動しているのでってことなのでしょうけど…(たぶん…) 最初が絶対参照になっていて2回目以降から相対参照になっているのは、1回目で絶対参照にすれば、そのセルを基準として相対参照でRC[-6]でループさせられるかなっと思ったからです。。。結局そうなりませんでしたが… 作りたいのは、sheet2のA4とsheet1のIM4、sheet2のA7とsheet1のIG4をイコールにし、それを間隔は同じでsheet2のA127まで繰り返したものです。 本を買って、ネットで検索して色々とやったのですが、どうにもわからなく。。。 どうかよろしくお願いします。

  • 【VBA】MsgBoxの文字数について

    下記のコードを使い、MsgBoxに 各シートの合計値と、それらの総計 を表示しますが、シート数が膨大の時は、メッセージボックスに収まり切りません。 対処法をご教示願います。 Dim i As Long Dim mMsg As String: mMsg = "" Dim mSum As Long For i = ActiveSheet.Index To Sheets.Count mMsg = mMsg & Sheets(i).Name & " : " & Sheets(i).Cells(Rows.Count, "A").End(xlUp).Offset(0, 4).Value & vbCrLf mSum = mSum + Sheets(i).Cells(Rows.Count, "A").End(xlUp).Offset(0, 4).Value Next Sheets(1).Select MsgBox mMsg & "総計 : " & mSum, vbInformation

  • エクセルの入力データーを別のシートの日付と氏名の交差点に記録していくマクロ

    現在別のカテゴリーで教えていただいたマクロなのですが、 Sheet1に入力されたデータをSheet2に転記するマクロに苦しんでおります。週明けには解決したいのでこのカテゴリーにも質問することにしました。 現在の状況は以下の通りです。 Sheet1    A   B   C   D   1 日付 氏名 成績 区分 2 9/23 佐藤 95  優 ここでマクロを実行すると Sheet2    A   B   C   D   E   F  G 1       1組       2組 2    田中 佐藤 小林 近藤 三浦 遠藤 3 9/19 90  4 9/21         80 5 9/21    95 6 9/21            95 7 9/22                 95 となって欲しいのですが、同じ日付で続けて入力すると Sheet2    A   B   C   D   E   F  G 1       1組       2組 2    田中 佐藤 小林 近藤 三浦 遠藤 3 9/19 90  4 9/21    95   80  95 5 9/21     6 9/21             7 9/22                 95 となってしまいます。 マクロは Sub Macro001() 'まず日付を転記します  Range("A2").Select  Selection.Copy  Sheets("sheet2").Select  Range("A65536").Select  Selection.End(xlUp).Select  ActiveCell.Offset(1, 0).Select  Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _  False, Transpose:=False  Sheets("sheet1").Select  Application.CutCopyMode = False  Range("C3").Select '続いて転記します  Dim x As Long  Dim y As Integer  x = Application.Match(Sheets("sheet1").Range("a2"), Sheets("sheet2").Columns(1), 0)  y = Application.Match(Sheets("sheet1").Range("b2"), Sheets("sheet2").Rows(2), 0)  Sheets("sheet2").Cells(x, y) = Sheets("sheet1").Range("C2") End Sub です。 どうかよろしくお願いいたします。

専門家に質問してみよう