Excel VBA 質問スレ Part65at TECH
Excel VBA 質問スレ Part65 - 暇つぶし2ch691:デフォルトの名無しさん
20/04/27 20:48:23.14 XYadQOO00.net
>>685
相手は誰だ?
ワークシート? Dictionary? CSV文字列?

692:デフォルトの名無しさん (ワッチョイ 0101-K+B8)
20/04/27 23:24:48 JH5ykH9R0.net
>>681
自分の素朴な疑問に答えてもらってありがとうございます。

693:デフォルトの名無しさん (ワッチョイ 7a4b-R0M4)
20/04/27 23:26:56 g7wz6Zov0.net
ここの人ら凄い、
いつも感心しながら読んでるけど本当に勉強になる。
これだけ知識や経験あるならユーチューバ―とかになって上手くやれば副業も出来そう

694:デフォルトの名無しさん (ワッチョイ acce-1Gce)
20/04/27 23:27:29 fDdETITO0.net
>>685
処理したい変数がたくさんあって繰り返し同じことをする時
処理したいセルがたくさんあって繰り返し同じことをする時

695:デフォルトの名無しさん (ワッチョイ acce-1Gce)
20/04/27 23:28:15 fDdETITO0.net
office田中もいつのまにかyoutuberになってたけど、こんなおじいちゃんだとは思わなかった

696:デフォルトの名無しさん (ワッチョイ 64ad-Btmo)
20/04/27 23:42:25 RTbdScdC0.net
VBAを本を読んだりググったりして勉強中です。
他社システムからいただくCSVファイルをExcelに取り込んで編集する必要があります。
頭にゼロが付いて、長さが不定の数字のフィールドがあるので、そこは文字列で
扱わなくてはならず、そのままExcelで開けません。
querytables.add でインポートしてみたところ、セル内改行の含まれる列があるため、
1行であるべきデータが2行になってしまいます。
POWERQueryを使えば回避できる、という情報にに突き当たり、とりあえずマクロの
記録をしてみて、使えるように変えられないか、と思いましたが行き詰っています。
「ソース = Csv.Document(File.Contents(””CSVのパス””),… 」
のCSVのパスの部分を変数にしたいのですが、変数にすると
「 .Refresh BackgroundQuery:=False」のところで
[Expression error] インポート 変数 がエクスポートと一致しません。モジュールの参照が漏れていませんか?」
と親しげだけど、冷たく突き放されます。
知識が足りなさすぎるのですが、データをきれいにして早く次の処理を作らなくては
いけなくて焦っています。
先輩たちはテレワークで、あまり質問もできず困っております。
どうぞよろしくお願いいたします。

697:デフォルトの名無しさん (オッペケ Sr5f-HrHD)
20/04/27 23:45:46 3fBcsBz5r.net
>>690
再生数少ないけど分かりやすいから初心者は見るべきだと思う
schooのは微妙だけど

698:デフォルトの名無しさん (ワッチョイ 4c2c-iUOt)
20/04/28 01:18:35 7QVY/xgO0.net
>>691
Ruby なら、以下をscript.rb に書いて、
CSV データを、input.csv に書いてある時、

ruby script.rb input.csv
と、シェルで実行すると、

require 'csv'

file_path = ARGV[ 0 ] # 引数には、CSVファイルパスを渡す。input.csv

# CSV ファイルを、1行ずつ処理する
CSV.foreach( file_path ) do |row|
puts "#{ row[ 0 ] } : #{ row[ 1 ] }"
end

入力・input.csv
あ,いう
a,bc

出力
あ : いう
a : bc

699:デフォルトの名無しさん (ワッチョイ 7ab5-l81y)
20/04/28 02:18:31 wtscQEd50.net
Sub ループuntil()
 Dim g As Long
  g = 3
 Do Until Cells(g, 2) = ""
 Cells(g, 6) = Cells(g, 2) + Cells(g, 3) * 10
 g = g + 1
 
 Loop Dim ms As String
 ms = MsgBox(g & "回ループ", vbYesNo, "どうやら")

 If ms = vbYes Then
 MsgBox "更に練習", vbYesonly, "じゃあ"   Else
 MsgBox "論外", vbYesonly, "てめーは"   
 End If
End Sub

何とか練習しつつ
ここにきてデータ型が逆に混乱してきましたわ
バリアントでごまかそうかな
おやすみなさい

700:デフォルトの名無しさん (ワッチョイ d98e-A1EL)
20/04/28 02:51:59 ro9Vnp/Q0.net
>>691
こんな馬鹿に仕事をさせるのが間違い

701:デフォルトの名無しさん (ワッチョイ acce-1Gce)
20/04/28 03:02:31 OG4s1hHd0.net
>>694
これ、そこらの入門書にはなかなか書いてないんだけど、MsgBoxの結果はVbMsgBoxResultという特殊な型なので、変数msはこう宣言するのが正解

Dim ms As VbMsgBoxResult

この宣言を書いてからコードを書くと、

If ms =

ここまで入力すると自動的に、vbYesとかvbNoなどの選択肢が出てくる

702:デフォルトの名無しさん (ワッチョイ 66e6-iUOt)
20/04/28 04:56:00 Ok+k67Xa0.net
Select Case "CSVファイルをExcelに取り込む"
Case "直接開く"
MsgBox "0 padding"
Case "querytables"
MsgBox "inline CR"
Case "POWERQuery"
MsgBox "Syntax Error"
Case "先輩たち"
MsgBox "テレワーク"
Case "2ch"
MsgBox "ググレカス"
Case "自分"
MsgBox "勉強中"
End Select

703:デフォルトの名無しさん (ワッチョイ 91ad-R0M4)
20/04/28 05:30:30 CHpsAleC0.net
>>690
VBAは年齢層高いだろ?
Pythonとかより

704:デフォルトの名無しさん
20/04/28 06:23:10.14 fDIatR4a0.net
最近csvを開くのがはやってるみたいだけど、拡張子をtxtに変えて開き直すといいよ

705:デフォルトの名無しさん (ワッチョイ 048f-1Gce)
20/04/28 08:10:33 uR1kyCkX0.net
>>671
ぜ・ん・ぶ

706:デフォルトの名無しさん (スッップ Sd70-bbQE)
20/04/28 08:27:27 F6rfqhbJd.net
>>685
速度アップの為にあえて使うのはVariant配列。

配列にすることに全く違和感が無いので、"あえて"使うことが少ない。
配列にするのに自然なことがたくさんあるし、普通に使ってる。

707:667 (ワッチョイ 2c7f-So6t)
20/04/28 13:36:09 1XDByXps0.net
ありがとうございました。
できました。

708:デフォルトの名無しさん (ワッチョイ 7349-xf6K)
20/04/28 13:57:24 0tfnjkqK0.net
いえいえ

709:デフォルトの名無しさん (ブーイモ MM5e-43Dx)
20/04/28 17:53:56 YPs9lugpM.net
Sub テキスト抽出()
  ChDir "c:\tmp"
  f = Dir("*.txt")
  c = 1
  Do While f <> ""
    Open f For Input As #1
        Line Input As #1,s
    s = "s"
    r = 1
    Do While Not EOF(1) And s <> ""
      Line Input #1, s
If s <> "" Then Cells(r, c) = Split(s, vbTab)(5)
    r = r + 1
    Loop
    Close #1
    f = Dir
    c = c + 1
  Loop
End Sub

710:デフォルトの名無しさん (ブーイモ MM5e-43Dx)
20/04/28 18:04:37 YPs9lugpM.net
ここで教えて頂いた>>704の「指定Path内の全txtデータのF列2行目から下に数値が続く限りシートに全部抽出する」コードのお陰で憑き物が取れて運用してるのですが
たまに画像の様な他の列に行がはみ出したデータがあると

実行時エラー'9':
インデックスが有効範囲にありません
で止まりますが

これを「他の列がどうだろうがtxt内のF2から下に数値が続く限り抽出」
に改良するのは難易度高いですか?
というかコードで可能でしょうか
入門編の本には載って無く数字変えたりwhileの位置変えたりしてますが簡単にいくはずもなく
参考になるサイトなどありましたら教えて頂けませんでしょうか

↓こんなデータが混じってるとエラーで止まります
URLリンク(i.imgur.com)

711:デフォルトの名無しさん (アウアウウー Saab-/zYc)
20/04/28 18:19:12 uYkVg/g/a.net
>>704
まんなかへんのdo while の後ろはかっこをつけたほうがいいよ
判定の対応がわかりにくいので

712:デフォルトの名無しさん (ワッチョイ 7a4b-R0M4)
20/04/28 18:35:05 yXtY+D7s0.net
>>690
元々有名な人なんだね。
投稿動画多くてあれこれクリックしてるうちにどんどん登録者数が伸びてったからビックリした。
最初見た時は5000ぐらいだったのに、さてどこまで伸びるかな。

713:デフォルトの名無しさん
20/04/28 19:06:29.99 fDIatR4a0.net
>>705
>If s <> "" Then Cells(r, c) = Split(s, vbTab)(5)
この行、最後に(5)ってついてるでしょ
読み込んだデータに5+1番目(0スタートだから+1)の要素が無かったら、どうなると思う?
ここは、splitの結果を一旦配列変数に受けて、配列の大きさを確認する判定をいれるといいよ
実を言えば、s<>"" の判定も不要だったりもする

714:デフォルトの名無しさん (ワッチョイ 048f-1Gce)
20/04/28 19:48:07 uR1kyCkX0.net
都道府県別の7日移動平均線を出すグラフ組めないかなあと
思って、


715:「都道府県別の日々新規感染者数」を探したけど見つからん…。 なんで役人は pdf にしたがるんだろう。



716:デフォルトの名無しさん (ブーイモ MMed-43Dx)
20/04/28 20:13:54 ZPYYxv13M.net
>>708
正直ほとんどさっぱりわからないです。
が、ありがとうございます。そこらへんをいじればなんとかしろなりそうってことですかね。
まだ変数の使い方もよくわかってないのでsplit関数で検索して集中的に勉強していじれるようにがんばります。

717:デフォルトの名無しさん
20/04/28 21:00:00.12 CHpsAleC0.net
>>707
VBAはハードル低くて
エクセルが実用的だから
ユーザが多いんだろう

718:デフォルトの名無しさん (ワッチョイ 4c2c-iUOt)
20/04/28 22:51:18 7QVY/xgO0.net
データは、PDF じゃなくて、アプリで処理しやすいように、
同じ場所に、CSV ファイルも置いておくのが基本!

役人は、データ処理の素人w

719:デフォルトの名無しさん
20/04/28 23:02:38.82 IT0hJXXxM.net
EOF関数?
なんじゃこりゃ

720:デフォルトの名無しさん
20/04/28 23:21:24.84 7mVXavmj0.net
>>709
各都道府県毎にオープンデータでCSV配布してるのに何言ってんだ?

721:デフォルトの名無しさん (ワッチョイ e709-LlFz)
20/04/29 01:03:36 j7HdUAEO0.net
VBAから参照設定をせずにoutlookを操作しようとしていますが、
「Set mailItemObj = oApp.CreateItem(oApp.olMailItem)」のところで、
「オブジェクトは、このプロパティまたはメソッドをサポートしていません。」と
エラーが出てしまいます。どうすれば解決できますでしょうか。。。

Sub sendmail_sample1()
Dim oApp 'As NEW Outlook.Application OutlookのApplication
Dim myNameSpace 'As Outlook.NameSpace
Dim myFolder
Set oApp = CreateObject("Outlook.Application") 'VBAで参照設定をした場合は不要
Set myNameSpace = oApp.GetNamespace("MAPI")
Set myFolder = myNameSpace.GetDefaultFolder(9)
'---コード1|outlookを起動する
Dim toaddress As String '変数設定:To宛先
Dim subject As String '変数設定:件名
Dim mailItemObj 'Outlookで使用するオブジェクト生成
'---コード2|差出人、本文、署名を取得する---
toaddress = Range("B2").Value 'To宛先
subject = Range("B5").Value '件名
'---コード3|メールを作成して、差出人、本文、署名を入れ込む---
Set mailItemObj = oApp.CreateItem(oApp.olMailItem) '★★★ここでエラー
mailItemObj.BodyFormat = 3 'リッチテキストに変更
mailItemObj.To = toaddress 'to宛先をセット
mailItemObj.subject = subject '件名をセット
'---コード7|outlookを閉じる(オブジェクトの解放)---
Set oApp = Nothing
Set mailItemObj = Nothing
End Sub

722:デフォルトの名無しさん (ワッチョイ c7ce-ts7H)
20/04/29 01:10:43 ICnUrfUx0.net
>>715
こうかな?
Set mailItemObj = oApp.CreateItem(olMailItem)

723:デフォルトの名無しさん (ブーイモ MM2b-EVni)
20/04/29 01:34:35 L1oMckOiM.net
配列変数難しすぎて笑える

724:デフォルトの名無しさん (ワッチョイ e709-LlFz)
20/04/29 01:35:24 j7HdUAEO0.net
>>716
レスありがとうございます。
「変数が定義されていません」エラーが出てしまいます・・・

725:デフォルトの名無しさん (ワッチョイ e709-LlFz)
20/04/29 01:40:00 j7HdUAEO0.net
>>715です。自己解決いたしました。
olMailItemを値指定でゼロ(0)にしたらできました。。。
謎ですが。。。ありがとうございました。。。

726:デフォルトの名無しさん (ワッチョイ bff7-INiV)
20/04/29 09:03:38 osglNTbf0.net
定数ってoutlook.olMailItemみたいに書くんじゃなかったっけCreateObjectで別定義する必要があったはず
Excel上だとリファレンス入れないと>>716は機能しない

727:デフォルトの名無しさん
20/04/29 09:13:47.90 EmE7DP7rx.net
ただのパラメータ定数参照だから普通に数字を入れればいいだけ
olMailItemは0だったかな

728:690 (ワッチョイ a7ad-LlFz)
20/04/29 09:22:41 sSCyRYOw0.net
>>691です。
みなさんありがとうございました。
もっと勉強します。
>>69


729:7 ちょっと楽しい気持ちになりました。恩に着ます。



730:デフォルトの名無しさん
20/04/29 18:51:15.87 IoQm9XvmM.net
msgboxの使い方
inputboxの使い方
Do loop
For next
if then else
初歩だけどここらを色々繰り返し勉強してると楽しい
msgboxは使い方もっと応用していきたい
楽しみながら勉強するといいですね
他にもっとお勧めの処理ありますかね。
あとさらに低レベルな疑問なんですが
vbYesNo
vbOkCancel

これってみんな細かに使い分けます?
タイトルとメッセージで誘導してあげて
elseで何もしないにするとほぼ通じちゃいますよね
これも使い分け必須だったりするのでしょうか

731:デフォルトの名無しさん (アウアウウー Saab-NLJ6)
20/04/29 20:00:57 ZY0E7GgZa.net
やってみればわかると思うが

732:デフォルトの名無しさん (ワッチョイ a75f-rvxR)
20/04/29 22:30:45 sZxShGZL0.net
メッセージBOXが出ている状態でESCキーを押された時の挙動が違う。

733:デフォルトの名無しさん (ワッチョイ a78e-DBwA)
20/04/29 23:54:48 GcIsSLnW0.net
>>723
そろそろ馬鹿は死ね

734:デフォルトの名無しさん (ワッチョイ 67ac-fZS3)
20/04/30 00:04:19 UCocORui0.net
vbaって必要に迫られてやることが圧倒的な気がする
だからおすすめの処理とか言われてもな

735:デフォルトの名無しさん (JP 0H8f-sYkk)
20/04/30 02:12:11 e+nUl/nvH.net
同意
VBAは使わなくていいなら使わない方が望ましいわけで、
おすすめと言われると「まずはVBAを使わなくてよい方法を考えること」としか言いようがない

736:デフォルトの名無しさん (ワッチョイ c7ce-ts7H)
20/04/30 03:10:10 mLi4d9n50.net
道具なんて使う人次第
手作業とワークシート(数式)とVBAと別アプリと、何でやれば一番楽で間違いが起きにくいか比較検討して使い分けるのが理想

737:デフォルトの名無しさん (ワッチョイ c7da-ts7H)
20/04/30 03:36:49 gai1ourp0.net
>>723
きびしめの意見が続いてかわいそうになったので
めげずにがんがれ

738:デフォルトの名無しさん (ワッチョイ df01-lZTE)
20/04/30 03:50:06 HupizHgZ0.net
数式だとすぐぶっ壊されてその修正に手間がかかるのでVBA使うのが好き
仕方なく数式に頼ったとしても、数式を一括修正できるボタンとかVBAで作っちゃってる
数式入ってるセルに保護かければいいじゃんって思うだろ・・・・
そうするとな、なんでここには入力できないんだよ!ってクレームがな、
いや、そこはここのシートのこの値が転記されるようになってて・・・とかいう説明を聞き入れる輩じゃないんだ

739:デフォルトの名無しさん
20/04/30 04:08:29.30 mLi4d9n50.net
人に渡すブックなら、VBAは消してシートはバックアップを取っておく
何やったっていじるやつはいじるし文句を言うから、結果だけを渡すようにしとかないと

740:デフォルトの名無しさん (ワッチョイ e7ad-GPK9)
20/04/30 04:41:41 HvDy85U60.net
>>723
>お勧めの処理
VBAが初心者でも簡単に扱えるのは
エクセルというGUIがついてるから

だけど普通のCUIプログラミングも
できると技術的に幅が広がるだろう

たとえばPythonとかRubyとかでね

741:デフォルトの名無しさん (ワッチョイ e7ad-GPK9)
20/04/30 04:48:14 HvDy85U60.net
>>731
>>732
複数人利用で関数メインだと
すぐぶっ壊されるのは分かる

あと壊れなくても長期的には
VBAの方が修正が楽だよな?
関数は処理の全体像が不透明

742:デフォルトの名無しさん (ワッチョイ c763-+JA7)
20/04/30 06:40:13 PqPYAyi70.net
まぁ関数でできる処理は関数でした方が処理自体速いんだけどな
悩ましいけどセル保護だけじゃなく列や行を隠しとかもするけど、いじる人は何しようと結局いじるからね…

VBAと関数で使い分けしないとVBAはどんだけCPUのコア数あっても1コアでしか動作しないから、重たい処理になると頭打ちになる

743:デフォルトの名無しさん (アークセー Sx5b-apiA)
20/04/30 07:48:59 OrbFqVlKx.net
ワークシート関数が処理の全体像が不明っていってる奴はたぶん関数がセル内できるのを知らないとか、テーブル機能を知らないとか、たぶんそんな感じだろう
ワークシート関数もVBAも下手くそに作ればカオスになる

744:デフォルトの名無しさん (ブーイモ MMcf-EVni)
20/04/30 08:27:32 /wWgOKjWM.net
なるべく関数はエクセル内で完結させてる
何かの呼び出しや処理のみにVBAにやらせてる
マスター版を個人で持っておく
いじられてもよほどのことが無い限り知らんふり

745:デフォルトの名無しさん
20/04/30 08:46:50.92 HvDy85U60.net
一年後に処理の内容全部忘れてから
もう一回見てご覧?
関数よりVBAの方が分かりやすいから

746:デフォルトの名無しさん (アークセー Sx5b-apiA)
20/04/30 09:38:23 OrbFqVlKx.net
ワークシート関数の見通しが悪いのはシートの使い方や関数の書き方が悪いから

テーブルで構造化参照させる
多重ネストをしないように作業列を積極的に使う
多重ネストが避けられない場合ははセル内改行する
静的変数として固定セルを参照する場合は名前付きセルにする

こういう配慮をしているかどうかが大切

可読性はVBAと大差ない
VBAだって下手に書くと二度とメンテナンス出来なくなる

747:デフォルトの名無しさん (JP 0H8f-sYkk)
20/04/30 10:14:10 dUO320lFH.net
>>738
VBAだけ見りゃ理解できるように書いてあるんならいいさ
ハイスキルな君の書くVBAもきっとそうなのだろう
ただ、世の中のほとんどのVBAマクロはワークシートのレイアウトに激しく依存しており、
シートと見比べないと意味不明だし簡単に壊れる

748:デフォルトの名無しさん
20/04/30 10:50:37.55 KvTMWgJl0.net
>>714
そうなの?じゃあ俺の検索力不足だ。
教えてもらえるとありがたい

749:デフォルトの名無しさん (ワッチョイ bff7-INiV)
20/04/30 11:52:42 RI8oXcu50.net
シート連結部分はクラスにしようぜ

750:デフォルトの名無しさん
20/04/30 18:07:04.25 R8msXZW7a.net
クラスターつくるのか

751:デフォルトの名無しさん (ワッチョイ 2701-F4ic)
20/04/30 20:10:03 6PshQwim0.net
>>738
これは分からんでもないわ

752:デフォルトの名無しさん (ワッチョイ 671d-sUpK)
20/04/30 23:50:21 b9TIw4B40.net
実務経験1年で月収80万稼げるエンジニアになった理由
URLリンク(www.youtube.com)
意識が低いエンジニアこそフリーランスになれ
URLリンク(www.youtube.com)
フリーランスエンジニアの週3労働ってどんな感じ?
URLリンク(www.youtube.com)
ぼくがスキルのない社畜ならこうやって脱する
URLリンク(www.youtube.com)
初めて人を雇ったらもう二度とサラリーマンをやりたくないと思った話
URLリンク(www.youtube.com)
プログラミングは文系でも余裕で出来ます!理由を現役プログラマーが解説
URLリンク(www.youtube.com)
貧乏人こそ社会不適合者
URLリンク(www.youtube.com)
元ド貧乏が教える】貧乏を抜け出すための2つの考え方
URLリンク(www.youtube.com)
より良いオファー貰ってるのに転職しないとか何考えてるの?
URLリンク(www.youtube.com)

753:デフォルトの名無しさん
20/05/01 00:54:45.32 +DHzH5tv0.net
>>745
この人タイでエッチするため在宅プログラマーになったって言ってるけど
うらやましいな

754:デフォルトの名無しさん (ワッチョイ 67ac-fZS3)
20/05/01 09:08:51 GU+C/Jnt0.net
はいつぎの方

755:デフォルトの名無しさん
20/05/01 10:00:32.66 6b7IUzcd0.net
Sub Sample2()
Dim Date1 As Date
Dim Date2 As Date
Dim i As Long
Date1 = "2018/1/1"
Date2 = "2018/4/30"
For i = 0 To DateDiff("d", Date1, Date2)
Cells(i + 1, 1) = DateAdd("d", i, Date1)
Exit For
Next i
End Sub
VBA初心者です
上記を実行すると強制終了してしまいます
どうしてなんでしょうか?

756:デフォルトの名無しさん (ワッチョイ c7ce-ts7H)
20/05/01 10:50:57 eM3SnLnx0.net
>>748
Exit Forを消す
あと、自分のミスで思った通りにならない時は強制終了とは言わない

757:デフォルトの名無しさん (ワッチョイ bff7-INiV)
20/05/01 12:14:21 gUWwrcBK0.net
"4/30/2018"

758:デフォルトの名無しさん (アウアウエー Sa9f-kSwD)
20/05/01 13:10:21 n1w4ahs6a.net
#で括ってみては

759:デフォルトの名無しさん (JP 0H9f-r+sk)
20/05/01 14:08:14 Lu25V/ckH.net
学術巨大掲示板群: アルファ・ラボ
URLリンク(x0000.net)<)

760:デフォルトの名無しさん (ワッチョイ 67ac-fZS3)
20/05/01 14:08:57 GU+C/Jnt0.net
>>748
回答としては748の通り

なぜこうなるのかわからない場合
 ・ブレークポイントを使ってどういうふうに処理が進んでいるか確認してみ?
 ・気になる行をコメントアウトをしてみる

などをするがよろし

761:デフォルトの名無しさん
20/05/01 15:46:49.34 O26w7br10.net
どうして馬鹿ばかり来るのか

762:デフォルトの名無しさん
20/05/01 15:48:19.31 e9rmxAXgM.net
>>754
ようこそ!

763:
20/05/01 16:42:17.98 w4TGDP35H.net
>>754
Welcome to the real world !!

764:デフォルトの名無しさん (ワッチョイ e7ad-GPK9)
20/05/01 17:52:33 XmUvZ7vC0.net
>>748
単純にすべての単語の意味を
把握したらそれだけで分かるよ?

最初の内は意味が分からないまま
コピペプログラミングだろうけど
ずっとそのままだと上達しない

765:デフォルトの名無しさん (ワッチョイ dff0-h83k)
20/05/02 03:52:34 gsxD2EFS0.net
皆さんありがとうございます。
初心者から脱出できるように勉強します

766:デフォルトの名無しさん (ワッチョイ df01-lZTE)
20/05/02 04:16:39 WlPNyw+i0.net
がんばれ

767:デフォルトの名無しさん (ワッチョイ 67ac-fZS3)
20/05/02 07:47:42 8I2uZvpu0.net
会社が休みに入って書き込みが減ったな

768:デフォルトの名無しさん (ワッチョイ a78f-h83k)
20/05/02 09:40:27 7uDOF2SH0.net
IE自動操作のマクロで

今まで動いていたが動かなくなる

コードに変化を加えると動く
(スペースでも改行でもコメントでも、プロシージャに変化があると動くようになる)

これはどういうあれなんや

769:デフォルトの名無しさん
20/05/02 10:47:09.64 8Sc54whm0.net
全角のスペースとかキーワード途中での改行とか
無意識にやらかしたんでないの

770:デフォルトの名無しさん (ワッチョイ a7ad-ur4w)
20/05/02 11:30:23 Z+zF8E0a0.net
PowerQueryをVBAで使いたい初心者
>>691です。
変数に入れるファイルパスを、テーブルにしておかないと
PowerQueryは読んでくれないんだ。そのテーブル名とか列名も
指定するんだ、へ~、という現状からこの連休中に抜け出したいです。

テレワークからの連休突入前に先輩たちに投げた質問の答えは
「zoom飲み会やるから、入れとけよ。」でした。

771:デフォルトの名無しさん (ワッチョイ dfb5-EVni)
20/05/02 11:33:04 qrZctUhv0.net
VBAむずいが努力だわ
昇級幅が大きい時代の残りカスの50代の職場のおっさん達が給料ばっかり高くて
ExcelのSUM関数すらわからないレベルで
電卓で計算してテンキーで手打ち
そんな信じられない存在がいる職場
「俺のやり方があるんだよ!」
とか、心の底から腹が立つ
大手で組合もあるからリストラはされないんだが
そんなやつを駆逐したい
エクセル関数は職場で使うものはだいたい使っておっさん共の10倍は早くやってきたが
更なる憎しみだけが俺のVBA勉強へのモチベーションになってる

772:デフォルトの名無しさん (ワッチョイ 2791-x7Cl)
20/05/02 11:34:32 jcfx6zQ80.net
>>761
そもそも、どう動かなくなるんだ?
エラーが出るのか?
Excel再起動で動くようになるか?
PC再起動で動くようになるか?

昔よくあったのがデバックやStopのように勝手に途中で止まるという奴。
F5で続行出来るんだけどまた途中で止まる。
Excelの再起動では治らんがPC再起動で治る。

773:デフォルトの名無しさん (ワッチョイ c7ce-ts7H)
20/05/02 11:44:58 u3ozWGyy0.net
>>761
Win10ではIEの動作が変わったのでVBAからコントロールするのがかなり大変になった

うまく動かない時は、ブラウザのキャッシュとかクッキーとか、WEBサーバの応答のタイミングとか調べる
変更しなくても時間を置けば動かないか、Excelを再起動したらどうか、パケットモニターとか調べた?

774:デフォルトの名無しさん (アウアウカー Sa3b-QanA)
20/05/02 11:52:59 be7YjfFea.net
初めてのマクロでやりたいことはほぼ出来たのですが、新規ブックをコピー元のマクロごとコピーする方法が分かりません
xlsmで保存することは出来るのですが、どうもマクロの参照先がコピー元になっているらしく、新規ブックからマクロを実行するとコピー元のファイルをわざわざ開く形になってしまっています
マクロごとコピーする方法があればご教示ください

775:デフォルトの名無しさん (ワッチョイ 2791-x7Cl)
20/05/02 11:53:28 jcfx6zQ80.net
>>763
初心者がPowerQuery使うの?
その前にやることがあると思うんだが。

まず、テキストファイルを扱えるようになりなよ。
自在にテキストファイルを扱えるようになれば、どんな形式のCSVでも関係無い。
セル内改行も、そのCSVのフォーマットが分かってないのが原因。
普通はデ-タに改行が入ってるならレコード間の改行と区別する何かがある筈。
1レコードの項目数が必ず決まっている(1レコードのカンマの数が決まっている)とか、そのテキストデ―タは必ずダブルクォーテーションで挟まれており、データ内の改行はダブルクォーテーションのInとOutの間のどこかにあるとか。

もちろんPowerQueryでも良いんだけど、それでたまたま解決出来そうだから飛び付くのは良くない。
こんなもの基本的な処理の組み合わせで出来るんだから、PowerQueryで有利な何かも無いのに無理矢理使おうとしてるように見える。

776:デフォルトの名無しさん
20/05/02 12:25:11.14 E33c3GVR0.net
>>767
自分ではやったことないけどモジュールをそのままコピーするなら
URLリンク(officetanaka.net)
こういう方法じゃないかな
自分でやったことがあるのは
URLリンク(oshiete.goo.ne.jp)
こちらの方法で、コードを一行ずつ書いていくことになります
ほんとにまるごとコピーでいいなら上の方法でしょうけど、thisworkbookとか
activeworkbookとか場合によって挙動が変わるような内容なら下の方法
じゃないかな

777:デフォルトの名無しさん
20/05/02 12:32:45.18 u3ozWGyy0.net
>>767
モジュールのエクスポートとインポートでやってみるとか
URLリンク(jizilog.com)

778:デフォルトの名無しさん (アウアウカー Sa3b-QanA)
20/05/02 13:09:24 me7NM96ka.net
>>769
>>770
ありがとうございます
お恥ずかしながら、今更ながらアドインと個人用マクロブックの存在を知りました
マクロの数も多いので、毎回記述する方法は重くなりそうですし、インポートも考えたのですが、管理するのが大変そうだと躊躇していました
とりあえず、個人用マクロブックで一括管理してやってみようと思います

779:デフォルトの名無しさん (スッップ Sdff-x7Cl)
20/05/02 15:03:15 fjHWXn6td.net
>>769
これは、セキュリティ上の危険を承知するなら良いんだけどね。
今のExcelはデフォルトで動かないように設定されてるよ。

動作原理はマクロウィルスと全く同じなんで。

780:デフォルトの名無しさん (ワッチョイ dfea-9YRN)
20/05/02 15:03:21 HkfyT0U40.net
>>771
マクロブックだと、最後の1ファイルを閉じてもアプリ画面が残っちゃう。
アドインだとこれを回避できる。

781:デフォルトの名無しさん (ワッチョイ dfea-9YRN)
20/05/02 15:06:50 HkfyT0U40.net
>>772
そそ。D&Dでパワポにノートを読み上げるマクロをぶっ込めるvbs作ったんだけど、よく考えるとちょつと怖くなった。

782:デフォルトの名無しさん
20/05/02 15:24:24.68 Z+zF8E0a0.net
>>768
あ、ありがとうございます。
テキストファイルから…。
連休の課題にします!

783:デフォルトの名無しさん
20/05/02 15:37:35.14 lt4kIJ5o0.net
>>768
VBAのスレで言うのもなんだが
PowerQueryの前にやることがVBAなのかと

784:デフォルトの名無しさん
20/05/02 15:54:13.09 WuBkO5o5x.net
>>763
テーブルとしての構造化参照が不要なら別にテーブルにしなくても「空のクエリ」でリテラル定数を返す接続クエリを作るなり、パラメータを登録するなりすれば良い
詳細エディタに
= "テーブル名"
って一行書けば"テーブル名"を返す定数クエリが出来上がる
あと、Letの前行に
(path as text, table_name as text, column_name as text)=>
とか追加すれば、path とtable_nameとcolumn_nameという三つのtext型の引数をダイアログ入力でクエリに渡せるようになるので、クエリ式の側をソース=Csv.Document(File.Contents(path))みたいに書けば良い。

どうしてもVBAからPower Queryをいじりたいなら
Workbook.Queries(Index).Formulaでクエリの式が読み書きできるので、Replaceを使うなりして好きにいじったらいいんじゃないの

785:デフォルトの名無しさん (アウアウカー Sa3b-QanA)
20/05/02 16:19:14 be7YjfFea.net
>>773
なるほど、それはちょっと嫌かも
この際だからアドインも試してみることにします

786:デフォルトの名無しさん
20/05/02 17:01:28.47 be7YjfFea.net
何度もすみません
アドインを通常のマクロのように、図形などで作ったボタンに割り当てることはできないのでしょうか?

787:デフォルトの名無しさん (ワッチョイ 677f-v3HX)
20/05/02 19:33:07 I/r+DzJx0.net
デバッグ中からリセットをかける際に特定の処理をさせるようなイベントプロシージャって無いでしょうか

788:デフォルトの名無しさん
20/05/02 21:25:13.04 fjHWXn6td.net
>>780
それは俺も知りたいね。
リセットすると確実にExcelが落ちるプログラムを安全に終了したい。

789:デフォルトの名無しさん
20/05/02 21:28:27.20 fjHWXn6td.net
>>779
アドインの場合、メインは別のブックになるわけだからアドインのシートとかは表示されないという基本は分かってる?
それが分かっていれば図形等で作ったボタンを配置する場所もないと分かる筈。
普通はメニュー(リボン)に作る。

790:デフォルトの名無しさん
20/05/02 22:09:54.71 7uDOF2SH0.net
>>765
>>766
数か月前の事なので返ってくるエラーは忘れたけど
どこかの部分で止まるのではなく、開始時に起きるエラーだったと思う
そのファイルを複数のPCで試したけど全てで同じ現象が起こる
で、subプロシージャのコードを一部変更して実行すると動く
コードの変更は何でも良くて
改行、何も書いていない行にスペース追加、コメント追加、コードを消して同じコードを書く
とにかく変化があれば再起動も何も必要なく正常に動く
変更後上書き保存してからは同じエラーは起こっていない
今は問題なく動いてるから困っては無いんだけど
あれは何だったのかなと思った

791:デフォルトの名無しさん (ワッチョイ 67ac-fZS3)
20/05/02 22:19:21 8I2uZvpu0.net
はあ、そうですか。しらんがな

792:デフォルトの名無しさん (ワッチョイ 7fda-ts7H)
20/05/02 22:37:34 zUyEitTf0.net
>>761
俺もさんざん悩まされたが、ByVal/ByRef問わず、関数にオブジェクト渡すのやめたら改善したわ。
何でもかんでもパブリックにすんなアホって言われてたから、パブリックという発想が中々でなかったが。

>>765
俺の場合は何の音沙汰もなく強制終了だな。
エラーが出ないし、PCによっては動くし、改行いれるだけで変わることもあるから、
どこがおかしいのか全然わからんかった。
互換表示とか保護モードの有無も関係ないし。

793:デフォルトの名無しさん
20/05/02 22:45:55.01 zUyEitTf0.net
多分、
Readystateコンプしてるのにエラーでるな~
↓こうしちゃえ
On Error Resume Next
Do
 IEにカキコ
 Sleep 1000
Loop While なんとか
On Error Goto 0
長くて面倒くせえなぁ~
関数化しちゃえ
で、オブジェクトを関数に渡して嵌る罠なんだと思う。

794:デフォルトの名無しさん (アメ MM6b-p7s+)
20/05/02 23:09:24 FzDABaHmM.net
>>783
それ、IEと関係なく、Excelの更新が原因でvba関係にエラー起きてるやつでは?
ファイル開くときに「エラーがあります、可能な範囲で修正しますか」みたいなアラートがでて、はいを押すとコードが全削除される。

795:デフォルトの名無しさん (ワッチョイ dfb5-EVni)
20/05/02 23:36:58 qrZctUhv0.net
教えてくださいまし。。
画像のように日によって参加人数も競技した数も違うものを
受付した人と競技の範囲の値のみ
隣のシートに貼り付けるようにしたいですが
エクセル関数のエラーや未計算が都合上どうしても残ってしまい残ってうまく行かず…
URLリンク(i.imgur.com)
URLリンク(i.imgur.com)
URLリンク(i.imgur.com)

受付した人の数字が空白になるまでは空白になるまで、競技も空白になるまで
その範囲のみをコピーというか可能でしょうか

796:デフォルトの名無しさん (ワッチョイ dfb5-EVni)
20/05/02 23:39:12 qrZctUhv0.net
Sub 貼り付け()
Dim gy As Long
Dim re As Long Dim
Dim Tensu As String
Dim Kekka As String

Sheets(Tensu) = "点数"
Sheets() = "結果シート"

Sheets(Tensu).Select
With Range("C5")
gy = .End(xlDown).Row
If .Offset(1).Value = "" Then
gy = .Row re = .End(xlToRight).Column
If .Offset(, 1).Value = "" Then
re = .Column With .Resize(gy - .Row + 1, re - .Column + 1)
Sheets(Tensu).Select Range("H8").Resize(.Rows.Count, .Columns.Count).Value = .Value
End With End With
End Sub

これで作ってみたのですがやはり関数エラーが
邪魔してエラーになります
行も列も両方を空白までループして貼り付け
むずぃす

797:デフォルトの名無しさん
20/05/02 23:46:04.45 zUyEitTf0.net
画像から式を逆算するクイズみたいになっとる。

798:デフォルトの名無しさん
20/05/02 23:48:07.49 TR3WF5Jt0.net
人、それをデバッグと呼ぶ

799:デフォルトの名無しさん
20/05/02 23:48:58.13 zUyEitTf0.net
エラーってそっちのエラーかい!
If IsError(セルの値) = False Then の時だけ実行とか。

800:デフォルトの名無しさん
20/05/02 23:51:07.35 zUyEitTf0.net
それか、ValueじゃなくてTextでエラー回避。

801:デフォルトの名無しさん (ワッチョイ c7ce-ts7H)
20/05/03 00:01:44 fR4zqWYb0.net
>>789
全体的にめちゃくちゃで、それじゃ関数エラー以前にまったく動かないはずなんだけど、本当にそれで途中までは動いてるの?
スマホでポチポチ書き写すんじゃなくて、できるだけPCでそのままコピペしてくれない?

802:デフォルトの名無しさん (ワッチョイ dfb5-EVni)
20/05/03 00:26:05 EGR1WLcw0.net
>>794
Sub test()
Dim gy As Long, re As Long
With Range("C5") gy = .End(xlDown).Row
If .Offset(1).Value = "" Then gy = .Row
cl = .End(xlToRight).Column
If .Offset(, 1).Value = "" Then re = .Column With .Resize(gy - .Row + 1, re - .Column + 1) Range("AA5").Resize(.Rows.Count, .Columns.Count).Value = .Value
End With
End With
End Sub

元々作これで動いたのを確認しやしたが
無力過ぎて悔しいっす
そもそもエクセル関数の方のエラーが出ないようにif関数で空白の場合はセルも空白にしようかと思ったけどそもそも他部署の管轄
俺の圧倒的力の無さですわこりゃ

803:デフォルトの名無しさん (ワッチョイ dfb5-EVni)
20/05/03 00:31:44 EGR1WLcw0.net
というか完全に圧倒的勘違いでした

動いたと思っていざ使おうとしたら
他部署からのデータが画像のように
参加してない選手のところにセルにエラーがついてくる仕様なのに気付いて動かなかった
これが正解です
頭おかしくなってますわ

804:デフォルトの名無しさん (ワッチョイ c7ce-ts7H)
20/05/03 00:38:44 fR4zqWYb0.net
>>795
ワークシートの数式を消しちゃっていいんなら、エラーの出てるセルを全部空白にするのは簡単
Sub エラー全部消す()
 Dim c As Range
 For Each c In ActiveSheet.UsedRange
  If IsError(c.Value) Then c = ""
 Next
End Sub

805:デフォルトの名無しさん (ワッチョイ c7ce-ts7H)
20/05/03 01:01:50 fR4zqWYb0.net
>>796
コピーしたいのは、赤枠の範囲でいいの?
URLリンク(i.imgur.com)

806:デフォルトの名無しさん (ワッチョイ c7ce-ts7H)
20/05/03 01:03:01 fR4zqWYb0.net
それとも選手名も必要?

807:デフォルトの名無しさん (ワッチョイ dfb5-EVni)
20/05/03 01:37:52 EGR1WLcw0.net
>>797
教えてくれてありがとうございやす
ただシート内の別のところにも数式待ちのエラーのセルがあって俺の管轄じゃないので全てのエラーを消すわけにはいかず…範囲指定するスキルもなく…

>>798
>>799
完全にその赤枠のところの「値」のみをコピーしたいです

それが毎回、選手の数と競技の数が違う
という感じです

選手Cが空白なのに選手Dは数値が入る
ということはないので
受付の列が空白になるまでコピーを
ループ?とか考えながら挫折してます

808:デフォルトの名無しさん
20/05/03 01:46:13.78 EGR1WLcw0.net
受付の行が空白のセルになるまでループしつつ
競技の列が空白になるまでループ??
んん?違うか
GWになのにExcel開いてずっとマクロで悩むとは…とんだステイホームですわ

809:デフォルトの名無しさん (ワッチョイ 877c-mIzA)
20/05/03 01:55:50 yO9oP2CW0.net
ここに書かずなぜ動かして試さない…

810:デフォルトの名無しさん (ワッチョイ c7ce-ts7H)
20/05/03 02:10:58 fR4zqWYb0.net
>>800
はい、できたよ

Sub 数字だけコピー()
  Dim rr As Long
  Dim cc As Long
  Dim dat As Variant
  rr = Cells(Rows.Count, 3).End(xlUp).Row - 4 '高さを求める
  cc = Cells(5, Columns.Count).End(xlToLeft).Column - 2 '幅を求める
  dat = Range("C5").Resize(rr, cc).Value 'データを変数に入れる
  Range("AA5").Resize(rr, cc).Value = dat 'コピーする
End Sub

811:デフォルトの名無しさん (ワッチョイ c7ce-ts7H)
20/05/03 02:15:53 fR4zqWYb0.net
ごめん
ちょっとだけ修正させて

Sub 数字だけコピー()
  Dim rr As Long
  Dim cc As Long
  Dim dat As Variant
  rr = Range("C4").End(xlDown).Row - 4 '高さを求める
  cc = Range("B5").End(xlToRight).Column - 2 '幅を求める
  dat = Range("C5").Resize(rr, cc).Value 'データを変数に入れる
  Range("AA5").Resize(rr, cc).Value = dat 'コピーする
End Sub

812:デフォルトの名無しさん
20/05/03 03:59:51.25 PK0PPm520.net
この程度のものを人に聞かなきゃできないようじゃ先が思いやられる
これで職場の50代批判できるのかと・・・・
しかも最初のこれ>>788
もう少し日本語の説明能力上げたほうがいいんじゃないか
君何度もここでいろんな質問してるよね?質問の仕方からして酷すぎる
説明の例1:
この画像で言えばC5からE13の範囲を別シートにコピーしたいです
URLリンク(i.imgur.com)
コピーしたい範囲は変化します。例えばこの場合はC5からI9までをコピーしたいです
URLリンク(i.imgur.com)
説明の例2:
こういう画像をペイントで作る
URLリンク(i.imgur.com)


はぁ・・・おれ深夜に何やってんだか・・・

813:デフォルトの名無しさん (ワッチョイ a7ad-ur4w)
20/05/03 09:15:39 iPr/hZRI0.net
>>777
ご助言ありがとうございます!
教えていたことの意味を調べながら勉強します。

ちなみにうちの職場では55歳のオバハンが独学で書いてるVBA
が一番「きれい」だそうで。教科書通りで、整理整頓されてる感じで
非エンジニアには優しいんです。(簡単なものしか作らない人ですけど。)
でも「リーダブルコード」とか「VBA実践のためのなんちゃら」とか
読んで勉強してるの見かけたので、心がけは見習いたいです。

814:デフォルトの名無しさん (ワッチョイ 87e6-ts7H)
20/05/03 09:19:57 6v/wuiGx0.net
> Sheets(Tensu) = "点数"
> Sheets() = "結果シート"

きれいだとか汚いとかいう以前に読む気が失せるな
入門書買ったとか言ってなかったっけ?

815:デフォルトの名無しさん
20/05/03 09:20:36.28 2hdRjZho0.net
>>806
>独学で書いてるVBAが一番「きれい」
>教科書通りで、整理整頓
それはあるかもな
プログラマだとなまじ他言語の知識があるために
トリッキーなことやりだす奴が一定数いるからな
効率が良い面もあるだろうが他人が理解しにくい

816:デフォルトの名無しさん (ワッチョイ 87e6-ts7H)
20/05/03 09:35:40 6v/wuiGx0.net
>>804
生血プログラマーなら1行にするべきである

817:デフォルトの名無しさん (ワッチョイ 7fda-ts7H)
20/05/03 10:26:05 9LS/Ekj10.net
ああ、

If a = True Then
a = False
ElseIf a = False Then
a = True
End If

みたいなやつか。
大っ嫌いだけどな。

818:デフォルトの名無しさん (ワッチョイ c7da-ts7H)
20/05/03 13:07:08 T/wh1/tE0.net
a = Not(a)
でいいんじゃね

819:デフォルトの名無しさん (ワッチョイ 67ac-fZS3)
20/05/03 13:43:00 AWBCl49n0.net
エスパースレと化してる

820:デフォルトの名無しさん (ワッチョイ bf2f-WRor)
20/05/03 14:21:40 jHKSsTzt0.net
>>811
そもそも>>810が何を言いたかったのかわからんが
それaがBooleanじゃないと同じじゃないからな

821:デフォルトの名無しさん (ワッチョイ a778-NLJ6)
20/05/03 16:23:21 7ZZm2K4r0.net
たしかにそうだ

822:デフォルトの名無しさん
20/05/03 18:57:16.84 hVYH2JxT0.net
うん、>>810が何を言いたいのか不明瞭だな。
あのIf文も自分は嫌いじゃ無い。
見てすぐ分かるんで。
長くても短くてもすぐ分かれば問題なし。
a=not aでも別に良い。

823:デフォルトの名無しさん (ドコグロ MM9f-4Orb)
20/05/03 20:02:39 GBCMW2mVM.net
If a = True Then
の時点で嫌い

824:デフォルトの名無しさん (ワッチョイ a75f-rvxR)
20/05/03 20:33:25 INbjbW0w0.net
If a Then は気持ち悪いわ

825:デフォルトの名無しさん (ワッチョイ 7fda-ts7H)
20/05/03 20:35:39 9LS/Ekj10.net
>>815
オバハンが独学で書いてる綺麗なコードって、
a=not aを>>810みたいに書いてるやつかなと思って。

826:デフォルトの名無しさん
20/05/03 20:41:41.89 jHKSsTzt0.net
俺はBooleanにたいして= Trueは大概は冗長に感じるけどな
VBAは型がゆるいからなぁ
If a Then は気持ち悪いが、これは変数名が悪い

827:デフォルトの名無しさん
20/05/03 22:08:11.47 dDcWYHiB0.net
>>808
perl で組んだテトリスだったかな。あれ見たときはぶったまげた。
元々ワンライナーをやりやすい言語とは言え、あれはもう
何が何やらわからない世界だった。どんだけ頭いいんだよと。
でも、「こんなの理解できないの?ふ~ん(にやにや)」みたいな
のは生産性的には駄目だよね。

美しさをトリッキーさに見出すか可読性に見出すかは人それぞれ
だけど、自分よりスキルが下の他人に保守させるとか、未来の自
分が保守しないといけないかもとかなら冗長性持ってるほうがいい
かも。
いちばん大事なのは懇切丁寧なコメントだろうけど。

828:デフォルトの名無しさん (ワッチョイ 878f-ts7H)
20/05/03 22:21:26 dDcWYHiB0.net
>>806
> ちなみにうちの職場では55歳のオバハンが独学で書いてるVBA
> が一番「きれい」だそうで。教科書通りで、整理整頓されてる感じで
> 非エンジニアには優しいんです。(簡単なものしか作らない人ですけど。)
> でも「リーダブルコード」とか「VBA実践のためのなんちゃら」とか
> 読んで勉強してるの見かけたので、心がけは見習いたいです。

あえて長文引用させてもらったけど、あんた程度の人間がなんで
その55歳の女性を貶めてるの?

829:デフォルトの名無しさん (ワッチョイ 2791-x7Cl)
20/05/03 22:55:28 hVYH2JxT0.net
>>818
いや、想像はついてた。
大嫌いというのが分からんかった。

830:デフォルトの名無しさん (JP 0H8f-Ng5p)
20/05/03 22:57:44 8sSb2t20H.net
まともなプログラマなら周りのレベルに合わせて読みやすいコードを書けるよ
VBAの仕事なんかやってる時点でその程度のレベルなんだから仕方ない

831:デフォルトの名無しさん (ワッチョイ 2791-x7Cl)
20/05/03 22:58:39 hVYH2JxT0.net
>>820
コメントもたくさんあれば良いというもんじゃない。

Dim blFlg AsBoolean 'フラグ

こんなコメントはアホ。
フラグかどうかは名前と型で分かってる。
残すべきはどういうフラグかだ。

832:デフォルトの名無しさん (ワッチョイ 878f-ts7H)
20/05/03 23:00:42 dDcWYHiB0.net
>>824
それは確かにコメントっつうより、「ノイズ」だなw

833:デフォルトの名無しさん (ワッチョイ 2791-x7Cl)
20/05/03 23:03:28 hVYH2JxT0.net
>>823
まともなプログラマなら周りのレベルにあわせて読みやすいコードをかける。
お前とは違ってなw

834:デフォルトの名無しさん
20/05/03 23:06:45.24 oMB0K2Jka.net
>>824
こんな奴いるのw

835:デフォルトの名無しさん
20/05/03 23:07:47.50 hVYH2JxT0.net
>>825
意外に近いのはある。
コメントより元々の変数名を伝わるものにするのが第一義。
それで伝わりにくい時にコメントで補足する。

836:デフォルトの名無しさん (ワッチョイ 878f-ts7H)
20/05/03 23:13:29 dDcWYHiB0.net
ただ、伝わりやすい変数名ってのが読む方の英語の素養に
大きく左右されちゃう不幸が。

TOEICで600くらい(英語の得意な高校生あたり)を想定するのが
いいかなあ。

837:デフォルトの名無しさん (ワッチョイ 2791-x7Cl)
20/05/03 23:19:40 hVYH2JxT0.net
Cプログラミング診断室の第三章の中盤に出てくるフラグの所に似たようなのが出てくる。
言語は違うが読んどくと良い。

URLリンク(www.pro.or.jp)

838:デフォルトの名無しさん (ワッチョイ df02-mIzA)
20/05/04 01:56:50 6MBl5GGH0.net
ここのスレ見てると、共同で保守してるのに細かい仕様書作ってない感じ
VBA使いって連携取るの苦手だろ

839:デフォルトの名無しさん
20/05/04 02:26:38.20 5comiU6qd.net
自分だけ楽するために片手間に作ったやつがいつのまにか広まって、ドキュメントなんかもちろん作ってなくて、最初に作った人は異動しちゃって、みたいなことVBAではよくある

840:デフォルトの名無しさん (ワッチョイ e794-C/EQ)
20/05/04 04:29:56 eaaQNpcs0.net
VBAは事務員のオバさんが作る程度のオモチャ
仕様書とか本気で言ってんの?
キモいわ

841:デフォルトの名無しさん (ワッチョイ bf12-h83k)
20/05/04 06:18:26 XD3JqXFe0.net
仕様書を書くような立場で仕事をしたことない人は黙ってな

842:デフォルトの名無しさん (ワッチョイ c7da-ts7H)
20/05/04 08:36:53 NmZgEDtP0.net
会社のファイルで仕様書作ってあげてもいいんだけど今の職場では上司が理解できないからあえて作らないでいる

843:デフォルトの名無しさん (ワッチョイ c7da-ts7H)
20/05/04 08:37:36 NmZgEDtP0.net
俺は832ではない

844:デフォルトの名無しさん (ドコグロ MM9f-4Orb)
20/05/04 09:29:50 eyf9VoYQM.net
全社に配布するようなものは仕様書も作るしテストもやるけど、自分とか課内で使うようなツールだと作りっぱだな
別に他の言語でも変わらんと思うが

845:デフォルトの名無しさん
20/05/04 09:55:22.79 oqIKeiQj0.net
最近よく来る馬鹿どもが仕様書作れると思うのか?

846:デフォルトの名無しさん
20/05/04 10:02:07.63 cVQIuVcH0.net
共同開発やドキュメントが必要になるレベルのプロジェクトには別の言語を使うのが普通
VBAスレで仕様書の話題はスレ違い

847:デフォルトの名無しさん
20/05/04 10:28:02.39 ESbXk+mE0.net
はいつぎの方

848:デフォルトの名無しさん
20/05/04 10:39:56.70 EYE1xMNJ0.net
うちの職場じゃボタン押すことぐらいしか出来ないような連中ばかりだから
仕様書どころかマニュアル作っても1割ぐらいしか理解してもらえないだろうな
目の前で説明しても少し込み入った設定になると覚える気一切ないしな
俺がいなくなったら終わりと思ってる
コメントすら残してない

849:デフォルトの名無しさん (ワッチョイ a7ad-ur4w)
20/05/04 11:03:15 mKy38ERH0.net
こんにちは。
このスレを見て勉強しようと思って色々読んでは、たいてい
なんの話をしているのかもわからない、プログラマではない層の者です。
上の方で、
>>810
If a = True Then 
a = False
ElseIf a = False Then
a = True
End If
みたいな書き方っていやだね。
>>811
a = Not(a)  でいいんじゃ?

という会話があったのですが、>>810 って
どんな時に使うのかさっぱり???でした。
どなたか暇つぶしにでもご教示いただけませんでしょうか。

850:デフォルトの名無しさん (ワッチョイ a78e-MvRk)
20/05/04 11:58:39 oqIKeiQj0.net
>>842
死ね

851:デフォルトの名無しさん (ワッチョイ 877c-mIzA)
20/05/04 11:59:42 zFV2kJYS0.net
ドキュメントが必要かどうかに言語は関係ない
プロジェクトの内容次第

852:デフォルトの名無しさん
20/05/04 12:35:48.74 NmZgEDtP0.net
>>842
例えばテレビのリモコンの電源ボタンとか消音ボタンのような使い方をするイメージ

853:デフォルトの名無しさん
20/05/04 12:43:46.28 RsDc9cGOM.net
>>839
お前の所の普通が世間一般の普通じゃないだけが

854:デフォルトの名無しさん
20/05/04 12:48:54.23 cVQIuVcH0.net
>>842
誰も使わない悪い例を書いただけ

855:デフォルトの名無しさん
20/05/04 13:16:33.95 c8yfA7Q3M.net
>>846
お前いつも質問スレに無関係な書き込みばっかだな
どうせPC-VANやってた老害だろ

856:デフォルトの名無しさん
20/05/04 13:17:26.32 n6lRLUl70.net
If a = True Then
誰にでもわかる書き方でとても良いと思う
今VBAを勉強する人は本職プログラマではなく
別に仕事があって、その効率化の為に学んでる人が主でしょう
そしてそれを非プログラマ同士で共有するのなら
どの本にでも書いてある書き方の方が望ましい
匿名の名人様の言葉に右往左往する必要はないよ

857:デフォルトの名無しさん (ワッチョイ df01-4Orb)
20/05/04 13:43:10 /ITc8kQd0.net
>>848
自己紹介かよww

858:デフォルトの名無しさん (ワッチョイ 7fda-ts7H)
20/05/04 14:09:51 9S16/cFq0.net
Debug.Print xml.getElementsByTagName("タグ名").Item(0).Text

Microsoft XML, v3.0 参照 → OK
Microsoft XML, v6.0 参照 → エラー

何でやねん。

859:デフォルトの名無しさん (ワッチョイ 2791-x7Cl)
20/05/04 14:14:20 r232eNWS0.net
>>842
卜グルボタンとかチェックボックスのようなオンオフするようなものを変数で管理しようとした時に、変数がTrueならFalseに設定し、FalseならTrueに設定する処理を書いている。

最初のIf文の方は英文が分かれば簡単に理解出来る。
Notを使う方はTrue/Falseだから変数を変数自身と反対にすることで実現してる。

860:デフォルトの名無しさん (ワッチョイ 7fdd-ts7H)
20/05/04 14:35:44 m3H0OQVZ0.net
検索Dialogの検索場所(WithIn)をVBAから切り替えるアイデアをお持ちの方いたら教えていただけないでしょうか。
全シートから検索するのが目的ではなく、ブック全体検索後に何気に範囲指定置換を実施して引き起こされる惨状を回避したく。
(または別視点による工夫でもOKです)
詳しい方、よろしくお願いします。

861:デフォルトの名無しさん (ワッチョイ 67ac-fZS3)
20/05/04 15:43:06 ESbXk+mE0.net
>>853
意味不明な点が多すぎる。
>ブック全体検索後に何気に範囲指定置換を実施して
 検索と置換ダイアログでは検索、置換は違うタブだから操作ミスは起きずらいが、
 そこまでしなきゃならないのか

>引き起こされる惨状を回避したく。
 惨状って具体的になにか

そもそも惨状とやらが起きるのは、GUIの話なのかVBAの話なのか

862:デフォルトの名無しさん (スップ Sd7f-C/EQ)
20/05/04 15:44:13 gO9XNStOd.net
今からVBAなんて覚える必要は全くない

863:デフォルトの名無しさん (ワッチョイ a7ad-ur4w)
20/05/04 18:17:24 mKy38ERH0.net
841です。
丁寧な解説、みなさんありがとうございました。
勉強になりました。

864:デフォルトの名無しさん (ワッチョイ 67f9-qVEi)
20/05/04 19:20:35 V2+TGFiQ0.net
>>856
アンカーも書けず全角で数字を書くよな馬鹿は死ね

865:デフォルトの名無しさん
20/05/04 19:40:04.11 m3H0OQVZ0.net
>>854
説明が不足していました。
検索と置換のタブはパラメータ設定の記憶が共通となっております。
ブック全体検索を行った後に範囲を選択して範囲内置換を実施しようとCtrl+Hを押します。
すると前回検索時の "検索場所=ブック"が活きている状態になっております。
気づかずに実施すると全シートの指定文字列が置換されてデータが破壊されてしまいます。
コロン ":" でも削除置換しようものなら全ての時刻書式が破壊されます。
お試しください。
これを防ぐには、ブック内検索を実施した際は引き続きシート内検索を実施して設定を戻しておく必要があります。
普段ブック内検索ってあまり使わないのでこんな時に限って忘れてしまいます。
VBAはどうなっているかというと、.Find .Replace共に、WithInパラメータが存在しないため引数指定できず、直前のUI操作依存となるわけです。
自動化された置換処理があったりすると、事故が起こるわけです。
本件、GGってよく捜してみたら同様の悩みに対するQAありました。
 Range("A1").Find("*")
この1行を実施するだけで検索場所をシートに戻せるようです。
逆に検索場所をブックにする方法を探しているところです。
ご存じの方おられましたら教えてください。

866:デフォルトの名無しさん (ワッチョイ 6741-eET6)
20/05/04 20:21:19 2XIJsT+F0.net
.OpenTextで開いたテキストファイルを操作したいのですがやり方がわからなくて困っています。
拡張子CSVなら通常のエクセルワークシートと同様に扱えますが、テキストファイルは無理なのでしょうか?
Workbooks.Countは開いたテキストファイルの分増えているようですが…
ご教示お願いいたします。

867:デフォルトの名無しさん (スフッ Sdff-rvxR)
20/05/04 20:24:42 mUlUr63md.net
テキストファイルの中身はどのようなフォーマットで、どう操作したいのですか?

868:デフォルトの名無しさん (ワッチョイ 87e6-aR2J)
20/05/04 20:40:40 c199Arvf0.net
1セルに1文字づつならExcelチックに楽しめそうだな

知らんけど

869:デフォルトの名無しさん
20/05/04 20:56:39.11 oqIKeiQj0.net
次から次へと馬鹿が来る

870:853 (ワッチョイ 67ac-ts7H)
20/05/04 21:05:25 ESbXk+mE0.net
>>858
まず、問題としてる事象は提示している方法で解決するんだよね
そのブック開いたときとか操作したときに実行すればいい

>「ブック全体検索を行った後」に「範囲を選択」して「範囲内置換を実施」(ブック全体と指定しているオプションを開いたまま)
 → その悪意に満ちた行為のみを想定するの?
   検索ダイアログのオプション設定は起動中のExcelアプリ(プロセス)に記憶されるから、
   Excelアプリを開いたまま同じPCで同様の操作をしないと再現しないはず

>気づかずに実施すると全シートの指定文字列が置換されてデータが破壊されてしまいます。
 → さっきの操作をすると検索オプションは開いてるはずだけど、
   それでも気付かずファイル保存するっていう悪意ry
   GUI操作->GUI操作で出る問題なら、運用で禁止するか保護するか、影響に基づいて運用システム自体を見直す

>逆に検索場所をブックにする方法を探しているところです。
 → 問題としてる事象の解決は自分で提示しているようだけど、
   逆に引き起こしたいってことは、単にやりたいから?
   VBAで置換するなら別に全シートをReplace擦ればいいだけだし
   GUIでブックにしたいならそう操作すればいいけど、何が必要なの

検索と置換ダイアログの操作はCommandBars.dialogsとかExecuteMsoとかで表示は出来る
ウィンドウ操作にしても他のダイアログ操作と似たようなもんだろう(APIが多分必要)

GUIとVBAをごっちゃに対応するから要らない悩みを抱える
運用やコストを考えない妄想の機能なら、それこそ趣味でアドインでも作ればいい

871:デフォルトの名無しさん
20/05/04 21:24:09.39 2XIJsT+F0.net
説明足らずで申し訳ありません。
カンマ区切りのテキストファイルに対してOpenTextを使います。これでカンマごとにセルに値が分けらたエクセルブックが開きます。
このブックのシートを通常のエクセルシートと同様に、例えばRange("A1").Activateとしたいのですが、ブックをどうやって指定すればいいのでしょうか?
以下の方法を試しましたがうまくいきません。
元々開いているブックが一つのとき、テキストファイルはWorkbooks.CountWorkbook=2として開かれることを確認。このときWorkbooks(2)をVariant型の変数に代入しようとしました。
Set myBook = Workbooks(2)
ウォッチ式でmyBookの値を確認すると
型 Variant/Object
値 <変数なし>
となり値が取得できません。
テキストファイルの拡張子をCSVに変更すると問題なく値が取得できます。
すみませんがよろしくお願いいたします。

872:デフォルトの名無しさん (ワッチョイ 7fdd-ts7H)
20/05/04 21:39:32 m3H0OQVZ0.net
>>863
ご回答ありがとうございます。

>オプションを開いたまま
これの意味がわからないですが、ダイアログを開いたままという意味なら、閉じても記憶は維持します。
全体検索実施と範囲選択実施は一連の動作じゃないです。
例えば複数のファイルを開いて作業していて、全体検索を実施したファイルは既に1時間前に閉じていたとしても設定は維持されます。
これを悪意と言われましても、、
まあ、この点は前述のコードをシートイベント等に挟むことで防げそうです。
(設置Bookに限られるかな?まあ、良い方法を考えてみます)

>それでも気づかずに
キーボード主体でマウスはほぼ使わない派なので、範囲選択→ダイアログ開く→検索語、置換語入力→Enterの動作は
一連の操作で、ガッ、ガガガッで感じでやっちゃうのでダイアログのパラメータいちいち確認しないんですよね。
ちょっと落ち着けよって話なんでしょうけど。

>問題としている事象の解決は自分で提示しているようだけど、
最初に掲げた命題が "VBAで検索場所(WithIn)を切り替えたい" だったので逆の操作もできれば知りたいという程度です。
破壊リスクは回避できそうですが、例えば範囲が”シート"の状態からVBAで"ブック"に変更して全置換も可能なのかな、という疑問です。
結論としては通常の方法では出来なそうですね。
Worksheets.Select: Cells.Select を実行すれば、シートをForで回さなくても
 Selection.Replace できることもわかりましたのでこれで解決としたいと思います。

>GUIとVBAをごっちゃに対応するから要らない悩みを抱える
GUIの設定がVBA操作にも影響を与えてしまうから制御できないかなと思った次第です。

お付き合いいただきありがとうございます。

873:デフォルトの名無しさん (ワッチョイ df02-mIzA)
20/05/04 21:50:38 6MBl5GGH0.net
>>864
txtファイル開いた時点で何かしらのファイル名が付いてるでしょ

874:デフォルトの名無しさん (ワッチョイ a764-7mTq)
20/05/04 22:13:52 HiZbEqQh0.net
特に目的があるわけではないけど、興味があってVBAを勉強しようと思ってます。
皆さんどんな勉強法しましたか?おすすめの本とか有りましたら知りたいです

875:853 (ワッチョイ 67ac-ts7H)
20/05/04 22:16:36 ESbXk+mE0.net
>>865
まあ終わってるからいいけど・・

>>オプションを開いたまま
>これの意味がわからないですが、ダイアログを開いたままという意味なら、閉じても記憶は維持します。
 →これは、「検索と置換」ダイアログの
  「検索場所」ドロップダウンはGUIだと「オプション>>」ボタンで開かれる拡張エリアにのみ表示されて、
  「ブック全体を選択した」=「オプションを展開表示している」から、GUIなら気付かないわけがない。
  ということ。
  ダイアログ内の設定値同様、オプション展開状況もExcelプロセスで共有してるから、
  他のファイルで展開してるなら違うブックでも展開されたままダイアログ表示される。

>GUIの設定がVBA操作にも影響を与えてしまうから制御できないかなと思った次第です。
  VBAもGUIで行った設定の影響を受けないような、Rangeを指定する記述を普通は心掛けるべきだな

876:デフォルトの名無しさん (ワッチョイ e709-ur4w)
20/05/04 23:21:11 igVQrW+K0.net
今までそーいうものだと思い込ませて放置していたことなのですが、
引数を使うのにカッコつけなきゃいけないメソッドと、使わなくてもいい
メソッドって、なにが違うんでしょうか?なにか理由があるのでしょうか。

Dim a As Range: Set a = Cells.Find(What:="test")
ThisWorkbook.ActiveSheet.PrintOut copies:=1

それに付け加えて、findした結果をcolllectionに格納する際、
カッコをつけるとdouble型、つけないとrange型となりました。

検索結果を格納するcollection.Add 検索range
検索結果を格納するcollection.Add (検索range)

ご教授何卒宜しくお願いいたします。

877:デフォルトの名無しさん
20/05/04 23:58:21.23 m3H0OQVZ0.net
>>868
オプションが開かれてるという意味でしたか。
なるほどですね。
呼吸レベルでキーコンビネーションで通り過ぎちゃうので、、しっかり見るべきだと。
>VBAもGUIで行った設定の影響を受けないような
ごもっともです。
普段は .Find系は滅多に使わないのですが、あるとき大被害にあって、、、
どちらかというとGUI操作のほうが悩ましかったので、、、
API制御の方法にも辿り着けて、各Controlの制御もわかりました。
一瞬表示されてしまうのが難点ですが。良い情報をいただきました。
ご助言感謝します。

878:デフォルトの名無しさん (ワッチョイ 877c-mIzA)
20/05/05 01:19:15 nv2gdYIy0.net
>>869
とりあえず戻り値があるかないかの違いとでも思っとけばよい

879:デフォルトの名無しさん (ワッチョイ e7ad-HyhH)
20/05/05 03:17:48 SDhPW+o/0.net
12121212111211121112みたいな数列で、
1212..と続くものにはA、
11121112..と続くものにはBと置き換え、
AABBBのような文字列を作成することはできますか?

880:デフォルトの名無しさん (ワッチョイ 2701-3faj)
20/05/05 04:45:25 a+XprBAt0.net
その数列を文字列に直しておく

これをReplace関数で
1212 → AA
A12 → AA
に置換する

同様に 1112 についても行う

881:デフォルトの名無しさん (バットンキン MM4b-+Mqj)
20/05/05 12:25:05 hJBFA35lM.net
>>871
868です。ありがとうございました。

882:デフォルトの名無しさん (ワッチョイ e709-ur4w)
20/05/05 21:19:05 lsW1yIjx0.net
vbaのエディタの話なのですが、皆様はコードの複数行を選択したいとき
ショートカットかなにか使っているのでしょうか?
たとえば、一部のコードが不要になって削除や切り取りしたいときに、
ちゃんと行頭から行末までしっかり選択しないとtabやスペースが残ってしまい、
その後コードがズレたり色々と不都合が生じています。
現在は、Homeで行頭、Shift+下矢印で選択しています。
マウスで左端をドラッグすれば選択できるのは知っていますが、これの
キーボードショートカットとかないんですかね・・・

883:デフォルトの名無しさん (ワッチョイ bf2f-WRor)
20/05/05 21:34:38 wmeBDlBR0.net
行選択は知らんが、行削除ならCTRL-Yでよくね

884:デフォルトの名無しさん
20/05/05 21:52:41.57 PgjsbAaO0.net
検索すれば出てくるよな、俺は shift+上/下 をよく使うけど
URLリンク(excel-ubara.com)

885:デフォルトの名無しさん
20/05/05 22:03:15.71 lsW1yIjx0.net
>>877
web拝見しましたが、「複数選択→tabで行範囲が作成される」という部分
でしょうか?確かに、削除ならこれでいけそうです。
(コピーや切り取りのときにはtab→shift+tabで元通りにしなきゃならないかもですが)
私はずっとvbaを使わずエクセル本体の操作に慣れていたのですが、よく使っているのが
適当な複数のセル範囲を作成⇒それらをshift+spaceで行範囲化
という動作だったので、ここにいる方たちはvbaではどんな操作を
しているのか気になって質問いたしました。ありがとうございました。

886:デフォルトの名無しさん
20/05/05 22:06:50.95 PgjsbAaO0.net
ちがうだろ

887:デフォルトの名無しさん
20/05/05 22:11:42.93 NpEa/agLM.net
このハゲー

888:デフォルトの名無しさん (ワッチョイ e709-ur4w)
20/05/05 22:30:50 lsW1yIjx0.net
>>879
すみません、何回webを読み返しても分かりません…
自分でショートカットを作れる(ユーザ設定のコマンド)という部分
かなとも思ったのですが…

889:デフォルトの名無しさん (ワッチョイ 738e-jYUs)
20/05/06 00:51:48 Kd1uYxyM0.net
>>881
馬鹿は死ね

890:デフォルトの名無しさん (ワッチョイ 7364-JVfZ)
20/05/06 00:55:04 zRh9yAG10.net
>>882
酷いこと言うね

891:デフォルトの名無しさん (ワッチョイ 6bac-V20a)
20/05/06 01:03:21 6rAOvRF50.net
コメントアウトだけはctrl+/でデフォルトでできるようにアプデして欲しいわ。。
設定もボタンクリックもめんどい

892:デフォルトの名無しさん (ワッチョイ 5b09-jgrQ)
20/05/06 08:05:52 p05hHIhJ0.net
うーむ…どういじっても分からない…
Ctrl+Yは現在の行だけしか削除されないし、そもそも選択範囲は
作成されないし…
おっさんになった私の限界ですかね汗

893:デフォルトの名無しさん (ワッチョイ 17da-oySJ)
20/05/06 09:03:13 1Pr5leMy0.net
>>885
やろうとしていることに何の意味がある?

894:デフォルトの名無しさん (ワッチョイ 6602-uk0G)
20/05/06 09:22:21 iCjbaALk0.net
意味のある事しかしなかったら進化しない

895:デフォルトの名無しさん
20/05/06 10:57:23.06 6rAOvRF50.net
くっそどうでもいいことに時間かけてるな

896:デフォルトの名無しさん (ブーイモ MMd6-sgQa)
20/05/06 12:16:06 j2svN8neM.net
クラスに対してモジュールという概念がよくわかりません。Cで言うところ外部ヘッダファイルとソースみたいなものでしょうか。クラスを使ってたら基本的に出番がない?

897:デフォルトの名無しさん
20/05/06 12:56:23.88 Z893TlLs0.net
クラスはOOPに出てくるクラス
newする必要がないならモジュール

898:デフォルトの名無しさん (アウアウウー Sa1f-t13D)
20/05/06 13:46:31 gPSsYrwFa.net
馬鹿が進化してどうにかなるのか

899:デフォルトの名無しさん
20/05/06 14:02:43.27 OIN1lY2H0.net
モジュールはVBがオブジェクト指向になるまえからの互換のためだから
クラスを使うなら忘れてもいいよ
広域で静的なクラスだと思えばいい

900:デフォルトの名無しさん (ワッチョイ cb41-KyAn)
20/05/06 15:26:50 G9W2eJpB0.net
>>866
そのファイル名を使っても値が変数なしになってしまいます…

901:デフォルトの名無しさん (ワッチョイ 662f-jW3u)
20/05/06 16:43:25 OIN1lY2H0.net
>>864
それウォッチがちゃんと出ないだけで、ブックそのものはとれてるだろ
試しにやってみたが、myBookのウォッチで展開すると変数なしだが
myBook.Sheets(1).Range("A1").Activate でちゃんと動作するぞ

902:デフォルトの名無しさん (ワッチョイ 6602-uk0G)
20/05/06 18:09:01 iCjbaALk0.net
どうにかなるのかと思考停止するバカが炙り出される

903:デフォルトの名無しさん
20/05/06 18:27:07.81 1Pr5leMy0.net
目的と手段が逆になる人たまにいる

904:デフォルトの名無しさん
20/05/06 18:39:41.01 6rAOvRF50.net
基本的にプログラミングがうまくなる人って、
早い段階で、特定のやり方にこだわらず最終的に要件を満たせればいいってことに気付けるんだよな

905:デフォルトの名無しさん (ワッチョイ 17da-oySJ)
20/05/06 19:32:27 1Pr5leMy0.net
本末転倒か、言葉が出てこなかった

906:デフォルトの名無しさん (アウアウウー Sa1f-lvFW)
20/05/06 19:37:46 aLD+Grz6a.net
それはプログラミングをするという前提を置いている時点で矛盾している
手段はなんでもいいから目的達成できりゃいい、だと、だいたいのことは出来合いのSaaSを契約して使うのが最良

907:デフォルトの名無しさん
20/05/06 20:34:47.68 6rAOvRF50.net
仕事ならそうだよね
代わりにSaasでってのは範囲が違うので当てはまらないけど

908:デフォルトの名無しさん
20/05/06 20:38:43.01 prm5gj7H0.net
普段の自分のやり方じゃ対応できない場面が出た時は、
変に拘らずに完成優先でやるべきって意味でしょ

909:デフォルトの名無しさん (ワッチョイ 5b09-jgrQ)
20/05/06 20:48:48 p05hHIhJ0.net
>>886
余計な操作が無くなることでかかる時間とストレスが減って、その分
新しい知識や技術を取り入れることに割ける、という意味があると思って
質問してみました。
>>879のちがうだろの結局何が違うのかは分かりませんでしたが…
まあ、ググレカスは昔からある2chの風習だと思いますが。

910:デフォルトの名無しさん (ワッチョイ 8f63-07dd)
20/05/06 22:29:01 k50qIlTz0.net
>>902
残念ながら設定でこれだけ躓いて立ち止まるような人は言ってるような時間の有効活用できるとは思えんな
ツールはツールと割り切ったり慣れたりする事ができないなら、今後時間の有効活用できるようにもなれないよ

911:デフォルトの名無しさん (ワッチョイ 738e-jYUs)
20/05/06 22:34:53 Kd1uYxyM0.net
>>902
馬鹿は死ね

912:デフォルトの名無しさん (ワッチョイ cb41-KyAn)
20/05/06 23:47:22 G9W2eJpB0.net
>>894
できました
ありがとう

913:デフォルトの名無しさん (ワッチョイ 17da-oySJ)
20/05/07 10:28:01 nnhcaKI70.net
頭のおかしい人の書き込みを読むのが無駄なので無視しますね

914:デフォルトの名無しさん (オッペケ Sr33-V20a)
20/05/07 12:26:16 D07kRcpQr.net
はいつぎのひと

915:デフォルトの名無しさん (ワッチョイ 6391-ABif)
20/05/07 13:12:49 MibsCGor0.net
>>897
そいつは違うな。
拘るのは必要だ。

最適なのに拘るの。
だから動いたで終わりにしないで他にもっと良い方法はないかを常に考える。

自分が知らなかった技術を手に入れた時に、これを使えば5年前のあの件はもっと上手く出来たかもと考える。

916:デフォルトの名無しさん (ワッチョイ 1749-V20a)
20/05/07 14:10:36 2qiR+IIc0.net
>>908
ヒマなんだな

917:デフォルトの名無しさん
20/05/07 14:23:33.98 cpirF9cIa.net
本気でやり方に拘ったらExcelなんて大半が無駄なわけで
自分達の仕事を守るためにも割り切りは必要

918:デフォルトの名無しさん (ワッチョイ bbad-I8iA)
20/05/07 14:42:35 O8jL8wQb0.net
>>897
>>908
短期では手段にこだわらない方が早いが
長期では技術向上になるから両方必要だ

919:デフォルトの名無しさん (ワッチョイ 1749-V20a)
20/05/07 14:50:52 2qiR+IIc0.net
そんな1つのVBAに何日もかけれんわ

時間かけれるならWebサービスとかAPIとかもっと皆が幸せな解決方法が大体あるわ

920:デフォルトの名無しさん
20/05/07 17:22:17.83 IeUYmiVSd.net
VBAとか関係無く、プログラミング全般の話なんだけどね。
動きゃ良いとかいう奴はいつまで経っても出来るようにゃならんよ。

921:デフォルトの名無しさん
20/05/07 17:23:34.85 IeUYmiVSd.net
>>912
無い。
VBAが使われる所は殆どVBAじゃないとどうにもならんから使われてる。

922:デフォルトの名無しさん
20/05/07 17:24:33.58 IeUYmiVSd.net
>>909
出来る奴は瞬時に何通りかは思いつく。

923:デフォルトの名無しさん
20/05/07 17:29:14.38 OBEeDnS1M.net
無知の知

924:デフォルトの名無しさん (ワッチョイ 33ad-D+XR)
20/05/07 17:50:13 oG7+JCgx0.net
Application.CentimetersToPoints(1)
で列幅1cmにしたいんですが、
何度やっても5.64cmになります。

Rows(n).RowHeight = Application.CentimetersToPoints(1)
はちゃんと行幅1cmになりました。
Columns(n).ColumnWidth = Application.CentimetersToPoints(1)
だと何故か列幅5.64cmになります。
この事についてどう検索しても誰も言及してないことも含めて謎が尽きません。
煮詰まり過ぎて焦げ付いてきたのでどなたかアドバイスお願いします。

925:デフォルトの名無しさん (ワッチョイ 33ad-D+XR)
20/05/07 17:58:41 oG7+JCgx0.net
あっまさか列と幅のポイントは同じポイントでも数値としては別物って聞いた気もする
そして行幅のポイントの方がVBAのポイントと合致しているという訳か
だとすると列幅のポイントに変換するのはどうしたらいいのか…

926:デフォルトの名無しさん (ワッチョイ 6bac-V20a)
20/05/07 18:13:16 k5uIH00p0.net
>>914
列幅の単位は違う

列幅の設定の仕方も
「application.centi~ 列幅」
で検索すればサンプルがいくつか出てくるけどね

927:デフォルトの名無しさん (ワッチョイ becc-oySJ)
20/05/07 18:13:25 z+lCu/T70.net
>>918
ページレイアウトにして、列幅1cmをマクロ記録

928:デフォルトの名無しさん (ワッチョイ 6bac-V20a)
20/05/07 18:13:45 k5uIH00p0.net
あ、間違えた
アンカ>>917

929:デフォルトの名無しさん (ワッチョイ 6bac-V20a)
20/05/07 18:17:19 k5uIH00p0.net
>>915
瞬時に思い付くのに5年前のコードのこと修正するのかよw
5年間もずっとVBAばっかやって、しかもそんな昔のコード引きずってるのw

930:デフォルトの名無しさん
20/05/07 19:06:33.04 IeUYmiVSd.net
>>922
あれ、分からんかった?
瞬時に5通り思いついたとして、5年後に知らない技術を獲得した時に、あの時これ使えばもっと良くなったなあと思うとか。
あるいは昔、どうしても解決出来なかった問題が解決出来たとか。
俺の場合はデフォルトのプリンター設定のポートを変更するプログラムが出来なくてね。
PRINTER_INFO_5構造体を使ってプリンターのプロパティ設定変更するのは出来てたけどポートはさらに先のポインタでその時は出来なかった。
もっとも、これ10年以上前の話だし、それで修正するとかいう話でもないけどな。

931:デフォルトの名無しさん
20/05/07 19:59:41.10 k5uIH00p0.net
>>923
効いてて草、必死すぎw

932:デフォルトの名無しさん (スプッッ Sd2a-ABif)
20/05/07 20:18:07 IeUYmiVSd.net
>>924
理解出来なくて悔しいからって、そうまでして絡みたいの?

933:デフォルトの名無しさん (ワッチョイ 6668-uk0G)
20/05/07 20:58:22 SRAFxxem0.net
効いてる事にして勝ったつもりになってるけど実は・・・

934:デフォルトの名無しさん
20/05/07 21:20:02.04 k5uIH00p0.net
>>925
別に古臭いVBAおじさんに絡みたいとかないけどなw
その程度でどや顔して、こんなところで長文まで書いて哀れだなあってねw
・瞬時に5個思い付く(ドヤア)
・10年以上前の話(ドヤア)
・どうしても解決出来ない問題が解決できた(ドヤア)
いい年して恥ずかしいww

935:デフォルトの名無しさん
20/05/07 21:20:55.13 XMGIuLDd0.net
>>917
煮詰まったなら完成じゃん。

936:デフォルトの名無しさん
20/05/07 21:29:03.52 vCXp7vkf0.net
4月、5月、6月というシートを請求書という新しいブック名のシートに追加していきたい場合
請求書というブックがなかったら
請求書というブックを作成して○月のシートをコピー
既に請求書というブックがあったら
そのブック内に○月のシートをコピー
という考え方でいいですか?
というか可能ですか?

937:デフォルトの名無しさん (ワッチョイ cf7c-7oqX)
20/05/07 21:34:48 wHiSIw2F0.net
既にあるブックを変えて問題ないんならいいんじゃないの

938:デフォルトの名無しさん
20/05/07 21:46:21.07 IeUYmiVSd.net
>>927
悔しいと素直に言えば良いのにw

939:デフォルトの名無しさん
20/05/07 21:58:23.82 k5uIH00p0.net
>>931
あ、恥ずかしくなってるwかわいーねーw

940:デフォルトの名無しさん (ワッチョイ 33ad-D+XR)
20/05/07 22:16:17 oG7+JCgx0.net
色々調べ直して列幅1cmできた! ありがとうございます。
それにしたって、なんと解りにくい…
CentimetersToColumnPointsみたいにしてくれればいいのに…

941:デフォルトの名無しさん (スプッッ Sd2a-ABif)
20/05/07 22:22:20 IeUYmiVSd.net
>>932
自分の技術が足りないのがそんなに悔しいのかねw

942:デフォルトの名無しさん (ワッチョイ 6bac-V20a)
20/05/07 22:33:54 k5uIH00p0.net
>>934
恥ずかしくて言えることないの草
黒歴史だねーww

943:デフォルトの名無しさん (ワッチョイ 6bac-V20a)
20/05/07 22:35:53 k5uIH00p0.net
>>934
あ、>>929とか5通り早くコード付で答えてあげなよww
あと5年後まで改善策見つけたら書き込んでねw

944:デフォルトの名無しさん
20/05/07 22:48:13.57 IeUYmiVSd.net
>>935
君が初心者に毛が生えたレベルなのは俺の責任じゃ無いんだ。
悔しいからって絡むのは辞めてくれw

945:デフォルトの名無しさん
20/05/07 22:50:20.24 IeUYmiVSd.net
だいたい、バカにしようととしたら自分より上のレベルで悔しくても、それは自分が悪いんだろw

946:デフォルトの名無しさん
20/05/07 23:08:01.99 ATN3rOjQ0.net
array関数で要素を代入する際に、プロシージャ引数のヒントの様にカンマで区切ると何を入力すべきか表示させることは出来ないでしょうか。要素が多いので解りづらくて
戻り値ありの関数作るべきなのでしょうか

947:デフォルトの名無しさん
20/05/08 00:15:43.02 7LgH0Xf00.net
>>939
入力に困るほど大量のデータをプログラム中に直接書くのは設計が悪いと思う
せめてワークシートに見出しを付けて並べたら?

948:デフォルトの名無しさん (ワッチョイ 6bac-V20a)
20/05/08 00:44:49 NrG+fdAu0.net
>>937
恥ずかしい書き込みするやつの言うことは違うなあw
10年以上前の話とか言っちゃうんだもんなあww
で、5年がなんだって?w

949:デフォルトの名無しさん (ワッチョイ 6391-ABif)
20/05/08 02:37:36 LrYvIqoM0.net
>>941
だから絡むの辞めてくれ。
初心者のプライドが傷ついたのかよw

950:デフォルトの名無しさん (ワッチョイ 17da-oySJ)
20/05/08 09:10:24 gaKPf4O20.net
1000とった方が勝ち

951:デフォルトの名無しさん (ワッチョイ 6bac-V20a)
20/05/08 09:39:57 NrG+fdAu0.net
>>942

>出来る奴は瞬時に何通りかは思いつく。

>もっとも、これ10年以上前の話だし、それで修正するとかいう話でもないけどな。

>瞬時に5通り思いついたとして、5年後に知らない技術を獲得した時に、あの時これ使えばもっと良くなったなあと思うとか。

ん?早く質問者に5通りコードで回答してあげなよ、プロVBAおじさんww

952:デフォルトの名無しさん (ワッチョイ 6668-uk0G)
20/05/08 10:17:39 SGzHt0H00.net
このスレにコロナでも混ざってんの?

953:デフォルトの名無しさん (スプッッ Sd2a-ABif)
20/05/08 12:21:01 KpBIrL5Ad.net
>>944
その返しもバカっぽくね?
質問の内容とか考えた?

954:デフォルトの名無しさん (スプッッ Sd2a-ABif)
20/05/08 12:25:59 KpBIrL5Ad.net
>>944

>早く質問者に5通りコードで回答してあげなよ

日本語をちゃんと理解することができる?

955:デフォルトの名無しさん (ワッチョイ 7f7f-sgQa)
20/05/08 12:27:38 EoiUnzGX0.net
static変数の宣言と同時に初期値入れても、Cと違って毎回初期値が入るようなんですけが回避方法ってありますか

956:デフォルトの名無しさん (ワッチョイ 6bac-V20a)
20/05/08 12:37:08 NrG+fdAu0.net
>>946
ほらほらー、10年以上やってこの程度も5通り分からないの?ww

「出来る奴は瞬時に何通りかは思いつく。」
んだろwwほらほらww

957:デフォルトの名無しさん (アウアウウー Sa1f-Y/5H)
20/05/08 18:51:21 F9AE4+4ta.net
バッチを非同期で実行したいんだけどShellでやってもWSHShellでやっても
バッチの終了まで待たされるんだけど何故?

やってることはIEを操作してファイルをDLするところまでVBAでやって
それ以降の処理をバッチでやりたいんだけど…

958:デフォルトの名無しさん (ワッチョイ cfe6-r6hg)
20/05/08 19:02:53 XNwDJZFz0.net
非同期オプション付けても出来ないのですか?
不思議ですね

959:デフォルトの名無しさん (ワッチョイ 7364-JVfZ)
20/05/08 19:59:31 swHMPSPD0.net
最大で何行くらい組んだことある?

960:デフォルトの名無しさん (ワッチョイ aea7-XasS)
20/05/08 20:43:59 1Hremoh70.net
2000

961:デフォルトの名無しさん (アウアウウー Sa1f-2+Ho)
20/05/08 21:13:02 oLBub1X/a.net
vbaでハイパーリンク設定済み場所から
フルパスを取得したいです。

URLリンク(www.google.co.jp)

このサイトの方法でネットワーク上のアドレス取得して
あるセルにフルパスを貼りたいんだけど
カレントディレクトリが¥¥A¥B¥C
とあったら、¥¥A¥Bまでしか貼り付けに反映されないのってなぜかわかりますか?

msgboxでカレントディレクトリだけ表示させたら
Cまで表示されますが貼り付けたらBまでしか表示されない感じです。

あとカレントフォルダの設定はこのサイトの方法です。
URLリンク(vbabeginner.net)でネットワークドライブにカレントを変更する/

962:デフォルトの名無しさん (スプッッ Sd2a-ABif)
20/05/08 21:31:38 KpBIrL5Ad.net
>>949
くだらねえ煽りの前にお前が日本語を理解出来て無かったのが分かったのか?
そして今は理解出来てるんだろうな?

963:デフォルトの名無しさん (スプッッ Sd2a-ABif)
20/05/08 21:32:10 KpBIrL5Ad.net
>>949
そしてもう1つ。
質問の内容とか考えた?

964:デフォルトの名無しさん (スプッッ Sd2a-ABif)
20/05/08 21:43:28 KpBIrL5Ad.net
>>950
Shellは待たされないと思うぞ。
待つにはタスクからプロセスハンドルを得て、WaitForSingleObjectとかを使う筈。
←たしかこいつは古いんで今は似た名前の奴を使う。

965:デフォルトの名無しさん (ワッチョイ 738e-jYUs)
20/05/08 22:58:17 AMoglHga0.net
>>954
ただのコピペしかできない馬鹿だからだろ

966:デフォルトの名無しさん (アウアウウー Sa1f-2+Ho)
20/05/08 23:39:12 oLBub1X/a.net
>>958
他のサイトも色々見て調べたり試行錯誤したのですが
Cが表示されなくて。

何か縛り的なのがあるかわかりますか。
貼り付け時の表示文字数に制限があるとか。

最悪わからなければ、
¥¥からCまでを取得したものをセルに貼り付けて
C以降を貼り付けたものを&で繋げて使おうか迷ってます。

967:デフォルトの名無しさん (ワッチョイ b7ce-oySJ)
20/05/08 23:49:29 7LgH0Xf00.net
>>954
最小限のコードで実験してみ?
(1)ワークシートにハイパーリンク設定
(2)FSOでフルパス取得
(3)MsgBoxで確認
(4)セルにフルパスの文字列を入れる

968:デフォルトの名無しさん (アウアウウー Sa1f-2+Ho)
20/05/08 23:56:44 oLBub1X/a.net
1)と2)と4)についてはBまでの表示

3)についてはフルパスでは試してないので、試して見ます。

ちなみに3)はカレントディレクトリのみで行うと、Cまで表示されて、次の行に2)を試すとBまでになってしまいます。

969:デフォルトの名無しさん (ワッチョイ 6bac-V20a)
20/05/09 00:37:26 SO2yq4ky0.net
>>955
質問どんどん来てるよww
10年やってきたんだから早く5通り以上答えてあげなよww
そしてリファクタリング出来たらその都度書き込んでなw

>出来る奴は瞬時に何通りかは思いつく。

>もっとも、これ10年以上前の話だし、それで修正するとかいう話でもないけどな。

>瞬時に5通り思いついたとして、5年後に知らない技術を獲得した時に、あの時これ使えばもっと良くなったなあと思うとか。

970:デフォルトの名無しさん (アウアウウー Sa1f-Y/5H)
20/05/09 09:12:02 jb1+fPLha.net
>>957
思うぞと言われても実際待たされてるから困ってるんだが。

検索しても待つ方法しか引っかからんし…
CPU使用率が上がるとVBAスクリプトが止まるとかそういうわけじゃないよね

971:デフォルトの名無しさん (オッペケ Sr33-DSpW)
20/05/09 09:12:34 5lxB5cuMr.net
パスとドライブの違いわかってる?
uncパスの形式わかってる?
そのaもbもフォルダじゃないけど、なにをどうやって表示させた?

972:デフォルトの名無しさん (ワッチョイ b7ce-oySJ)
20/05/09 10:41:18 OK904gHA0.net
最小限のコードでテストしてみた
Excel2019のshell関数でバッチの同時起動できてるから原因は別の所にある
URLリンク(i.imgur.com)

973:デフォルトの名無しさん (ワッチョイ 17da-oySJ)
20/05/09 11:14:42 m7V0shMq0.net
>>954
ハイパーリンク扱う時って表示文字列とアドレスの2つがあった気がするが関係ないか?

974:デフォルトの名無しさん (ワッチョイ 8f59-2+Ho)
20/05/09 12:02:06 zV8Vx2bY0.net
>>964
わかりにくくてすいません。

abcは仮に書いた感じで、実際はネットワーク上のフォルダ名になります。

975:デフォルトの名無しさん (ワッチョイ b7ce-oySJ)
20/05/09 12:06:22 OK904gHA0.net
>>967
何をやろうとしてるのかイマイチよくわからん
試したコードとワークシートのスクショをここに書いて

976:デフォルトの名無しさん (ワッチョイ 6391-ABif)
20/05/09 12:11:35 74X5YOol0.net
>>962
日本語が理解出来てたのか出来て無かったのかどっちだい?
話はそれからだ。

977:デフォルトの名無しさん (ワッチョイ 8f59-2+Ho)
20/05/09 12:17:50 zV8Vx2bY0.net
>>968

ネットワーク上にあるエクセルファイルで、
相対参照で貼り付けされたハイパーリンクがあるんですが
それを絶対参照で取得したいです。

カレントディレクトリを¥¥a¥¥b¥¥cで設定し
GetAbsolutePathNameで取得しあるセルに貼り付けると
なぜか¥¥a¥b¥取得したパス.xlsxになります。
カレントディレクトリをmsgboxで表示すると¥¥a¥b¥cとなります。

今端末が手元にないので、スクショ取れるようになり次第
対応します。

助かります。

978:デフォルトの名無しさん (ワッチョイ 8f59-2+Ho)
20/05/09 12:23:23 zV8Vx2bY0.net
>>966
アドレスを変更しています。

979:デフォルトの名無しさん (ワッチョイ 7364-JVfZ)
20/05/09 12:40:40 5ucHUX9S0.net
どうやってvba勉強した?

980:デフォルトの名無しさん (JP 0He6-lvFW)
20/05/09 12:48:47 drDVgFRjH.net
いくつか他の言語はできるからなんとなく雰囲気で
特に勉強はしていない

981:デフォルトの名無しさん (ワッチョイ 6391-ABif)
20/05/09 13:04:53 74X5YOol0.net
>>963
何となく分かった。
待たされたんじゃなくてフォーカスがバッチファイルにある。

よく、たくさんのウィンドウが開いてる時なんかにメッセージを表示しようとタスクバー上で点滅してるのと同じ現象。
バッチファイル実行中にExcelをクリックするとすぐ実行されるよ。

Shellの第2引数にvbNormalNoFocusを指定してみよう。

982:デフォルトの名無しさん (ワッチョイ 6391-ABif)
20/05/09 13:16:32 74X5YOol0.net
>>970
カレントディレクトリとは何かを調べた方が良い。
これはエクセルファイルだとかに関係が無い。
動いている場所だ。
ブックのある場所でも無い。

ハイパーリンクの相対参照、絶対参照の操作でカレントディレクトリが関係することは無い。

983:デフォルトの名無しさん (スフッ Sd8a-xOzV)
20/05/09 13:16:59 hJO1Owz9d.net
>>972
マイコンBASICマガジンのゲームがやりたくて覚えた
子供は記憶力がいいからすぐ覚えた
大人になってから始める人は大変だろうね

984:デフォルトの名無しさん (ワッチョイ 738e-jYUs)
20/05/09 13:21:14 WSrPnN3q0.net
意味もわからずただコピペしかできない馬鹿には無理

985:デフォルトの名無しさん (ワッチョイ 6bac-V20a)
20/05/09 13:25:01 SO2yq4ky0.net
>>969
話はそれからだ、ってコード5つ提示もしないで答えない10年経験者に言われてもなあww
ほらコード5つ提示して答えてあげなよw

>出来る奴は瞬時に何通りかは思いつく。

>もっとも、これ10年以上前の話だし、それで修正するとかいう話でもないけどな。

>瞬時に5通り思いついたとして、5年後に知らない技術を獲得した時に、あの時これ使えばもっと良くなったなあと思うとか。

986:デフォルトの名無しさん (ワッチョイ 8f59-2+Ho)
20/05/09 13:27:57 zV8Vx2bY0.net
>>975
ご指摘ありがとうございます。

相対参照だと./や../で省略されてしまうので
省略される箇所(ネットワーク上(インターネット上ではない)の決まったフォルダ)
を指定するためにカレントディレクトリで設定していました。

ちなみに複数端末でファイルを操作する事を想定しています。

もう少し勉強します。

987:デフォルトの名無しさん
20/05/09 13:33:59.72 74X5YOol0.net
>>978
やっぱり日本語分かってねえじゃんwww

988:デフォルトの名無しさん
20/05/09 13:40:39.44 m7V0shMq0.net
>>970
ネットワーク上にあるエクセルファイルはUNCパスになるので
ディレクトリ構成はサーバー上での階層
一番上はサーバーのIPアドレス(DNSで変換された名前)

989:デフォルトの名無しさん (ワッチョイ 6bac-V20a)
20/05/09 14:38:22 SO2yq4ky0.net
>>980
自分の言ったこと分かってねえじゃんww

>出来る奴は瞬時に何通りかは思いつく。

>もっとも、これ10年以上前の話だし、それで修正するとかいう話でもないけどな。

>瞬時に5通り思いついたとして、5年後に知らない技術を獲得した時に、あの時これ使えばもっと良くなったなあと思うとか。

990:デフォルトの名無しさん (ブーイモ MM97-OuYa)
20/05/09 15:54:31 INzaqzr5M.net
議論してるところ申し訳ないけど
>>929
わかる方お願いできますか

991:デフォルトの名無しさん (ワッチョイ 17f8-lN29)
20/05/09 15:58:18 JX27GBwZ0.net
>>983
合ってるよ

992:デフォルトの名無しさん
20/05/09 16:04:20.17 74X5YOol0.net
>>982
バ一カw
>>984
そう、これが正解。
バカと違って質問の意味が分かってる人はこういう答えになるから何通り等の方法等とならないことを知っている。

993:デフォルトの名無しさん (ワッチョイ 7332-R2sI)
20/05/09 18:27:33 d0o5iTyS0.net
>>984
便乗してそのコード教えてくれせんか

994:デフォルトの名無しさん
20/05/09 18:39:39.46 3Qrhs3L2M.net
ある表があって一行ずつアクティブセルをループで下に移動させ、条件があった場合offset で特定のセルを集計するマクロを作成し使用してたんだけど、
アクティブセルじゃなくてcellで置き換えたら実行スピードが早くなった。
やっぱり画面が遷移すると遅くなるんだよね?
オートフィルタ組み込むと遅くなる?


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch