• ベストアンサー

【Excel VBA】ユーザーフォーム

Excel2003を使用しています。 内容的には前回の(質問No.3376017)続きなのですが… あるシートに対して、印刷範囲指定のマクロを作りました。 印刷不要ページを指定して、それ以外のページを印刷するというもので、印刷開始ページ、終了ページ、不要ページをユーザーフォームを作ってテキストボックスに入力するようにしました。 そのテキストボックスの下に、『設定』と『キャンセル』のボタンを作っていますが、『キャンセル』を選択した場合は、このマクロを実行しないで終了させたいのですが、可能ですか? 『設定』と『キャンセル』の処理は、イベントプロシージャ(クリック)に記述していますが、『キャンセル』ボタンをクリックしたときにマクロを実行しないで終了するには、どのように記述すればいいでしょうか?[Exit]を使うのかな?と思って書いてみましたが、エラーが出てしまいました(^_^;) よろしくお願いします。

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

  • ベストアンサー
  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.2

>何も処理せずにマクロを終了するには、 Unload Me が実行されると処理を終了してメモリが解放されます。 実質的にプログラム(フォーム)の終了になります。 ご希望の機能が、フォームの終了では無いのであれば・・・。 下記のような呼出プログラムがあった場合、 Unload Me で終了すると、MsgBox "end" が表示されます。 「MsgBox "end" を実行しないで終了」という意味でしたら、 End と記入すると、その時点でプログラムの実行が終了するので、 MsgBox "end" は実行されません。 適当なフォームに、ボタンを2つ作って"End"と"Unload Me"で終了するようにして見ると良いでしょう。 Sub test() UserForm1.Show MsgBox "end" End Sub

rx-z5815
質問者

お礼

回答ありがとうございます。 >「MsgBox "end" を実行しないで終了」という意味でしたら、 End と記入すると、その時点でプログラムの実行が終了するので、 MsgBox "end" は実行されません。 そうです。↑こういう意味で書いていたつもりでした。 『キャンセル』ボタンのイベントプロシージャに End と記述して、実際に試してみたところ、希望どおりのことができました。 ありがとうございました<(_ _)>

その他の回答 (5)

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.6

>本質問とは、内容が異なってしまいますが、もしよろしければ、アドバイスいただけるとありがたいです。 横レスになりますが、私が普段使っている物を上げておきます。 テスト(Debug)したゴミも混じってますが。。。 動作は今回の要望と逆で、印刷ページ番号を入れるものです。 普通に InputBox から印刷ページ番号を入れるだけの物で、特別なエラー処理はしていませんが、今のところ問題なく動いています。 Sub PrintPage() ' Excel ページ指定印刷 'expression.PrintOut(From, To, Copies, Preview, ActivePrinter, PrintToFile, Collate, PrToFileName) Dim Page As String Dim Ary As Variant Dim i As Integer, k As Integer Dim ST As Integer, EN As Integer, H As Integer Dim Sts As String Dim PPage As Integer Dim p As String p = "" '印刷ページ数取得 PPage = Application.ExecuteExcel4Macro("get.document(50)") If PPage = 0 Then MsgBox "このシートには印刷するための情報がありません。   ", vbInformation, "印刷処理の終了!" Exit Sub End If '印刷範囲入力 Page = InputBox("印刷するページを数字で指定してください。" & vbLf & vbLf & vbLf & vbLf & _ "このシートの印刷範囲は、1 - " & PPage & " ページまで" & vbLf & _ "ページ指定の方法: 1-3,5,8,10-15,20- ", _ "印刷ページの指定", "") If Page <> "" Then Page = StrConv(Page, vbUpperCase) Ary = Split(Page, ",") For i = LBound(Ary) To UBound(Ary) 'MsgBox Page Page = Trim(Ary(i)) k = 1 For k = 1 To Len(Page) '文字列のチェック(数値と-のみ有効) If Not (Mid(Page, k, 1) >= "0" And Mid(Page, k, 1) <= "9" Or _ Mid(Page, k, 1) = "-" Or Mid(Page, k, 1) = " ") Then Page = "" Exit For End If Next If Page <> "" Then '印刷ページ解析 H = InStr(Page, "-") If H = 1 Then ' -nn / - ST = EN + 1 If EN = 0 Then ST = 1 If Len(Page) = 1 Then EN = 0 Else EN = VAL(Page) * -1 End If ElseIf H > 1 Then ' nn-mm / nn- ST = Left(Page, H - 1) If H = Len(Page) Then EN = 0 Else EN = Right(Page, Len(Page) - H) End If Else ' nn ST = Page EN = ST End If If ST <= PPage Or EN <= PPage Then '印刷処理 'ActiveSheet.PrintOut 10,15,25-60,-65 If Sts <> "" Then p = "," If EN = 0 Then 'Debug.Print "ST = " & ST & " / EN = " & EN 'ActiveSheet.PrintPreview ActiveSheet.PrintOut from:=ST Sts = Sts & p & ST & "-" Else 'Debug.Print "ST = " & ST & " = EN = " & EN 'ActiveSheet.PrintPreview ActiveSheet.PrintOut from:=ST, To:=EN If ST = EN Then Sts = Sts & p & ST Else Sts = Sts & p & ST & "-" & EN End If End If End If End If Next '印刷ステータス表示 If Sts = "" Then MsgBox "印刷は実行はされませんでした。", vbInformation, "印刷結果" Else MsgBox "下記のページを印刷しました。" & vbLf & vbLf & Sts, vbInformation, "印刷結果" End If End If End Sub

rx-z5815
質問者

お礼

こんにちは。 お礼が遅くなり、申し訳ありません。 hana-hana3 さんが普段使用されているもので、特別なエラー処理はしていないとのことですが、実際に試してみたところ、うまくいきました。普通にInputBox からページを指定する方法もいいですね!参考になりました。 最後は、本質問と内容が異なっていたにも関わらず、時間を割いて回答していただき、ありがとうございました。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

こんにちは。 >単に、セルの内容をクリアさせれば良いだけですが、それとは関係なく、プログラムの実行を終了させることができれば、その方法を知りたかったので…。 #4 で、簡単に書いてしまいましたが、考え方が間違っていました。お考えになっているイメージと同じだとは限りませんが、私がやってみたら、思った以上に、むつかしかったですね。最近は、あまり、難しいことを考えないせいでもあるのですが。(^^;  それで、横道に反れるけれど、zap35さんのコードは、活かしますっていうか、あのコードは、少なくとも私の中では、これしかないっていうコードです。ちょっと解説すると ExecuteExcel4Macro("GET.DOCUMENT(50)") という、マクロ関数は、C言語で書かれたもので、Excel.Applicationから直接取得し、VBAのインターフェースを通らない分だけ速いのです。これを、VBAで書く方法は、MSサポートにも出ているので、ご存知だと思いますが、結構、面倒だったりします。(本当に、この先、Excel Ver.4 Macro関数はやめてしまうのでしょうかね。2007の変更発表-Changes in Excel 2007 には、残していると書かれていましたが。) まず、下にも書いてありますが、UserForm のプロパティは、念のために ShowModal: False にしておいてくださいね。マクロの失敗の時に、Excel強制終了しましたから。(EXCEL97以下は不可) 次に、ページの入れ方は、せっかくですから、テキストボックスに、1,3-9 (コンマとハイフンは可能) と、標準的な書き方に出来るようにアレンジしてみました。 それで、キャンセルキーですが、コマンド・ボタンではなく、[Escキー]に割り当てました。マクロ稼働中は、他のクリックイベントが利かないのです。ただ、割り込みですから、下に書いてあるように、DoEvents と、メモリ負担の少ない Sleep で1秒入れてみました。 止めるときには、{Escキー]を手早く2度押してください。 あくまでも、私の考えたものですから、いろいろ調整したり、加工したりしてみてください。 'ユーザーフォーム・モジュール 'UserForm のShowModal: False 'TextBox1 1つ 'CommandButton1 1つ '-------------------------------------------------------------- 'Option Explicit 'API Sleep Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Private Sub CommandButton1_Click()  Call divPrinting End Sub Private Sub divPrinting()   Dim strPage As String   Dim tmpbuf As String   Dim MaxP As Integer   Dim i As Integer, j As Integer, k As Integer   Dim v As Variant   Dim buf As Variant   Dim buf2 As Variant   Dim arbuf As Variant   Dim Pages() As Integer      On Error GoTo EscInterrupt   '割り込みキー   Application.EnableCancelKey = xlErrorHandler      strPage = TextBox1.Text '例: 1,3-9"      '不要文字チェック   If strPage = "" Then Exit Sub   strPage = StrConv(Trim(strPage), vbLowerCase)   strPage = Replace(strPage, " ", "")   tmpbuf = Replace(strPage, ",", "")   tmpbuf = Replace(tmpbuf, "-", "")   If Not IsNumeric(tmpbuf) Then MsgBox "不要な文字が入っています。正しくは、" & vbCrLf & _   "例: 1,3-9 (コンマとハイフンは可能)", vbInformation: Exit Sub      buf = Split(strPage, ",")   MaxP = Application.ExecuteExcel4Macro("GET.DOCUMENT(50)")   For Each v In buf     If InStr(v, "-") > 0 Then       buf2 = Split(v, "-")       ReDim arbuf(buf2(1) - buf2(0) + 1)       For i = buf2(0) To buf2(1)         If MaxP >= i Then           ReDim Preserve Pages(k)           Pages(k) = i           k = k + 1         End If       Next i     Else       If v >= i Then         ReDim Preserve Pages(k)         Pages(k) = v         k = k + 1       End If     End If   Next v   For Each v In Pages     ActiveSheet.PrintOut , Preview:=True, From:=v, To:=v     DoEvents     Sleep 1000 'タイムラグ 1秒 調整してください。   Next v Sub_Exit:   Application.EnableCancelKey = xlInterrupt   Exit Sub EscInterrupt:   If Err.Number = 18 Then     MsgBox "割り込みにより、中断されました。", vbInformation   End If   GoTo Sub_Exit End Sub

rx-z5815
質問者

お礼

こんにちは。 お礼が遅くなり、申し訳ありません。 Wendy02 さんの考えてくださったコードでも実際に試してみました。 タイムラグ 1秒 だとこんな感じになるというのを実感しましたが、面白いですね。勉強になります(^^) ページの入れ方でも、コンマとハイフンが入力可能な標準的な書き方にしてある部分も参考になりました。 最後は、本質問とは内容的に異なることだったにも関わらず、時間を割いて回答していただき、ありがとうございました!

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんにちは。 割り込みさせていただきます。 >[Exit]を使うのかな? >エラーが出てしまいました どの部分か分かりません。ループ内なら、Exit For でしょうか? でも、それはむつかしいです。他は、モジュール内変数で、フラグを設けて、その設定が、True になったら、実行しないでプロシージャが終了(Exit Sub)するような設定があると思います。 一体、どこのタイミングで入れるかにもよりますね。 通常は、プリンタバッファに一気に送られてしまうので、一旦実行してしまったら、VBAでは止められないと思います。実行した後では難しいので、設定の後にキャンセル--クリアというなら、ページ番号を入れる設定のテキストボックスをクリアさせるだけでよいと思います。 ずいぶん前に、私の作ったマクロで、ループは1ページごとにしますが、印刷の最中に1ページごとにタイムラグを設けました。それなら、タスクは止めらるはずだと思います。つまり、物理的印刷は、ある程度の時間を要するので、一気に、プリント情報をプリンタに送らないようにすれば、割り込みが利くのではないか、と思います。少し、コードとしてはややこしくなりますが、APIを使うわけではないので、まだマシ?だと思います。

rx-z5815
質問者

お礼

Wendy02 さん、こんにちは。 回答ありがとうございます。 前回の(質問No.3376017)の続きで、ANo.2のzap35 さんから教えていただいたサンプルを一部変更して使用しています。 当初は、あるセルにページ番号を入力し、そのセルから印刷開始ページ、終了ページ、不要ページを取得するようにしていました。 VBA の勉強のため、このセルに入力するのをテキストボックスに入力するようにしてみようと思い、参考書を片手にユーザーフォームを作ってみました。 コードが完成するまでは、印刷ではなく印刷プレビューするようにして確認しながらしているのですが、今は、テキストボックスに入力したものをあるセルに転記している状態ですので、セルに直接入力するのか、テキストボックスに入力するのかの違いです。 >ページ番号を入れる設定のテキストボックスをクリアさせるだけでよいと思います。 元々、『キャンセル』ボタンは、テキストボックスをクリアさせるだけの『クリア』ボタンにしていたのですが、テキストボックスの内容をセルに転記している状態なので、そのセルに入力されている数字をクリアしておかないと、その内容でプレビューが実行されるので、『キャンセル』ボタンをクリックした時点で、プログラムの実行を終了できないかと思い、今回のような質問をさせていただいた次第です。 単に、セルの内容をクリアさせれば良いだけですが、それとは関係なく、プログラムの実行を終了させることができれば、その方法を知りたかったので…。 ところで… 先にも書きましたが、今は、テキストボックスに入力した内容をセルに転記して、そこから Loop する回数(数字)を取得している状態なのですが、これは、テキストボックスからダイレクトに Loop する回数に指定することができるのでしょうか?  ExcptP = Split("Sp", ",")  For i = Fp To Tp 上記でいうと、Fp と Tp と Sp をテキストボックスに入力した数字に指定したいのですが。。。 本質問とは、内容が異なってしまいますが、もしよろしければ、アドバイスいただけるとありがたいです。

回答No.3

>>Unload Me は、テキストボックスに入力後、 >>『設定』or『キャンセル』ボタンをクリックしたら、 >>ユーザーフォームが閉じるように、記述しています。 これと >>『キャンセル』ボタンをクリックしたら、 >>何も処理せずにマクロを終了する これとの違いは・・・? マクロを終了する。 つまりは、ユーザーフォームを閉じるのではないのですか? ある処理を実行中に、スレッドをキャンセル(終了)させたい、 という意味ですかねぇ・・・?

rx-z5815
質問者

お礼

再度の回答ありがとうございます。 つい先程、ANo.2 さまから回答をいただき、そのお礼にも書いていますが、『キャンセル』ボタンをクリックしたら、その時点でプログラムの実行を終了したかったのです。 うまく説明できず、お手数をおかけして申し訳ありません。 ありがとうございました<(_ _)>

回答No.1

Unload Me かな?

rx-z5815
質問者

お礼

回答ありがとうございます。 Unload Me は、テキストボックスに入力後、『設定』or『キャンセル』ボタンをクリックしたら、ユーザーフォームが閉じるように、記述しています。 たまたま参考書で見つけて記述していたのですが、これは、ユーザーフォームを閉じるためのものではないのでしょうか? 説明がわかりづらかったようで申し訳ないのですが、『キャンセル』ボタンをクリックしたら、何も処理せずにマクロを終了するには、どのように記述すればいいのかを知りたいのですが、もし、ご存知なら教えていただけると助かります。

関連するQ&A

  • VBAのユーザーフォームについて

    VBAの全くの素人です。 ユーザーフォームについていくつか質問させてください。 テキストボックスにファイル名を入力し、実行釦を押す事で、IEを立ち上げ、画像ファイルを開くマクロを組んだ場合、 (1)「クリア」というコマンド釦を作り、その釦を押した際にテキストボックスに入力した値を消す為には、そのコードにはどのように記述すればよいでしょうか? (2)さらにその「クリア」釦を押す事により立ち上げたIEを閉じる事はできないでしょうか? (3)このマクロを組んだExelファイルを立ち上げた時点で、マクロを実行し、「終了釦」を作り、その釦により、Exelごと終了させるにはどうすれば良いでしょうか? 以上、素人の質問で恐縮ですがご教示ください。 よろしくお願いします。

  • Excel2010でフォームコントロールボタンが。

    工事台帳をEXCEL2010で作成しています。 シートには縦に3ページ分の入力フォームがあり、データ入力後に 印刷したいページをオプションボタンで選択後し、 印刷ボタン(フォームコントロール)を押すと 対象ページを印刷範囲設定して印刷、という作業を マクロで行っています。 このマクロはExcel2003で作成し(ファイル形式は.xls)、 Excel2010で変換(.xlsm)して使用しています。 このファイルで印刷ボタンを押すと、印刷後にボタンが消えてしまうのです。 何か規則性があるとかといろいろ調べてみたところ、「オブジェクトの選択と表示」 で「Button」となっているものだけが消えます。他にも、「Comment」、「テキストボックス」、 「Option Button」、「Group Box」、「AutoShape」、「Text Box」というものもあります。 書類作成期限の都合でここ数か月はショートカットでマクロを実行していますが なかなか調べる時間がとれずに解決に至りません。 何が原因かわかる方がいらっしゃいましたらお教えください。

  • Excel2010 VBAにて印刷設定の取得

     Excel2010 VBAにてマクロを作成しております。 Excel2010のメインウィンドウの「ファイル」タブ→「印刷」の 画面におきまして、[設定]欄にて設定したページ指定(印刷開始ページ及び 印刷終了ページ)は取得できるのでしょうか?  Workbook_BeforePrintプロシージャにて取得しようと思っているのですが、 ActiveSheet.PageSetupのメンバやThisWorkbookのメンバを見たところ、 印刷の開始ページ及び終了ページの設定が見つかりませんでした。 印刷のページ指定の設定箇所をご存知の方がいらっしゃいましたら 教えて頂きたく宜しくお願い致します。

  • ユーザーフォームが閉じたいのですが

    皆様こんにちは。 ExcelVBAを使ってユーザーフォームを作っています(初心者)。 どうしてもわからないので教えてください。 ちなみに、以下のように組んでいます。 Private Sub 商品区分txt_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean) If IsNumeric(商品区分txt) = False Then   MsgBox "商品区分は数値を入力してください", , "商品区分エラー"   Cancel = True   Exit Sub End If If 商品区分txt < 1 Or 商品区分txt > 100 Then   MsgBox "商品区分は1~100までの値で入力してください", , "商品区分エラー"   Cancel = True   Exit Sub End If End Sub 説明させていただくと、「単価変更」というボタンを配置しています。 そのボタンをクリックするとユーザーフォームが立ち上がります。 商品区分と単価変更率を入力するテキストボックスがあります。 両方を入力後「単価変更実行」というボタンを押すようになっています。 すると指定した商品区分の商品の単価が変更されるようになります。 ちなみに、「終了」ボタンもあります。 商品区分は1~100まであり、その範囲外の場合と数値以外が入力された場合はエラーメッセージがでるようになっています。 たとえば、商品区分に200を入力するとメッセージが出て次のコントロールにいけないようになっています。 そこで200を消します。そして、「とりあえず終了したい」となり、終了ボタンを押してもエラーメッセージが出てしまいます。 このメッセージは出したくありません。 出さないようにするにはどうしたらいいでしょうか? BeforeUpdateじゃなく何か別のイベントを選ぶといいのでしょうか? ちなみに、終了ボタンはUnload Meとしてあるので通常は閉じることは可能です。 長文ですみません。よろしくお願いします。

  • 【Excel VBA】印刷について

    Excel2003を使用しています。 不要ページをスキップして印刷するマクロを作成し、特定のBookでのみ使用しているのですが、このBookを印刷するときはカラー印刷を指定したいので、この印刷マクロの中でカラー印刷を指定できたらと思っているのですが、このようなことは可能でしょうか?可能であれば、どのように記述すればいいでしょうか? ページ設定のマクロの記録をとったところ、下記のように(不要と思われる設定は削除しました)記述されていました。 [BlackAndWhite = False]という部分がカラー印刷に関するコード?かと思い、追加してみたのですが、カラー印刷されませんでした。 With ActiveSheet.PageSetup .PaperSize = xlPaperA4 .FirstPageNumber = xlAutomatic .Order = xlDownThenOver .BlackAndWhite = False .Zoom = 98 .PrintErrors = xlPrintErrorsDisplayed End With よろしくお願いします。

  • ユーザーフォームから

    お世話になります。 ユーザーフォームにて、 オプションボタンでどれかを選択出来るようにし、 コマンドボタンで決定する様にしてあります。 選択した内容によりcallで別の標準モジュールに あるsubプロシージャに飛ばしたいのですが、 その記述方法が分かりません。 良くByvalの記述方法は見つかるのですが、 単純にsubプロシージャを実行したいだけなのです。 フォームの中に記述しても良いのですが、結構長くなって しまうので・・。 こういうやり方はおかしいのでしょうか。

  • VBAのユーザーフォーム・・

    教えてください。 ユーザーフォームのテキストボックス・コンボボックスに入力した文字列をコマンドボタンを押したら、セルC1・B1に反映させたいのですが、できません。 このコマンドボタンには他のプログラムも入っており、同時にプログラムを実行したいのですが。

  • VBAのExitイベントについて

    VBA(Excel)についてご質問します。 フォームにて、IDというオブジェクト名のテキストボックス、 Private Sub ID_Exit(ByVal Cancel As MSForms.ReturnBoolean) という関数(Exitイベント)を用意しました。 IDにフォーカスがある状態で、フォーカスを移動しようとすると、この関数が必ず実行されるかと思います。 そのとき、特定のボタン(例えばキャンセルボタン)がクリックされたためにフォーカスが移動したときは、この関数の処理を実行したくない。もしくはこの関数内で特定のボタンがクリックされたこと(そのためにフォーカスが移動したこと)を検出して、処理をスキップしたいです。 どうすれば実現できますでしょうか? よろしくお願いします。

  • 【VBA】値の引渡しについて

    VBA初心者です。 VBAの勉強もかねて、今、【 標準モジュール 】と【 UserForm 】を用いて あるプログラムを作っています。 その中で、プロシージャ間をまたいで 『 値の受け渡し 』をしたいと思っています。 今回、質問をさせていただいたのは、その『 値の受け渡し 』が 「できる場合」と「できない場合」があるので、常にできるように その対応方法を教えていただきたく、今回投稿させていただきました。 ---------------------------------------------------------------- 今困っているパターンを例にあげると、 ユーザフォームの中に2つのボタン 「OK」ボタンと「キャンセル」ボタンが あるとします。 【 「キャンセル」ボタンがおされた場合には「終了する」 】という 仕組みにしたいと思っています。 そこで以下のようなプログラムを作ろうとしました。 ---------------------------------------------------------------- ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 1) General部にPublic変数(以下「P変数」)を宣言する。      Public cancel as byte 2) 【標準モジュール】のプロシージャから【フォーム】の「Userform1」を表示させる。          Sub A処理()           Userform1.show           End sub   3) 【フォーム】のUserform1._CommandButton2に以下のように記述する。    (キャンセルボタンがクリックされた場合)          Private Sub CommandButton2_Click()       cancel = False       Unload Me       Exit Sub      End Sub 4) 【標準モジュール】のプロシージャの、一連の処理の最後に    以下のようにプログラムを記述する。          Sub A処理()           Userform1.show      ↓      ↓           if cancel = false then                exit sub           end if      End sub ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 1)~4)のようにして 「キャンセルがクリックされた場合、すべての処理を終了する。」 というようなプログラムを記述してみました。 すると、デバッグを使って、変数「cancel」の中身を見てみると 3)の段階で、その変数「cancel」に「false」値を格納したはずなのに、 プロシージャ間をまたいだことで 4)の段階では、変数「cancel」の中身が必ず「""」と 値が空値になってしまいます。 4)の段階でも、変数「cancel」の値が保持できる、 何かしらの方法はないでしょうか。 回答をよろしくお願いします。

  • ユーザーフォームのスクロールについて(エクセル2000VBA)

    お世話になります。 上下に長いユーザーフォームを作成し、スクロールして使っています。 1~4まで項目があり、ボタンをクリックするとその項目の先頭まで自動的にスクロールするような仕組みを作りたいのですがどうしたらよいでしょうか? Private Sub CommandButton1_Click()  TextBox1.SetFocus  '項目の先頭にあるテキストボックスに移動する End Sub という風なコードはできたのですが、ボタンの位置よりテキストボックスが下にあると、フォーカスしたテキストボックスがユーザーフォームの一番下に表示されてしまいます。 また、上方向にいく時も、テキストボックスの1行上に配置してあるタイトル(ラベルで作成しました)が表示されないので少し不便な気がします。 例えば、FAQサイトによくあるような、目次をクリックするとその項目が一番上に表示され、「Top」をクリックしてページ先頭にジャンプするような感じにしたいのですが…。 よろしくお願いします。

専門家に質問してみよう