Excel VBA 質問スレ Part61

■ このスレッドは過去ログ倉庫に格納されています
2019/04/25(木) 23:41:03.61ID:rni/4bMj0
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512

ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part60
https://mevius.5ch.net/test/read.cgi/tech/1552736349/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2019/05/27(月) 15:14:09.75ID:6csejWaN0
>>360
そこを何とかするのが面白いんじゃないの
マウント取りたいならハエやカエル相手にしてればいいだけだしね
2019/05/27(月) 15:29:12.90ID:W0zr6KdF0
>>361
だったら適当にすれば(笑)

出来ることを安易に提案することの影響を考えろよ
例えば、自動計算を止める
こんなのそのままにされたら困るほかの人いるだろ
でも単にONとOFFじゃあだめなんだよ、直前を記録して戻す
また、エラーや中止でも戻さないとな
2019/05/27(月) 15:39:29.96ID:W0zr6KdF0
>>361
きみはハエやカエル相手にして面白がってる
引きこもりさんってことね
2019/05/27(月) 15:42:22.97ID:6csejWaN0
>>362>>363
韓国人?
2019/05/27(月) 15:42:59.47ID:6csejWaN0
おだてるの意味もわかってないみたいだし、韓国の方でしたか
そりゃ話も合わないな
2019/05/27(月) 15:44:13.29ID:W0zr6KdF0
>>364
きみはハエかカエル?
2019/05/27(月) 15:45:54.11ID:W0zr6KdF0
>>365
ハエかカエル?
しかたないな
2019/05/27(月) 15:53:54.48ID:6csejWaN0
おだてる・・・w
2019/05/27(月) 16:04:29.34ID:6csejWaN0
これ以外の高速化ってありますか?
https://15g.jp/post-314/
2019/05/27(月) 16:27:23.36ID:aE9KPqY2M
>>369
これで問題ある場合はループしてるロジックが悪いか
ネットアクセスではありませんか?
2019/05/27(月) 16:42:48.59ID:6csejWaN0
>>370
運用方法が急に変わりまして・・
毎日 100ループ→毎時間 20000ループ
他の高速化が無いものかな、と
特になければ諦めてロジック組み直します
2019/05/27(月) 16:43:14.09ID:2J++TcAHM
再描画を止めるのは好かんな
2019/05/27(月) 17:19:36.20ID:aE9KPqY2M
>>371
セルへのアクセスを減らし
変数テーブルで処理をするぐらいかな簡単なのは
2019/05/27(月) 17:53:10.57ID:aE9KPqY2M
変更のないセルはかきかえない
変数の型をこていするかな
2019/05/27(月) 20:18:12.39ID:28fQIolrF
>>369
完全に嘘。
そもそも、それなりに書ける奴ならこの手法では速くならない。
2019/05/27(月) 20:19:14.57ID:28fQIolrF
逆に、これで格段に速くなったら恥ずかしいと思うべきだ。
2019/05/27(月) 20:29:10.36ID:eWpgS1rnF
高速化については下記が参考になる。

https://excel-ubara.com/excelvba4/EXCEL228.html
2019/05/27(月) 21:03:48.67ID:TIEuQB3m0
>>345
できるけど、一番最後の処理が事故を起こしそうだから1クッション置いた方がいいかも
2019/05/27(月) 21:13:42.01ID:Soi68xiZ0
セルというかシートは使わない
データ保存には外部バイナリファイルを読み書きする
2019/05/27(月) 21:16:23.22ID:TIEuQB3m0
>>369
これは描画を抑制するからその分の時間がかからなくなるというだけなので、表示に因らない処理の速度アップはまた別だよ
2019/05/27(月) 22:07:18.66ID:9GzIJnKt0
何でユーザーフォームを使うのかって?
シートに書くより格好いいからに決まってるじゃんwwwww

いや、わりとマジでそんなもんだと思いますけど。
だって、ユーザーフォームじゃなきゃ再現できないようなものって、
普通の事務処理でそんなに無いでしょ。
2019/05/28(火) 01:04:45.98ID:Rr62XR8Vx
ワークシートのイベントに重めの処理を書いている場合、シート側のイベントを避けるためユーザーフォームで出入力制御や演算を処理させることはある
2019/05/28(火) 08:43:02.61ID:8P1bQTIM0
入力のしやすさとかフォームの方が良い場合もあるし、ユーザーインターフェイスとしてはフォームの方が優れている。

Excel使わずにメモ帳とCSVで事足りるってのと同じような考えの人がいるな。
2019/05/28(火) 09:44:28.89ID:CE2aKfrCH
初心者レベルの知識で長いことVBAいじってる者なんだが、
functionプロシージャって使わなくない?
普通のsubしか使ったことない

どんな時に便利なの?
2019/05/28(火) 09:47:42.25ID:rhAlx8Ij0
>>384
値を返す時。便利というか必須。=sum()で値が返らなかった時の事を考えてみると良い
むしろfunctionが普通なのだ

vbaの場合、ワークシート変更しておしまいってパターンが多いから恩恵を得にくいけどね
2019/05/28(火) 09:55:56.33ID:JWvhlEsx0
Findを利用したコードについて教えて下さい。

書籍、サイトで掲載されていたコードを利用し、少し変えたものです。
Findメソッドを使ってC列の”たろう”を検索します。
探し出したら、A〜C列の文字列をE列に結果を返すように作り替えてみましたが、結果がE1〜G1に上書きされてしまいます。
Cells(Rows,count を理解しきれていない、11行目のCells(i,”E”)の部分も理解していないと感じます。
どのように違うのか、ご指導お願いします。


ワークシートはこんなかんじ E列からG列は実行後の結果をイメージしたものです
  A  B   C   D  E    F  G
1 日付 売上 担当者    000  AAA たろう
2 000 AAA たろう     333  DDD たろう
3 111 BBB はなこ
4 222 CCC たかし
5 333 DDD たろう
6 444 EEE はなこ
7 555 FFF くみこ
2019/05/28(火) 09:56:25.54ID:JWvhlEsx0
386のつづき


Sub Find()
Dim temp As Range, tempAddress As String, i As Long

With Range("A1").CurrentRegion.Resize(, 1).Offset(, 2)
Set temp = .Find(what:=“たろう”)
If Not temp Is Nothing Then
tempAddress = temp.Address
i = Cells(Rows.Count, "E").End(xlUp).Row

Do
temp.Offset(columnoffset:=-2).Resize(, 3).copy Cells(i, "E")
Set temp = .FindNext(temp)
Loop While temp.Address <> tempAddress
End If
End With
End Sub

Sub copy()
Range("A:G").Clear
Worksheets("template").Range("A1:C7").copy Destination:=Worksheets("Sheet1").Range("A1")
End Sub
2019/05/28(火) 10:10:54.71ID:CE2aKfrCH
>>385
うーん、値を返すのは分かるんだけど、わざわざsubから取り出す意味が分からんのよ
subの中に入れちゃえば良くない?

コードが長くなる時とか、他のプロシージャにも流用したい場合なんかにfunctionで別プロシージャにしとくと分かりやすいってこと?

そういやfunctionを関数みたいに使う場合もあると聞いたな
2019/05/28(火) 10:32:00.95ID:P/fMeUQp0
>>384
>>385意見に賛成だが少し付け加えます。
基本的にsubにしろfunctionにしろ長くだらだら作らない
出来るだけ意味のある汎用性のある処理はそのルーチンを呼び出すようにする
その時に値を返せるfunctionの方が圧倒的に有利
初心者は同じようなルーチンをコピペで増殖させるが、後々メンテナンスに困る
それらをライブラリーとして持つと自分の資産になるんだけどね、それが重要なんだよ
2019/05/28(火) 11:24:47.87ID:aRCJr/ZnM
>>384
ネタでしょ?
モドリッチがない方が便利だなんて、そんな訳ないじゃん
2019/05/28(火) 11:26:30.05ID:CE2aKfrCH
>>389
あーその説明で分かった ありがとう

たしかに今までは、動けばいいやで作ってたからコードが長くなってた
顧客コードから各データを検索する時なんか、
Cells(i,2).value=Range(Z:Z).Find(Cells(i,1)).Offset(0,5).Value
みたいなコードを10行とか書いてたわ
2019/05/28(火) 12:23:13.41ID:1q3vxt7ga
OutlookのVBAもここで可でしょうか?
違ったら誘導お願いします

上司へ「承認お願いします」と言った趣旨のメールを送った際、上司がボタン1つで承認する旨のメールが送れるようにしたいです
しかし複数いる上司全員にマクロの設定方法を教えるのは面倒です
私から送信するメール本文にマクロを組み込み、上司が受け取った際に本文にあるリンクを押せば(マクロを自分で設定していなくても)返信メールが自動作成されるような手法が取れればベストなのですが、そういったことは可能なのでしょうか?
2019/05/28(火) 12:47:38.41ID:i1bbppKtM
>>392
ウィルスメールの作成方法きいてる様なもんだなw
2019/05/28(火) 12:51:48.37ID:Z4r31YmpM
>>392
まずは社内でOLのセキュリティ設定がどうなのか。
ザルならやりようはいくつもあるが、ガチガチなら選択肢は少ない
2019/05/28(火) 13:44:15.47ID:P/fMeUQp0
>>392
まあ、バカ上司をサポートするのと
バカ上司の影響をサポートするのと
どちっがしたいんだ?
2019/05/28(火) 13:45:21.90ID:8P1bQTIM0
>>388
VBA初心者にありがちな意見だね。
プログラムを組む時の考え方が全く違う。
組める奴なら最初から構造的に考える。
動きゃ良いなどと考える奴はいない。
2019/05/28(火) 13:48:09.91ID:8P1bQTIM0
>>392
マクロでやらなくても承認ボタンを追加する機能があった筈だが。
2019/05/28(火) 13:50:35.37ID:i1bbppKtM
> VBA初心者にありがちな意見だね。
はい、きょうもマウント取りたい人が来ましたよ
2019/05/28(火) 14:01:27.19ID:8P1bQTIM0
>>391
>>389の言ってることは全くその通りなんだが、FunctionにしろSubにしろ、内容が汎用的なものをまとめる、同じような処理を纏める考え方をするようになると最初から構造的に組むようになる。
その方が圧倒的に楽だから。

あと、例に挙げてるコードは良くない。
ブックやシートの省略はバグの元。
2019/05/28(火) 14:03:33.28ID:8P1bQTIM0
>>398
マウントも何も、明らかに初心者なんだから仕方ないだろ
2019/05/28(火) 14:18:44.11ID:rhAlx8Ij0
> VBA初心者にありがちな意見だね。
この部分は必要なかったんだよなぁ
2019/05/28(火) 14:34:43.00ID:8P1bQTIM0
>>401
必要なんだが。
2019/05/28(火) 15:27:43.49ID:m2eXkVaQM
初心者お断りな質問スレが存在した…?
2019/05/28(火) 15:33:18.00ID:rhAlx8Ij0
>>402
君はそう書かないと回答できないのか、なるほど
興味深い
2019/05/28(火) 15:57:40.29ID:JWvhlEsx0
>>386
>>387
話題を気にせずに、切り込んだ形で質問をしてしまいました。
ホントに困ってしまったのでココで質問をしてみましたが、割り込んだ形でご迷惑をおかけしました。

VBAなんでも質問スレで聞いてみます。
お邪魔しましたm( _ _ )m
2019/05/28(火) 15:58:05.43ID:8ZgSX7bEF
>>404
構造的に考えるべきという意味付けの為に必要。
初心者にありがちだということで、初心者からレベルアップした方が良いということになる。
2019/05/28(火) 16:01:17.83ID:8ZgSX7bEF
>>405
別に迷惑でも何でも無い。
元々、初心者の質問に難癖を付けた奴が悪いと思ったから>>355を書いたんだが、内容を見ずに変に絡んでくる奴が出てきただけのこと。
2019/05/28(火) 18:23:49.73ID:PIv3udRAr
i=の行をloopの中に入れる
2019/05/28(火) 18:25:13.81ID:PIv3udRAr
その上のtempaddressも
2019/05/28(火) 18:29:24.54ID:Bg5LHkgbH
マウントしてると誤解を招くような
会話しかできない奴は能力低い奴多い
他人の意見も聞かないしね。
傲慢が後に返り討ちにあう
2019/05/28(火) 18:33:26.76ID:C7Ijh9EKa
>>397
こんなんあったんですね!
自分で作るなら他にも機能足してたかもしれないけど、これなら簡単で皆で使えるからこれでいきます


ウイルスメールの作成方法……確かに……
2019/05/28(火) 19:06:09.82ID:+01nmcZGF
>>410
誤解を招く前に、プライドに触ったのか碌に内容読まずに絡む奴の方がよっぽど問題だと思うが。
2019/05/28(火) 19:42:52.66ID:ID0apHa80
ところでここは「Exce VBA」の質問スレ
2019/05/28(火) 19:55:29.19ID:P/fMeUQp0
>>410
マウントしたい奴と思ったら絡むなよ
意味もなく伸びrだけ
2019/05/28(火) 22:28:38.54ID:6NK7Ep/b0
>>384
functionなら1行で書ける!
と思ったけど、よく見たらどっちも2行かかるな。

Dim A
A = function()

Dim A
sub(ByRef A)

functionのメリットって何だろ?
1個しか返せないし。
2019/05/28(火) 22:45:21.26ID:g3Ue34fJ0
>>415
馬鹿はいい加減黙れよ
2019/05/28(火) 22:46:58.82ID:exe6lUi60
>>415
教えてほしいなら教えてくれと言えば良い
君以外全員わかってるぞ
2019/05/28(火) 23:03:25.05ID:sz8y6/Um0
>>416
容赦なくてワロタw

>>415
If func(x) Then
とか

func1(func2(a), func3(b))
とか
2019/05/28(火) 23:15:31.12ID:MN8nEIAEd
>>415
1個しか返せないといっても工夫の問題。
配列で返せば実質何個でも返せるし、Collectionで返すこともできる。
クラスインスタンスを返すなんてことも出来る。
どれも普通にやることだよ。

何を返せば使いやすいかを構造的に考えて人間にとってピンと来るように組めばメンテナンスも楽だし、プロシージャの内容も理解しやすい。
初心者のコードは何をする処理なのか全く分からないことも多いが上級者のコードは考えて組まれてるので理解しやすいんだ。

>>416
>>417
罵倒するだけで内容を書かないんじゃ君らのレベルも押して知るべしだな。
2019/05/28(火) 23:18:36.46ID:MN8nEIAEd
>>418
むしろ

Function Hoge(Arg() As String) As String()

の方が適切かな。

或いは
Function Hoge(Arg() As String) As Collection

とか。
2019/05/28(火) 23:45:10.83ID:sz8y6/Um0
>>419
AddressOf で関数を返すことすら出来るのだ
2019/05/28(火) 23:58:45.95ID:0rD99vo/0
IF Func() Then
とか
Loop Until Func()
なんてのがSubでは代用しにくい使い方だな (できないとは言わないが)

むしろ普通の数式で
A = Func1() + Func2() + Func3()
みたいに書きたい時の方が、Subに置き換えた時の無駄が多くなりそう
2019/05/29(水) 00:02:34.60ID:S0wmSPvZ0
2年ぐらい前にもSubとFunctionに違いなんかないと言い張る粘着がいたのを思い出した
2019/05/29(水) 00:03:33.14ID:6UUzdaAE0
BASICなんだからGOTOだけで十分
2019/05/29(水) 00:47:16.25ID:aQ2xiGWFd
>>421
おう、ここで初めて高度な話を見た。
426デフォルトの名無しさん (ブーイモ MMcf-e2Fz)
垢版 |
2019/05/29(水) 03:04:42.46ID:1woLKBVkM
・Sub
・返り値のないFunction
この違いは何ですか?
2019/05/29(水) 04:29:34.43ID:WducifPVa
subじゃ1個も値返せないじゃん
2019/05/29(水) 05:02:37.42ID:E4T3mNp50
戻り値ないならsubでいいじゃんって話だと思うんだけど俺も一応はそう思う
昔はsubばかりで書いてた

subは単体で実行できるけどfunctionは単体では実行できないという違いがある
functionは他から呼び出さないと実行できないという意味でね。

ここからは俺の好みみたいなもんだけど、
ボタンに直結してるようなエントリーポイント的なものは
subで書いて、それ以外、特に引数を受けとって処理するものは
単体では実行できないことを明確にする意味で全てfunctionにしてる
そう論理的で整合性のある区分というわけではないんだけど。
2019/05/29(水) 08:46:31.68ID:WZbm0MMEM
>>428
単体で実行できるかどうかはSub/Function の差じゃなくて、引数を取る/取らないの差じゃなかったっけ?
2019/05/29(水) 08:57:09.71ID:dT9QfEjx0
>>429
正解

Sub foo() '単体実行可能
End Sub

Sub bar(baz) '単体実行は出来ない
End Sub
2019/05/29(水) 08:58:24.42ID:dT9QfEjx0
あと、実行可能かどうかはpublic/privateで切り分けるべきだろう
2019/05/29(水) 09:10:25.71ID:QQeifizk0
セルに式として関数を入力して呼べるFunctionと呼べないSub
2019/05/29(水) 09:17:16.17ID:dT9QfEjx0
>>432
あれ、じゃあ何のためにsubって存在するんだ
return 0しなくていいってだけ?
2019/05/29(水) 09:30:42.49ID:dT9QfEjx0
基本はfunction
スクリプトとして何かをさせたい時にだけsubで定義する。C言語で言うint main(){}
戻り値や引数のありなしでは切り分けない

と考えると自然と思うんだけど、どうだろう

この考えだと、private subは使うべきじゃないって事になる
2019/05/29(水) 10:59:47.52ID:bJuQUiqr0
別に良いんだよ何を使おうと、まあ好きにすればって程度
まあ、ただ論理的に考えずごみを量産するやつはいるな
2019/05/29(水) 11:30:55.13ID:zbMbGE8SM
>>426
戻り値のないFunctionは存在しない
戻ってきた値を無視することができるだけ

つまり戻り値を格納するためにメモリを必ず使うから、Subと比較して速度とメモリ効率の2点で不利になる
2019/05/29(水) 11:31:54.96ID:WZbm0MMEM
Excel長老の話って知ってる?
2019/05/29(水) 11:32:51.36ID:WZbm0MMEM
>>436
メモリ効率ってネタだよね?
2019/05/29(水) 11:39:17.00ID:zbMbGE8SM
>>433
今から40年以上前、それまでのシーケンシャルなプログラムでは能率が悪いから構造化しようという話しが出て、その時に提唱されたのが「手続き(Sub)」と「関数(Function)」という概念
しかし、教育用として作られたPascalという言語では忠実に実装されたけど、C言語には関数しか用意されなかったし、その後に登場したJavaも関数しかない
結局は言語を設計した人のリテラシーというか、単なる好みで決まったようなもん

今でもたくさんの言語が乱立してるのは、結局はみんな「ぼくの考えたさいきょうのげんご」が作りたいだけと思って、あながち間違いじゃない
2019/05/29(水) 11:41:11.71ID:zbMbGE8SM
>>438
ネタじゃないよ
リカーシブなプログラムを書いてみればすぐわかる
VBAでもFunctionは呼び出すたびにヒープを最低4バイトずつ消費するから、再帰の最大回数が少ないのは簡単な実験ですぐに確認できる
2019/05/29(水) 11:48:47.33ID:WZbm0MMEM
>>440
「ヒープ」ってネタだよね?
2019/05/29(水) 11:53:59.73ID:dT9QfEjx0
>>439
ありがとう!そういう事か
sub便利だけど、便利過ぎてかなり変な事になってるね
subから呼び出すのはfunctionと決めていれば良いんだろうけど、
でもsubからsub呼び出す事もあるから・・・
結局subって意味なくね?

C言語のsub無しが正解のような気がする。

>>441
なんでネタと思うんだ?
2019/05/29(水) 11:58:48.77ID:zbMbGE8SM
簡単な実験
Funcの方がメモリをたくさん消費するから繰り返せる回数が少ない
データキャッシュも有限なリソースだから、どちらでもいい時はFuncの方が不利

Sub sub_test()
  test_sub (1)
End Sub

Sub func_test()
  test_func (1)
End Sub

Sub test_sub(n)
  n = n + 1
  Debug.Print n;
  test_sub (n)
End Sub

Function test_func(n)
  n = n + 1
  Debug.Print n;
  test_func (n)
End Function
2019/05/29(水) 13:23:20.90ID:AfH1iVf/M
Selenium+vbaを使って
ChromeでWebページをPDF保存することは可能でしょうか?
2019/05/29(水) 13:29:26.76ID:dT9QfEjx0
>>444
vbaは不要っぽい
http://takuya-1st.hatenablog.jp/entry/2017/06/21/140000

記事が古いから一度試したほうが良いと思う
2019/05/29(水) 13:43:28.26ID:aQ2xiGWFd
>>442
だから構造的に考えて意味的にFunctionが適するかSubが適するかを選択するんだ。
意味的にというのは人間の感覚にとって合った方を採用すべきということ。

Cだってvoidがあるじゃねーの。
無理矢理1を返すとかすれば戻り値が絶対に必要な言語設計だってできた筈。
なんでvoidがあるかといえば、やっぱり意味的に戻り値無しが人間にとってピッタリ来ることがあるからだと思うが。
2019/05/29(水) 15:03:19.55ID:eVQzoh+sa
処理結果をpublicで判断するよりは
値を返すほうが使いやすい
2019/05/29(水) 17:40:58.36ID:S0wmSPvZ0
プログラムを一人で作って自分だけが永遠に保守するなら好きなように作ればいい
大規模なアプリをチームで作ったり、他人が修正したりする時には間違いを起こさないようにルールを決める必要があって、
経験上、カプセル化した方が結果的に安全で能率がいいということになっている

そのための手法の一つが変数のスコープを狭くすること、グローバル変数は使わないこと、なんだな
だから結果はどこかの変数に入れるんじゃなくてFunctionで返すんだよ

複数の値を返したいなら設計を見直すべきで、構造体を使うか、1つずつFunctionを分けるか考える
2019/05/29(水) 18:50:10.49ID:b/xKBA/BM
>>445

SeleniumではなくSeleniumBasic
の間違えでした。
ごめんなさい。
2019/05/29(水) 18:57:16.16ID:dT9QfEjx0
グローバル汚染はマジでエグいからな
「name」「mail」この変使われてたら超めんどい

>>449
Selenium使えばいいんじゃない
2019/05/29(水) 19:33:05.85ID:gbtQDfh8M
seleniumってもう使い物にならなくなってなかったっけ
2019/05/30(木) 00:50:17.75ID:oM5Ks3kV0
>>440
ヒープとスタックの違い理解してる?
2019/05/30(木) 03:19:10.04ID:1qsenVBka
byref もあるしな
2019/05/30(木) 08:21:00.17ID:oyMl0bcF0
>>452
それって日本昔話に載ってる?
今も気にすること?
2019/05/30(木) 12:02:16.59ID:fCKFoHR/M
使うスタック量によって再帰での有利不利って理屈の上ではあるだろうけど
現実的な意味ってあるの?
条件によってスタックオーバーフローする「かもしれない」プログラムに対して
引数や返り値を考慮とか再帰深度に気を使うとか、ちょっとVBAで考えられないんですけど
456デフォルトの名無しさん (オッペケ Sr33-NT0q)
垢版 |
2019/05/30(木) 12:25:00.74ID:0nKLhIYFr
>>454
SubとFunctionでメモリ効率の違い考慮するレベルなら
2019/05/30(木) 12:31:21.82ID:NTWA4E5yM
>>454
別に気にしなくてもいいけど>>440みたいなツッコミ入れるならちゃんと理解してないと恥をかく
2019/05/30(木) 15:33:21.51ID:oyMl0bcF0
>>457
おれも、昔話書きたくなったレベル
z80とか8080とかな8086なんて凄いよな
2019/05/30(木) 18:56:24.47ID:86kk1xI3a
ここできいていいのか分かりませんがマクロの組み方で教えてください

「=5月シートA1」
「=5月シートA2」
みたいに引っ張っているセルを
「=6月シートA1」
「=6月シートA2」
みたいに変えるマクロを組みたいんですが

それを毎月自動で7月、8月、と月に合わせて変えるのはどうやるのですか?

理想としては、5月と書いてあるセルを6月と入力し、そのセルをコピペしていくマクロを組みたいのですが、その流れを作っても元の5月だけがコピペされてしまう状態です。

説明が下手ですみません。
2019/05/30(木) 19:04:11.68ID:1nLCMVmfr
今月=month(date)
activesheet.range("a1").resize(5).formula="="&今月&"!a1"
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況