メッセージボックス(OK キャンセル型)のボタンの文字
の「キャンセル」を「Cancel」と英語表示にしたい
のですが、どの様にすればよろしいのでしょうか?。
OSはWindows NT4.0(SP5)
VBのバージョンは6.0(SP3)です。
回答をよろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

既存のダイアログボックスを変更するのは、引数で与えられているもの以外には、変更できないと思います。


メッセージボックスを自分で作ればどうですか?
VB HELPのカスタムダイアログボックスを参照してみてください。
あと、シェアウエアでよければ、メッセージボックスのボタンのフォントや、文字を変更できるOCXがあります。

参考URL:http://www.vector.co.jp/soft/win95/prog/se086352 …
    • good
    • 0
この回答へのお礼

お礼が遅くなりました。
どうも御回答ありがとうございました。
自分でもAPIを調べて実行してみましたが、実現
出来ませんでした。
英語版のOSでは自動的に「Cancel」になるようです。
OCXが存在しているということは何か方法はあるので
しょうが…。

お礼日時:2000/12/28 02:05

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q配列の中に重複文字列があるか否かをチェックしたいのですが、アルゴリズムを教えてください。

配列10000個の中に次のように文字列が入っているとします。
(実際に使うのはもっとずっと長い文字列が配列内に格納されています。)
Data_Array[1] = "GRZRMZCOMKMSG"
Data_Array[2] = "DCUIROTLUMWBC"
Data_Array[3] = "RGLBMILRPBSMY"
.
.
.
Data_Array[9998] = "RSKFDHAHMOESI"
Data_Array[9999] = "AQVOXBVNILGOP"
Data_Array[10000] = "YNYRUPEXYOGFN"

配列Data_Array[10000]の中に重複文字列がないか探索したいと考えています。

~普段の手順~
配列中身を一度テキストに吐き出し、そのテキストをExcelに貼り付ける。
そして、Excelのフィルタ機能で重複文字列を排除。
その後、重複文字列を排除した文字列を保存したものをテキストファイルに保存する。
それをプログラムで読み込んで配列内に格納してから次の処理を続ける

といった、効率の悪い方法をとっています。
そこで、プログラム内で処理する方法を次のように考えてみました。

~思いつく方法~
dim DataArrayTemp[10000]
for i = 1 to 10000
flag = 0
// 重複文字がないかチェック
for j = i+1 to 10000
ifb Data_Array[i] = Data_Array[j] then
// 重複があった場合はflag = 1にする
flag = 1
break// 内ループ脱出
endif
next
// flag = 0であれば重複がない項目 (flag = 1のときは、重複がある)
ifb flag = 0 then
DataArrayTemp[temp_i] = Data_Array[i]
temp_i = temp_i + 1
endif
next

これは、力技なので配列内の量が多くなると計算時間がかかってしまいます。

ですので、重複しない文字列だけを抽出する効率の良い方法がありましたらどなたか知恵を貸してください。

配列10000個の中に次のように文字列が入っているとします。
(実際に使うのはもっとずっと長い文字列が配列内に格納されています。)
Data_Array[1] = "GRZRMZCOMKMSG"
Data_Array[2] = "DCUIROTLUMWBC"
Data_Array[3] = "RGLBMILRPBSMY"
.
.
.
Data_Array[9998] = "RSKFDHAHMOESI"
Data_Array[9999] = "AQVOXBVNILGOP"
Data_Array[10000] = "YNYRUPEXYOGFN"

配列Data_Array[10000]の中に重複文字列がないか探索したいと考えています。

~普段の手順~
配列中身を一度テキストに吐き出し、そのテ...続きを読む

Aベストアンサー

ハッシュ(連想配列)を使ってはどうでしょうか?

~Perlの例~
#$dataArrayTemp[0 .. 9999]には既に値が格納されていると仮定
%temp = ();
%nodup = ();
for ($i = 0; $i <1000; $i++) {
if (defined($temp{$dataArrayTemp[$i]})) {
if (defined($nodup{$dataArrayTemp[$i]})) {
push(@dups, delete($nodup{$dataArrayTemp[$i]}));
}
next;
}
$temp{$dataArrayTemp[$i]} = $i;
$nodup{$dataArrayTemp[$i]} = $i;
}

ソートすると,例えば(一般に最速と言われている)クイックソートならO(N logN)の計算量になりますが,ハッシュを使えば(少なくとも見かけ上の)計算量はO(N)で済みます。

ただ123456zennsinnさんの使っている言語(BASIC系?)にハッシュがあるかどうかは? VB.NETだとHashtableクラスとかありそうですが。

http://www.atmarkit.co.jp/fdotnet/dotnettips/125hashtable/hashtable.html

ハッシュ(連想配列)を使ってはどうでしょうか?

~Perlの例~
#$dataArrayTemp[0 .. 9999]には既に値が格納されていると仮定
%temp = ();
%nodup = ();
for ($i = 0; $i <1000; $i++) {
if (defined($temp{$dataArrayTemp[$i]})) {
if (defined($nodup{$dataArrayTemp[$i]})) {
push(@dups, delete($nodup{$dataArrayTemp[$i]}));
}
next;
}
$temp{$dataArrayTemp[$i]} = $i;
$nodup{$dataArrayTemp[$i]} = $i;
}

ソートすると,例えば(一般に最速と言われている)クイッ...続きを読む

QVBでグローバル変数を宣言するには

VB初心者ですが。クイズゲームのようなものを作成したいと考えてます。
Private Sub ~ End Sub の中で宣言した変数って他のところに呼び出したり(戻り値として渡す)出来るのでしょうか?
どこでも、いつでも呼び足せるグローバル変数の宣言とはどのようにやるのか、具体的に教えていただけないでしょうか?

Aベストアンサー

>Public a as Integerのように宣言して、初期化するにはどのように記述を行えばよいですか?

>Public a As Boolean = 0
のように記したら”コンパイルエラー”と出ました。

Booleanって整数値取れたかなと思いつつ。
Sub~End Sub内でa = 0を代入したりしてください

扱おうと言うことがあるかどうか疑問だけど

Public Const a As Integer = 10 'グローバルな定数の宣言

QVB.NET getとsetの概念がわかりません。

GetとSetがどういう働き・意味をもっているのか理解できていません。

たとえばSpecialTextBoxというクラスがあったとします。
***************************************************************
Imports System.Web.UI.MobileControls

Partial Class SpecialTextBox
Inherits System.Web.UI.MobileControls.MobileUserControl

Public Property Item() As SelectionList

Get
Return Me.CheckBox
End Get
Private Set(ByVal value As SelectionList)
Me.CheckBox = value
End Set

End Property

End Class
****************************************************************

ここでのGet Setはどういう動き・働きをしているんでしょうか?
わかる方がいたらご助言お願いいたします。
(サンプルソースなどがあれば理解しやすいかもしれません。。)

GetとSetがどういう働き・意味をもっているのか理解できていません。

たとえばSpecialTextBoxというクラスがあったとします。
***************************************************************
Imports System.Web.UI.MobileControls

Partial Class SpecialTextBox
Inherits System.Web.UI.MobileControls.MobileUserControl

Public Property Item() As SelectionList

Get
Return Me.CheckBox
End Get
Private Set(ByVal value As Sele...続きを読む

Aベストアンサー

getはそのインスタンスから値を取り出します。
setはそのインスタンスに値を設定します。
あなたの例だと、GetはCheckBoxの値を取り出します。
SetはCheckBoxに指定した値を設定します。

QEnterキーでマクロを起動さす。

Excelの(例)A1のセルに検索値を入力しEnterキーを押すと事前に組まれたマクロが起動する方法を教えて下さい。

又はEnterキーにマクロは設定できませんか?

Aベストアンサー

#4のnojioさんの補足ということでお読みください。(書いているうちにかぶってしまいました。)

Worksheet_Changeがsumi-hamaさんの意図かもしれませんが・・・下記はEnterに対して機能します。


下記コードを標準モジュールに貼り付け、
 Onkey_Set を実行することでEnterキーにマクロが割り当てられます。
 マクロ側で(MacroTest)Sheet1のA1を特定しています。

 Onkey_Off を実行することでEnterキーは元の機能に戻ります。


'Enterキーにマクロを割り当て
Sub Onkey_Set()
  Application.OnKey "{Enter}", "MacroTest"
End Sub

'デモ(Sheet1のセルA1のみで機能させる)
Sub MacroTest()
  If ActiveSheet.Name = "Sheet1" Then
    If ActiveCell.Address(0, 0) = "A1" Then
      MsgBox "Sheet1のセルA1でEnterキーを押しました"
    End If
  End If
End Sub

'Enterキーを元の機能に戻す
Sub Onkey_Off()
  Application.OnKey "{Enter}"
End Sub

#4のnojioさんの補足ということでお読みください。(書いているうちにかぶってしまいました。)

Worksheet_Changeがsumi-hamaさんの意図かもしれませんが・・・下記はEnterに対して機能します。


下記コードを標準モジュールに貼り付け、
 Onkey_Set を実行することでEnterキーにマクロが割り当てられます。
 マクロ側で(MacroTest)Sheet1のA1を特定しています。

 Onkey_Off を実行することでEnterキーは元の機能に戻ります。


'Enterキーにマクロを割り当て
Sub Onkey_Set()
  Applic...続きを読む

QLine Inputで文字化け(助けて下さい)

素人な質問ですみません。

Line Input #fpFileNo, strMsgBuffA

上記手法により、txtファイルから1行ずつレコードを
取り出していますが、
先頭が”全角文字”のレコードを取り出すと
先頭文字が”文字化け”します。

正しく全角文字が取り出せる手法を教えてください。

Aベストアンサー

ウィス! 今日は午後出社ダヨ
昨日は用事があって、きちんと最後まで説明できなかったダヨ。

Open strFile For Binary As #intFile
  Get #intFile, , bytBuff
Close #intFile
までは一緒

先頭から1~10バイトがShiftJIS
文字変数 = strconv(MIDB(bytBuff,1,10),vbunicode)

先頭から11~14バイトがバイナリ
redim バイト変数(3) as byte
バイト変数 = MIDB(bytBuff,11,4)
これで先頭の一行の改行コード直前までの値を取得したことになる。

ついでにいうと先頭から15~16バイトが改行コード
strconv(MIDB(bytBuff,15,2),vbunicode) = 改行コード(vbcrlf)
だから17バイト目からXレコードが始まることになる。

Xレコードを取るためには
MIDB(bytBuff,17,文字変数より取得したXレコード長)
とすると取れるはず。

バイナリと言ってもいろいろあるので、どんなデータが入っているのかわからないから、キャストしやすいバイト変数をサンプルに挙げたけど、必要に応じて違う変数を宣言する必要あり。

ウィス! 今日は午後出社ダヨ
昨日は用事があって、きちんと最後まで説明できなかったダヨ。

Open strFile For Binary As #intFile
  Get #intFile, , bytBuff
Close #intFile
までは一緒

先頭から1~10バイトがShiftJIS
文字変数 = strconv(MIDB(bytBuff,1,10),vbunicode)

先頭から11~14バイトがバイナリ
redim バイト変数(3) as byte
バイト変数 = MIDB(bytBuff,11,4)
これで先頭の一行の改行コード直前までの値を取得したことになる。

ついでにいうと先頭から15~16バイ...続きを読む

Qプロシージャからイベントをコールする

いつもお世話になっております。
VB.NETで開発をしておるのですが、
AAAのプロシージャからButton1_Clickのイベントを呼ぶ場合
Private Function AAA()
Call Button1_Click(**(1)**,**(2)**)
End Function
(1)と(2)に何を入れればよいのでしょうか?

宜しくお願いいたします。

Aベストアンサー

manihei様がすでにプログラマーとしてご活躍されていれば
お分かりのように、システム開発はほとんどの場合1人ではなく、
数名の方と一緒に開発されていると思います。
また、たとえ1人で開発されている場合でも毎日のようにコーディング
していれば、1度自分が書いたプログラムでも3日も経てば他人が書いたコードの
ように思えるはずです。
その上で、ただ「ボタンを押す」というコードを.NETで用意されている
1.Button1.PerformClick()
とするか
2.Button1_Click(New Object, New System.EventArgs)
とした場合どちらがわかりやすいでしょうか?
きっと、2のコードが書かれていた場合、manihei様を含め、
後でプログラムを見た人はきっと何らかの思惑が有って2のコードを
書いたはずだと考えるのでは無いでしょうか?
そして、何の意味も無いことが分かり、ガックリし軽い怒りを覚えます。
ttyp03様も何度もおっしゃっているように、「わかりやすい」コードを
書くのは未来の自分の為でもあるのでは無いでしょうか?



また、ボタンのイベントハンドラは以下のようになってますが、
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'処理
End Sub
イベントハンドラの引数にObject型のsender、System.EventArgs型のeが有ります。
senderはイベントが発生したオブジェクト(この場合ボタンですね)の情報が入ってます。
同様にeにも発生したイベントの情報が含まれてます。
ボタンの場合eにはたいした情報は有りませんが、テキストボックスのキーダウン
イベントなどでは、どのキーが押されたかなど様々な情報を取得出来ます。
開発者は当然その前提の下でイベントハンドラを実装します。

---------------------------------------------
イベントハンドラ内の処理例
'sender(Object)をbutton型にキャスト
Dim btn As Button = DirectCast(sender, Button)
'ボタンの名前を表示
MessageBox.Show(btn.Name)
---------------------------------------------

そこで、例えばAAAと言うメソッド内にボタンを押すという意味で以下のコード
Button1_Click(New Object, New System.EventArgs)
を使ってしまえばイベントハンドラ内では何の情報も得ることが出来ないどころか例外が発生します。

逆に、AAAと言うメソッド内でButton1_Click(New Object, New System.EventArgs)
などとイベントを直接呼んでいるのを知らずボタン内のイベントハンドラで
処理例のようなコードを誰かが書いたとしましょう。
さらに、AAAというメソッドは滅多に通る事が無く、テストの手抜きでリリースまで
しちゃた時には非常にアワワな事になります。
manihei様の安眠の為にもお勧め致しません。


最後に、補足では有りますがご質問内に有る
>Private Function AAA()
>Call Button1_Click(**(1)**,**(2)**)
>End Function
ですが、正確にお答えすると、
(1)には、Objectクラスまたは、Objectクラスの派生クラスのオブジェクト
(2)には、System.EventArgsクラスまたは、System.EventArgsクラスの派生クラスのオブジェクト
となります。オブジェクト指向の継承やポリモフィズムの部分を勉強すると意味が
分かるようになり、ボタンイベントだけでは無く今後プログラムを作成する上で
manihei様のお役にたつのではないかと思います。

長々と乱文失礼しました。

manihei様がすでにプログラマーとしてご活躍されていれば
お分かりのように、システム開発はほとんどの場合1人ではなく、
数名の方と一緒に開発されていると思います。
また、たとえ1人で開発されている場合でも毎日のようにコーディング
していれば、1度自分が書いたプログラムでも3日も経てば他人が書いたコードの
ように思えるはずです。
その上で、ただ「ボタンを押す」というコードを.NETで用意されている
1.Button1.PerformClick()
とするか
2.Button1_Click(New Object, New System.Event...続きを読む

QVB.NETのListBoxで指定した項目のValueを取得する方法

ListBoxで現在選択している項目のValueを取得する方法はわかるのですが、X個目のValueの値を参照、設定する方法がわかりません。教えてくださいー

Aベストアンサー

>選択した店舗の店舗番号を取得したいんです。
MSDN のListBox のサンプルをComboBox にして今回の質問に合わせて修正したものを以下に挙げておきます。
コマンドプロンプトで
vbc sample.vb
sample
でそのまま実行して試してみることができます。
要点は、DataSource でArrayListをつないでおくということです。
DataSource を使うとSelectedValue で取り出せるので便利ですね。

でもまあ、
こんなふうにしなくても、別にArrayListで保持しているのがわかっていれば、index で対応付けをして取り出したり設定したりできます。
'---------------------------------------------------------------
Imports System.Windows.Forms
Imports System.Drawing
Imports System.Collections

Public Class Store

Private aStoreName As String
Private aStoreNo As Integer

Public Sub New(ByVal name As String, ByVal no As Integer)
MyBase.New()
Me.aStoreName = name
Me.aStoreNo = no
End Sub

Public ReadOnly Property StoreName() As String
Get
Return aStoreName
End Get
End Property

Public ReadOnly Property StoreNo() As Integer
Get
Return aStoreNo
End Get
End Property

Public Overrides Function ToString() As String
Return Me.aStoreName & " - " & Me.aStoreNo
End Function
End Class


Public Class ComboBoxSample
Inherits Form
Friend WithEvents cmbStoreList As ComboBox = New ComboBox()
Dim textBox1 As TextBox = New TextBox()

<System.STAThreadAttribute()> _
Public Shared Sub Main()
System.Windows.Forms.Application.Run(New ComboBoxSample())
End Sub

Public Sub New()
Me.AutoScaleBaseSize = New Size(5, 13)
Me.ClientSize = New Size(292, 181)
Me.Text = "ComboBox Sample"

cmbStoreList.Location = New Point(24, 16)
cmbStoreList.Name = "cmbStoreList"
cmbStoreList.Size = New Size(232, 130)


textBox1.Location = New Point(24, 160)
textBox1.Name = "textBox1"
textBox1.Size = New Size(40, 24)
Me.Controls.AddRange(New Control() {cmbStoreList, textBox1})

Dim Stores As New ArrayList()
Stores.Add(New Store("A店", 15))
Stores.Add(New Store("B店", 20))
Stores.Add(New Store("C店", 45))
Stores.Add(New Store("BLUE店", 99))

cmbStoreList.DataSource = Stores
cmbStoreList.DisplayMember = "StoreName"
cmbStoreList.ValueMember = "StoreNo"

End Sub

Private Sub InitializeComponent()

End Sub

Private Sub cmbStoreList_SelectedValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbStoreList.SelectedValueChanged
If cmbStoreList.SelectedIndex <> -1 Then
textBox1.Text = cmbStoreList.SelectedValue.ToString()
End If
End Sub
End Class

>選択した店舗の店舗番号を取得したいんです。
MSDN のListBox のサンプルをComboBox にして今回の質問に合わせて修正したものを以下に挙げておきます。
コマンドプロンプトで
vbc sample.vb
sample
でそのまま実行して試してみることができます。
要点は、DataSource でArrayListをつないでおくということです。
DataSource を使うとSelectedValue で取り出せるので便利ですね。

でもまあ、
こんなふうにしなくても、別にArrayListで保持しているのがわかっていれば、index で対応付けをして取り出し...続きを読む

QVB.NETで他のプロジェクトで作成したフォームを使う方法

こんにちは。
VB.NETのプロジェクトがぐちゃぐちゃで参照設定とかいろんなの呼んでしまっているので、新しく作成しなおしたいのですが、
新しいプロジェクトでプロジェクトを作成し、前のプロジェクトで必要なファイル(.vb、RESX)を新しいプロジェクトのフォルダにコピーしたのですが、
普通のモジュールは追加>新しい項目の追加でなんとか追加できたのですが、フォームの追加の仕方がわかりません><教えてくださいー

P.S. RESXファイルってフォームのデータが入ってるのでしょうか?そんな気がしてコピーしたのですが。

※VB6.0からVB.NETに以降した際にアップデート情報みたいなのがプログラム上にくっついてしまって.vbファイルも参照項目も増えまくってしまった

Aベストアンサー

ドラッグ&ドロップが使いやすい。
Windowsのエクスプローラでvbファイルをドラッグして、VS.NETのソリューションエクスプローラへドロップする。

QDoEvents関数って何?

こんにちは。

VBAやプログラミングに詳しい皆様に
教えていただきたい質問があります。

cells(1,1)からcells(5000,1)までの値を消去するときに
処理の進行状況を表示するためにuserform上にプログレスバーを表示したいと思います。

そこで下記のようなコードを入力しました。

userform1.show
for i =1 to 5000
cells(i,1)=""
userform1.progressbar1.value=i/5000*100
next i
unload userform1

しかしこれだとuserformの背景が真っ白になってしまい
ラベルの文字も消えてしまいます。
そこで「EXCEL VBA パーフェクトマスター」という本を見たら

for i =1 to 5000
cells(i,1)=""
userform1.progressbar1.value=i/5000*100
DoEvents
next i
unload userform1
と入力すれば解決することがわかりました。

しかし「DoEvents」についてあまり詳しく書いていなかったのでDoEvents関数をヘルプで見ると、
「発生したイベントがオペレーティング システムによって処理されるように、プログラムで占有していた制御をオペレーティング システムに渡すフロー制御関数です。」

と書いてあるのですが正直、書いてあることがよくわかりません。

どなたかDoEvents関数について、
もう少しわかりやすく教えていただけませんか。
それから、最初に書いたコードで実行すると
ユーザーフォームの背景が真っ白になってしまう原因も
教えていただけませんか?

よろしくお願いいたします。

こんにちは。

VBAやプログラミングに詳しい皆様に
教えていただきたい質問があります。

cells(1,1)からcells(5000,1)までの値を消去するときに
処理の進行状況を表示するためにuserform上にプログレスバーを表示したいと思います。

そこで下記のようなコードを入力しました。

userform1.show
for i =1 to 5000
cells(i,1)=""
userform1.progressbar1.value=i/5000*100
next i
unload userform1

しかしこれだとuserformの背景が真っ白になってしまい
ラベルの文字も消えてしまいます。
そ...続きを読む

Aベストアンサー

簡単に言うと、
OS に制御を渡すってことです。(ヘルプそのまんま)
時間が掛かるループ処理などの場合、ループが終わるまで制御は独占されてしまいます。
ですのでループ中は OS や Excel そのものにも再描画をさせる暇さえ与えません。
途中に DoEvents を入れると制御が OS に渡るので、OS は溜まっていた処理をそこで行うことができます。
結果、フォームの再描画などが行われることになります。

注意点ですが、
Private Sub CommandButton1_Click()
  Dim i As Long

  For i = 1 To 50000
    DoEvents
    Cells(i,1) = ""
  Next i
End Sub

Private Sub CommandButton2_Click()
  MsgBox "hoge"
End Sub

っていうフォームのコードがあった場合、
DoEvents を入れることによって、ループ中にユーザーがCommandButton2 を押すことによって CommandButton2 のクリック イベントも動いちゃいます。
CommandButton1 のクリック イベントではループの前に
CommandButton1.Enabled = False
CommandButton2.Enabled = False
を書いてフォーム上の CommandButton を無効にしておき、ループが終わったら
CommandButton1.Enabled = True
CommandButton2.Enabled = True
と書いて CommandButton を有効に戻してください。

これを工夫すれば、CommandButton2 で CommandButton1 のループを途中キャンセルする処理もすることができます。

Private Canceled As Boolean

Private Sub CommandButton1_Click()

  CommandButton2.Enabled = False

  Dim i As Long
  For i = 1 To 50000
    DoEvents

    If Canceled = True Then
      MsgBox "キャンセルしました"
      Exit Sub
    End If

    Cells(i, 1).Value = ""
  Next i
End Sub

Private CommandButton2_Click()
  Canceled = True
End Sub



コードの行頭にあるスペースは見易さのために全角スペースで作成していますので、これをこのままコピペするとエラーになるかもしれません。
コピペするなら行頭の全角スペースを半角スペースに直してください。

簡単に言うと、
OS に制御を渡すってことです。(ヘルプそのまんま)
時間が掛かるループ処理などの場合、ループが終わるまで制御は独占されてしまいます。
ですのでループ中は OS や Excel そのものにも再描画をさせる暇さえ与えません。
途中に DoEvents を入れると制御が OS に渡るので、OS は溜まっていた処理をそこで行うことができます。
結果、フォームの再描画などが行われることになります。

注意点ですが、
Private Sub CommandButton1_Click()
  Dim i As Long

  For i = 1 To 50000
...続きを読む

QMS-DOSコマンドプロンプトを途中で止める

SQLPlusで、MS-DOSコマンドプロンプトを使用する場合、SELECT分の抽出があいまいすぎて大量のデータが結果として表示される場合、途中でキャンセルはできないのでしょうか?現状、出力が終えるまでぼけーって待ってます。
今回の質問のようにMS-DOSコマンドプロンプトのコマンドが他にもありましたら教えてください。

Aベストアンサー

プログラムの作りにもよりますが、
「Ctrl+C」で停止
「Ctrl+S」で一時停止
出来ないでしょうか?


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング