Excel VBA 質問スレ Part60
レス数が1000を超えています。これ以上書き込みはできません。
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part59
https://mevius.5ch.net/test/read.cgi/tech/1549692750/ 前スレの最後の方で承認欲求モンスター共がAccessの話でマウント合戦初めて、もうみんなこのスレ要らないやって思ってたんだぞ 次からAccessスレも含めて↓でいいんじゃないかな
ここ無くなって↓あるの初めて知った
最近outlookVBA使い始めたんだけど、もっと早く使うんだったと後悔
VBAなんでも質問スレ Part2 [転載禁止]©2ch.net
https://mevius.5ch.net/test/read.cgi/tech/1432173164/ やっと出来たか
前のExcel VBAのスレで、次スレ検索したら、Accessの
https://mevius.5ch.net/test/read.cgi/tech/1544620479/
が出てきたぞ
VBAは全部まとめていいんじゃねえか? お願いします。
Sub teust()
n = Cells(Rows.Count, "b").End(xlUp).Row + 1
Range("b" & n).Select
ActiveCell.FormulaR1C1 = Sheets(2).Range("i4")
End Sub
a b c b …
ってやってるですがB列だけ9個下に表示されます。
考えられる原因はなんでしょうか(泣)
abcb…はコピペしてるので何故かB列だけ下に行きます >>9
Cellsで参照してるアクティブシートのB列だけ、最終行であるべき行よりも9行下に余計な値の入ったセルがあるとかじゃない?
変な空白が入ってたり、表の欄外に他人が勝手にコメントつけてたりとかありそう MsgBox Range("B" & n).Value
とか一度やってみて
同じような事が起きたことあるけど
会社のおっさん上司が白色の文字をそのセルに置いてたわ コンソールの使い方知ってるならDebug.Print n とかDebug.Print Range("B" & n).Value でも良し >>9
正直、コードが微妙に感じる。
1行で済むだろ。
それと、ブックとかシートは余程のことが無い限り省略しない方が良い。 >>13
そういうコメントするなら一行コードを書いてあげるのが親切じゃね >>15
sht.Cells(sht.Rows.Count,2).End(xlUp).Offset(1,0).FormulaR1C1=Sheet(2).Range("I4").Value
とかかな。
FormulaR1C1とかValueは適宜実際に併せて変えてくれ。
Sheet2のI4に式が入ってるとは思えないから両方Valueで良いような気がする。 別に1行にすべきというわけじゃ無い。
.SelectとActiveCellが良くないということ。
あと、元の情報が無いのとスマホで書いたからブックは省略したけど、自分が組んでたら省略はしない。 入力のあったセルの場所が分かったとしても、また同じ事が起きそう
入力させるセルと出力するセルはハッキリ分けた方がいいと思うよ 確実に全セル入力されてる列があるならそれを基準に使う手もアリ(例えば項番の列とか) 新しくシートを作成するコードで、
シート名をInputboxで入力させるんだけど、
もし名前が被ったときに、エラーを回避して
Subを終わらせることってできる?
シートも結構いっぱいあるから
「名前が一致したとき」にExit Sub
ってのはやりたくないんだけど… >>22
For Eachで全シートの名前と比較して、同じのがあったら作らない >>23
最後の3行が無ければ俺も同じ事をレスしてた >>22
最初に名前があるかどうかの処理をかませばいいだけ
シート作ってから一緒に何かしようとするとややこしいしミスするからオススメできない
Sub foo()
希望シート名 = InputBox("シート名を入力")
For Each 既存シート In ThisWorkbook.Worksheets
'小文字半角に変換、統一して比較
If StrConv(希望シート名, 6) = StrConv(既存シート.Name, 6) Then
MsgBox ("既にあるシート名でした。終了します")
Exit Sub
End If
Next
Set 新シート = Worksheets.Add
新シート.Name = 希望シート名
'新シートで処理
End Sub >>23
>>24
>>25
ありがとう!
試してみますわ できたー!ありがとうございました!
まさにこれっすー! オレはループ回すの面倒(遅い?)から on errorでやるわ on errorってエラーの決め打ちじゃなくて「このエラーが出るはず」という使い方だから、他の手段があるならあまり積極的には使わない方がいいと思う on errorの場合はworksheets.add.nameで作ってエラー時はActiveSheet.Deleteみたいな処理にすんのかな
不測の事態が起きそうで怖いけど シートに配置したフォームコントロールのボタンのクリックとマクロを関連付けています
この時、ボタンのテキストを取得する方法はありますか?
Application.Caller
だと名前は取得できるのですが
ボタンの名前をテキストと同じものに変更する、でも良いです >>16
ブック.シートをwithでくくりたい(´・ω・`) >>32
ボタンのテキストはどうやって設定した?captionプロパティじゃないのか? >>35
ボタンに表示している文字の事を言ってるなら、手作業でもなんでもcaptionプロパティに入れてるはずだが リストボックスのリストを更新した時クリックイベントが発生するのは何故? >>36
そのcaptionプロパティを取る方法が分からないのです
https://i.imgur.com/Z5g9J0j.png
引数としてオブジェクトが渡されるわけでもないし、何か方法はあるのでしょうか いろんなボタンにおんなじハンドラ割り当ててるんでしょ? >>39
えぇ、それは分かるんですが
>>41
そうです
複数のボタンのclickイベントに同じマクロを登録し、
clickしたボタンのcaptionを取りたい
https://i.imgur.com/IWsgjEQ.png >>38
OLEオブジェクトのコレクションからnameプロパティの一致する物を探すとか じゃあSheet1.buttons(application.caler).captionは? 少々強引だが、apiのGetCursorPos関数でマウスポインタの場所のコントロールを取得って方法もある >>43
一見イベントハンドラですが、thisが使えない、オブジェクト渡さないイベントハンドラはハンドラと言えるのでしょうか
個人的には、ハンドラという方が逆に混乱すると思いますのであえて言っていません
>>45
うおおおおおおできましたああああああああすごい!!!!!
https://i.imgur.com/8q0Z3yb.png
>>44>>46
ありがとうございます! あと、>>45さんの
Sheet1
というオブジェクトも気になります
sheet(1)
のエイリアスが自動的に生成されてると思いますが、MSDNでどのように調べると良いでしょうか? ActiveSheet.Buttons(Application.Caller).Characters.Text でいけないかな
試してないから駄目だったらごめん >>49
インデックス番号は、同じ種類のシート間に付けられる番号で、左からのシート見出しの順に基づきます。
https://docs.microsoft.com/ja-jp/office/vba/excel/concepts/workbooks-and-worksheets/refer-to-sheets-by-index-number
シートオブジェクトの移動や削除を行ったときにダイナミックにインデックスが変更されるのか、ファイル保存等の更新イベントがあるのかという細かい部分は調べてないから分からない
デフォルトのシート名がSheet & シート追加時のインデックス値になるのは経験上知ってる >>49
画像のボタンがSheet1に貼ってあったからそれに合わせて書いただけ
"Sheet1"っていう名前のシートのオブジェクト名がSheet1になってるっしょ >>51
シートのインデックスは常に左からの連番
シートの追加削除等あればもちろん都度変わる >>50
行けそうでダメでした
何で〜?
https://i.imgur.com/kZaCjUg.png
https://dotup.org/uploda/dotup.org1801319.zip
>>51
>デフォルトのシート名がSheet & シート追加時のインデックス値
削除すると変わるので、これは違います
>>52
その仕様ってどこかに書いてないのでしょうか >>54
どこに書いてるかは知らないけど、ボタンもシートもブックもオブジェクトの指定の仕方は同じ
オブジェクト名
オブジェクトのコレクション(インデックス)
オブジェクトのコレクション("名前")
好きなのを使うがよい MS公式でWorksheetオブジェクトに関する説明調べればどっかにあるかもねえ、知らんけど マクロを10時間ぶっ通しで走らせるのはよくないですか?途中で再起したほうがいいですか? >>55>>56
ありがとうございました
もう少し調べたかったけど、疲れたので断念します
>>57
とりあえず動かして、エラーが起きなければ何も問題はない
ただ、セルを触る物を10時間も動かすとメモリエラーが起こるかも知れない
>>58
笑った >>59
ありがとうございます。
メモリの心配はありますが、ぶっ通しでやってみます。 だから、どういう状況で10時間ぶっとおしが必要なんだよwwwwww
マジでExcelを何に使ってるのか気になるわ。 結果セットは小さいけど重いDBクエリを繰り返すとかだったらわかる 10時間動かし続けるとなると思いつくのは
出勤時間中にwebサイトやフォルダ監視し続けて何かをキッカケに何かするみたいなのかな ExcelVBAでパワーポイント動かしたいんですけど、
とか言われても、もう驚かんわ。 馬鹿はそこでマクロと言い出す
更には、「教えて」「助けて」で始まり
「急いでます」「作って」と要求する なんだお前ら、勿体無いな
10時間動かすなんて奇抜な事をしてくれるんだから、全力で応援するべきだろう
かなり貴重なサンプルが手に入る可能性があるのに、バカだの言って切り捨てるのはあまりに勿体無い >>70
まともな報告がある可能性は殆どない。
報告が役に立つ可能性はもっとない >>71
この辺は感性の違いかな
面白い物が見れそうな時はどんどん投資してしまう 肛門に穴があいたんですけど、
とか言われても、もう驚かんわ。 >>69
むしろ楽勝の方だろ
ちょっと前にシートの内容をスライドに埋め込むとかはやったことがある
やったのはPowerShellだったけどCOM経由なら似たようなもんだし パワーポイントでVBAって何すんの?
パワーポイントって発表用のアプリだろ。 それでVBAって需要なんてあまりあるとは思えんが 例えば、気象庁のホームページからクエーリーでデータを取得し
パワポにデーター貼り付けながら、加工してそれをアニメーションで
かっこよく表示していくとか、考えれば応用はいくらでもあるだろう 言葉が足りなかった、プレゼン用ではなく、情報表示モニター用にな
いくらでも機能はつけられる まあパワーポイント自身、個人で使うことなんてないのか
でも企業でも極一部の部署しか使わないものばかりじゃん パワポVBAで何か作ってみたいという逆需要で、発表後喋ってる間にスターウォーズのエンドロールみたいなのを流すのを昔作ったことあるなw
それ以降、私の開発現場では(個人的にも)パワポVBAは全く需要なし
WordVBAも、補助ツールとして数年に一回作るくらいかな スライドシェアとか見てもかったるいだけだからな
大昔の改行しまくりのテキストサイト思い出す なんか、ExcelのVBAでパワポを操作するのと、パワポのVBAを同一で語ってるやついるか?
ちなみにWordのVBAはいくつか作って今も使ってるけど、まあ対比で言えばExcelの
100分の1程度だな >>84
>スライドシェア
何だよ、かったるいのしか見たことないんだろ
>テキストサイト
何もわからんバカなのね(笑) >>84
まあ、言葉もわからんカスが書き込みするスレだよな >>86
カッコイイパワポを見てみたいんだが、どこかにある?
俺は見たことない >>88
そうか、じゃあそのままでいいよ
検索もできないカスのお前に見せる必要ないからな 自分では何もできないくせに、人の作ったものは全力で否定するカスいるな
生きてる必要あるんか?・・ってかどうなの?(笑) >>75
そういう問題か?
PowerPointなのにPowerPointVBAを使わずにExcelVBAという所が驚きの対象なんじゃないの? >>67の冗談が起点なのになんで真剣に語っているんだ >>93
Excel VBAで扱うのとPowerPoint VBAで扱うのはたいして変わらんよ
どっちから制御するかだけの問題 他アプリから制御するのはいちいちアプリケーションインスタンスを起動しなきゃならんのが糞面倒
パワポだけで済むならパワポにする VBAを使ってる人って御老人のイメージだけど合ってる? >>96
PowerShellなんて言い出す奴だからわからないんだろうな。
大して変わらんのなんて当たり前だろ。
PowerPointVBAからExcel.Application使って、そのExcelオブジェクトからPowerPoint.Application使ってを10回繰り返した所で変わらんけどアホ丸出しなのが分からんのかね。 >>101
で?
例がアホすぎて何を主張したいのかさっぱりわからんw パワーポイントVBAって色々と勝手が違って面倒臭かった記憶があるけどな
そもそもエクセルやワードと違って空のアプリケーションインスタンス作れないんじゃなかったっけか
ファイル実行時に読み取りパスワードを指定するときもファイル名と連結する必要があるし >>102
バカにはわからない。
というか例がアホ過ぎる所がミソなんだがw
そんなアホなことをするのかというのが驚きの対象であって、大して変わらんかどうかなんて頓珍漢な話はどうでもいい。 いや、当たり前なんてみんな知ってる(>>93を除くw)のに今更何を言いたいんだってこと
バカの上塗り? 結局、ワッチョイ抜きにするから荒れるんだろ
誰がどう主張したいのかわからなくなる
ワッチョイが嫌な奴がこのスレ建てたんだろうな、立て直すか? >>105
プッ
当たり前なのは>>93を含めてみんな知っている。
今更何を言いたいのかは>>102を除いてみんな知っているw で、結局>>101は当たり前の事をほざいてただけ?
やっぱりバカの上塗りじゃねーか w OLEアプリケーション連携の話になると途端に荒れるのやべーな
前も下らんAccessの話でクッソ揉めてたし
他アプリ連携のスキルをプライドの拠り所にしてる人が結構いるのかな
凄いことやってる風に見てもらえるときあるし分からんでもないけどさ 会社でブラウザの検索結果のページで
いっぱいURLのリンク先が表示されるのですが
そのたくさんのURLのそれぞれを開いたページ(毎回違うけど50ページくらいある)のデータを取得するVBAのコードを考えています。
IEの定番のCreateObject("InternetExplorer.Application")とDOMツリーの方法で実現できてはいるのですが
1つ1つページを開いて取得して閉じる、という作業がネットワークの遅さで異常に時間がかかります。
この複数のページを同時で取得する方法ってないでしょうか?よく知らないけどJavaでいうスレッドみたいな? いまどきマルチポストに眉をしかめるような時代遅れの人間なんていないよ、ね? >>114
IEオブジェクト作らずに通信すると早くなる気がするけど早くならないかもしれない
試してみて
Sub foo()
Set httpReq = CreateObject("MSXML2.XMLHTTP")
httpReq.Open "GET", "https://www.nicovideo.jp/watch/sm31763534"
httpReq.Send
Do While httpReq.readyState < 4
DoEvents
Loop
str2 = httpReq.responseText
End Sub >>114
どっかのサーバーでPHPなどで書けば
一度に取得を投げて戻ったイベントで処理を書く
ネットワークに依存しないし負荷はサーバー
詳しくはPHPなどの質問スレッドでしろ >>116
VBAでは書いたことないけど
リクエストを配列にして一度に投げ
戻った奴から処理する
普通はイベントで受ける >>116
そのCreateObject("MSXML2.XMLHTTP")はなんでしょうか?
str2にはたしかに入ってますが"https://www.yahoo.co.jp/"にしたら空欄になってしまいます。
HTMLページは膨大なソースなのでDOMツリーで必要なものだけを取り出したいのですが、それはできますか?
>>117
PHPって知らないのですが簡単に学習できるのですか?
>>118
VBAでイベントってどうやって受けるのですか >>119
PHPをおけるサーバーの契約まあ無料のところも有るだろ
学習は無料でツールをダウンロード出来る
比較的簡単な言語でいろいろソースもあるが
VBAは超簡単な方だからな
VBAは特定のイベントしか受けられんのかな
普通VBやc++やPHP などでコーディングするときは
イベントで受ける >>119
出来る。
ResponseTextをDOMに入れる。 >>118
jsで言うPromise?
非同期がvbaにあるんか、と思って調べたら一応あったけどかなりしんどいな
https://system-engineerlife.com/vba/multithread/
>>119
>CreateObject("MSXML2.XMLHTTP")
http通信するだけのもの。DOM構築しないから軽いはず >>125
これ、マルチプロセスだけどな。
別にしんどくない。
ExcelVBAでマルチプロセスやるときはExcel.Applicationを複数作ってやるのが普通だと思うけどね。
最終的に速度どうにもならないときはマルチプロセスにする。 >>123
10時間ぶっ通しのVBAのようにアホ丸出しの例としてExcelVBAからPowerPoint動かすって話だろ。
>>75のような当たり前の話じゃないんじゃないの?
という問い掛けが>>93だろ。 >>125
ちなみにマルチスレッドはこっちにあるやり方
https://needtec.exblog.jp/18893727/
場合によっては使える(自分で表示したメッセージボックスのボタンをクリックとか)と言いたいところだが止めとくべきだね。 >>119
Sub foo()
Set httpReq = CreateObject("MSXML2.XMLHTTP")
httpReq.Open "GET", "https://www.yahoo.co.jp/", False
httpReq.Send
Do While httpReq.readyState < 4
DoEvents
Loop
Set HTML = CreateObject("htmlfile")
HTML.write httpReq.responsetext
End Sub
これでHTMLがdomになる
ちなみにphpなら二行で終わる
サーバー借りなくてもxamppっての使えばPCだけで行けるけど、
どっちにしても学習コスト高い気がする
ついでにHP作ってみると良いかも知れない
>>126>>128
excelかVBSインスタンスをスレッドの分作って文字列作ってevalみたいにして実行か
もうここまで来るとVBAでやるのはなぁ
VBAしかないなら頑張れるけど、他言語だと瞬殺と思うとやる気が削がれる >>127
> 10時間ぶっ通しのVBAのようにアホ丸出しの例としてExcelVBAからPowerPoint動かすって話だろ。
その例がアホって話だろw >>116
httpReqを配列にしてreadyStateが4より小さいものから処理すれば良いだけだろ レスありがとうございます。
>>122
なるほどそうですかありがとうございます。
いまの直近の問題が解決したらあとで勉強してみます。
>>124-125, >>129
DOMができたとして
50個くらいある複数のURLの1つ1つに
Do While httpReq.readyState < 4
DoEvents
Loop
で時間待ちするのが問題なんです。
1つあたり1分近くかかるから。
一気に全部同時にやれないかなと。 >>134
PowerShellのプログラミングってめっちゃめんどくさい
タイプ量が半端なく多くなる。 大嫌い まとめてダウンロードしてファイルに保存
その後一つずつ解析するべき
domなんて使わなくても正規表現で何とかするべき でもpowershellなら.NETのWorkflowが手軽に使えるよね >>133
すまん、無理だった
他の人頼む
arrayでurl設定して、class使ってforeachだろうけど
vbaのclassを覚える気力がもう内
とりあえず2つだとこんな感じ
Sub foo()
Set httpReq = CreateObject("MSXML2.XMLHTTP")
httpReq.Open "GET", "https://www.yahoo.co.jp/", False
httpReq.Send
Set httpReq2 = CreateObject("MSXML2.XMLHTTP")
httpReq2.Open "GET", "https://urasunday.com/", False
httpReq2.Send
Do
flg = False
If httpReq.readyState < 4 Then flg = True
If httpReq2.readyState < 4 Then flg = True
DoEvents
Loop While flg
Set HTML = CreateObject("htmlfile")
HTML.write httpReq.responsetext
Set HTML2 = CreateObject("htmlfile")
HTML2.write httpReq.responsetext
End Sub If httpReq.readyState < 4 Then flg = True
If httpReq2.readyState < 4 Then flg = True
片方で抜ける
配列ぐらい使えよ >>140
・普通に逆だった、スマン
・pushくれ。redimしなくていい素直なpush
・なんかテキトーにやってもうまいことやってくれる非同期欲しい
・eachで自動生成されるindexくれ
・インクリメントくれ
ってことでうんこコードになったわ、すまん
>>141
それは分かるし書きたいんだけど
documrnt.ready(function(){}〜
的な奴が分からなかった >>133
Sub foo()
Const max_count = 1000 '1000で決め打ち
url_arr = Array( _
"https://www.yahoo.co.jp/", _
"https://urasunday.com/" _
)
Dim httpReq(max_count)
index_httpReq = 0
For Each url_foo In url_arr
Set httpReq(index_httpReq) = CreateObject("MSXML2.XMLHTTP")
httpReq(index_httpReq).Open "GET", url_foo, False
httpReq(index_httpReq).Send
index_httpReq = index_httpReq + 1
Next Do
flg = False
For Each url_foo In url_arr ' どれかがまだ
If httpReq(index_foo).readyState < 4 Then flg = True
Next
DoEvents
Loop While flg
Dim html(max_count)
index_html = 0
For Each url_foo In url_arr
Set html(index_html) = CreateObject("htmlfile")
html(index_html).write httpReq(index_html).responsetext
Cells(index_html + 1, 1).Value = httpReq(index_html).responsetext 'テスト。A列に出力する
index_html = index_html + 1
Next
End Sub >>143までは問題ないと思う
>>144でグダグダになった。
パフォーマンス的にはそんなに変わらんだろう。大量にあるとメモリにも影響してきそうだけど If httpReq(index_foo).readyState < 4 Then flg = True
コレじゃ1つでも読み込めたらループから抜ける
set したのはリリースする
処理がおもいのは
html(index_html).write httpReq(index_html).responsetext
これだろ 同じ個数配列で使うものはTypeを使って構造体にしろよ
構造体を配列で取る
redimぐらい使えよ >>144
Do
flg = False
For Each url_foo In url_arr ' どれかがまだ
If httpReq(index_foo).readyState < 4 Then flg = True
Next
DoEvents
Loop While flg
↓
For Each url_foo In url_arr ' どれかがまだ
Do
flg = False
If httpReq(index_foo).readyState < 4 Then flg = True
DoEvents
Loop While flg
Next
>>146
>コレじゃ1つでも読み込めたらループから抜ける
入れ子逆だった、スマン
>set したのはリリースする
httpReq is nothingがエラーになる
vbaって配列 is nothing出来ないのか
>処理がおもいのは
相対的に重いけど体感上重くは無いと思う
>>147
vbaのclassは正直もう無理や 構造体を使うのは処理を分かりやすくするため
リリースは
Set オブジェクト変数 = Nothing
感覚的に難しいかな >>142
普通は以下のように、自分で状態を調べたりしない。
If httpReq.readyState < 4 Then flg = True
これは、Node.js などの低レベルな書き方で、普通はこれらの状態をラップして、
簡潔に書ける方法が、ライブラリ・フレームワークに用意されている
例えば以下は、JavaScript, jQuery の非同期処理の書き方。
ready になったら、引数で定義した、callback 関数を呼んでもらう。
document.ready(function(){}〜
非同期処理には、promise, deffered, async/await の書き方もある
Ruby で、Selenium WebDriver なら、非同期処理を考えなくても、普通に同期的に書ける。
非同期処理の書き方のすべてが、ラップされているから。
Timeout 設定時間までに、状態が満たさなければ、Timeout Error になるだけ 漏れなら、Ruby で、Selenium WebDriver で、
url.txt には、行区切りでURL を書いておく。
script.rb には、Selenium WebDriver での処理を書いておく
main.rb には、以下を書いておいて、このファイルを、ruby main.rb で実行する
File.foreach( "url.txt" ) do |line|
`ruby script.rb #{ line }`
end
url.txtを、1行ずつ処理して、各URLを取得して、それを引数にして、
ruby script.rb URL の別プロセスを呼び出す。
ただし、Selenium WebDriverでの処理が、URLだけが異なって、他は同じ事が条件
つまり、マルチプロセス
これをマルチスレッドにすると、排他処理などが面倒。
それに同一プロセス内の処理になるので、1つのエラーで、すべての処理が止まるし、やってられない! VBA以外の構造化言語で書けば綺麗に書ける
まあ出来るだけ近いように書くのがよいが
まあ所詮俺もこんな処理ではJavaかPHPでしか書かない
まあ >>148
> vbaのclassは正直もう無理や
TypeとClassは関係ないぞ
Typeは単に複数の値を纏めるだけ たぶん、構造体 = Type = 型 = クラス っていうアナロジーで考えてたんだろうね まあ、コードも間違ってるし書き方も良くない
配列すら得意でないようなので・・・
あと、せっかくExcelを使ってるんだから
Url等の情報はセルから読み込むよな >>151
seleniumってまだ使えんの?もう機能しなくなったと思ってた あぁvbaってclassと構造体両方あったのか
>>155
コールバックの部分だけはマジで分からんかった
どうやって書くんだ
>>150
クソ言語乙 >>130
だから、お前が真面目に出来るとか言ってるのは、真面目な話じゃ無くてアホな話だろと言ってるんだが。
アホな例を出さなかったらそれこそアホだろw >>159
はあ?
>>67が
> やろうと思えば出来んでもないのか
って書いてるからやること自体は難しくないって書いてるだけだぞ
そもそもExcel VBAでPowerPointを操作するのがアホとか言ってるわけじゃないことも理解できてないのかよw >>157
Excelでコールバックで受けたいって言っても、やったことないな
所詮そんなにクリティカルなルーチンを書く環境じゃないだろ
そんなことしなくても、ステータスが読み込めた物から処理して
全ての配列が処理出来たら終わればいいぐらいのコーディングだな
自分で書かなきゃ意味ないぞ >>160
無能の相手はほどほどで
>>161
やっぱり難しいよな
>全ての配列が処理出来たら終わればいいぐらいのコーディングだな
これで書いたよ
DOM部分はどうせ瞬殺だからまとめて良い >>162
他の言語で簡単にかけるって言っても
所詮その言語で提供されたルーチンを使うだけだから
適した言語で書けば比較的簡単にかけることは確か
コーディングに関しては直感で書いたからもう少し読んでみよう まあ、所詮夜勤から帰って書き込みしてるから
午後は、お酒が進むんでまあ気にするな >>157
> コールバックの部分だけはマジで分からんかった
> どうやって書くんだ
コールバックなんていらんだろ
素直にreadyStateが4になったら処理すればいいだけ
スマホから打ってるからデバッグしてないけどこんな感じ
Type Request
Session As Object
Done As Boolean
End Type
url_arr = Array("https://www.yahoo.co.jp/", "https://urasunday.com/")
Dim Requests()
ReDim Requests(LBound(url_arr) To UBound(url_arr))
Dim Index As Integer
For Index = LBound(url_arr) To UBound(url_arr)
With Requests(Index)
Set .Session = CreateObject("MSXML2.XMLHTTP")
.Session.Open "GET", url_arr(Index), False
.Session.Send
.Done = False
End With
Next
' 続く… ' 続き
Dim AllDone As Boolean
Do
AllDone = True
For Index = LBound(url_arr) To UBound(url_arr)
With Requests(Index)
If Not .Done Then
If .Session.readyState < 4 Then
AllDone = False
Else
Cells(Index + 1, 1).Value = .responseText
.Done = True
End If
End If
End With
Next
DoEvents
Until AllDone >>160
いや、だから...
それに>>67じゃなくて>>69だろ。
やろうと思えば出来るけど、驚いてるのはそこじゃ無いだろという指摘が理解できなかったから>>96みたいな頓珍漢なことを言ったんだろ。
じゃなかったら>>96みたいに噛み合わない発言にならない。 >>165
俺も使わなくてもいいと思うが
上でコールバックコールバック言ってたからな
>>167
お前に何の能力もないのは分かったから落ち着け >>167
お前はアンカーもまともに見れないのかよw 157デフォルトの名無しさん2019/03/23(土) 11:18:14.30ID:sBAP9hOD
>>150
クソ言語乙
142デフォルトの名無しさん2019/03/23(土) 00:41:36.68ID:sBAP9hOD
こいつは荒らしじゃね?
相手しない方がよい >>170
ここはVBAのスレだよ。 そこにRubyとか持ってきたからじゃねえのw >>170
そのruby信者が荒らしだぞ
あらゆるスレで「rubyなら〜」と言ってrubyを貶めしている
pythonスレではスレタイにruby禁止とまで入る始末 コールバックって何?
ググると、関数の引数に渡す関数って出てくるけど、
それって、複数の処理を、
↓こうやって横着して1行に書くのと何が違うのかわからん。
a = Replace(Replace("あいうえお", "あい", ""), "えお", "") >>173
a関数の処理が終わった場合、a関数の引数を受け取ってb関数を自動的に開始する・・・という処理
非同期、特にスクレイピングが多重で続くような場合は非常に強力
https://www.sejuku.net/blog/67743
使う場面が分からないのは、使う必要が無いと思って良い
jsだと死ぬほど使うが、EXCELで使う事はまずない VBAでコールバックを実装しようとしたら、 Application.Runを使うかクラスモジュールでメソッド書いてCallByName関数で呼び出すようにするかって感じになるんかね >>175
ごめんVBAでコールバックを「実装」か。
VBAの関数をコールバックするにはどうするかという問題と勘違いした >>177
そう、外部プログラムにVBA側の関数ポインタを渡す話じゃなくて、受けとる側の処理の書き方 クラスのメソッドとしてコールバック関数を実装してinterfaceか遅延バインディング使えばいい >>173
> a = Replace(Replace("あいうえお", "あい", ""), "えお", "")
これは外側のReplace()に内側のReplace()の「結果」を渡してる
コールバック関数は内部で呼ぶ関数を変えたい時に使う
例えば図形を描くルーチンがあったとして出力先を色々切り替えたいとかだと出力する関数を自体を渡す
やり方はこの辺りを参考にして
https://qiita.com/rai_suta/items/c07b22130b302682b729 >>179
やっぱりAddressOfの値を受け取ってそれをAPI経由で実行するのがいいんじゃないか
ただしシグネチャは一定とする そんな事をエクセルVBAでやる意味って何?
何が何でもVBAって馬鹿のひとつ覚えって言うんだよ >>183
他言語を覚えなくて良いのは大きなメリット
環境構築、記述方法、言語仕様
この辺全部覚えなくて良いのはデカイ
特にvbaはプログラマーじゃなく事務員が使ってる場合も多いので、環境構築が苦手な事が多々ある ノコギリで刺身切ろうとして包丁使えよって言われて包丁の使い方覚えなくていいのはメリットって言ってる構図 他言語を覚えなくて良いって発想がどうかと思う
適材適所で効率良くするのも仕事だし
死にゆく言語の代表がVBA >>185
流石に頓珍漢すぎ
出刃包丁で刺し身切ろうとしたら刺身包丁買ってこいってゴネてる奴がいるだけ >>187
根拠もなく、何を見てそう思ったの?
>>188
>他言語を覚えなくて良いって発想がどうかと思う
>適材適所で効率良くするのも仕事だし
これは同意
俺も効率化のためにphpとjsはある程度覚えてるわ
ただ、人に勧めるのは現実的に厳しい面がある
たまーに出てくるスクレイピングのためにphp覚えろって言うのはなかなか酷
時間がかかって良いならウンコみたいなコードでも処理できるしな
ここの人でもサーバー=レンタルサーバーって発想した人いるけど、
スクレイピングのためにphp動かすならxamppで良い
>死にゆく言語の代表がVBA
ずっと言われてるけど全然死なないので俺も困っている。せめてバージョンアップして 既に公式にはJavaScriptに置き換わってるのに今更バージョンアップもクソも >>191
JavaScriptに置き換わってるって言ってもアドインだけでしょ >>192
だけもクソも、現在推奨されているExcelのプログラミングインターフェイスはアドインのみだよ
VBAは廃止予定のレガシーな機能であり、使用は推奨されない >>193
それは知りませんでした、申し訳無い
そのソースってどこかにありますか?
vbaがやっと進化するのか 自分の現在分かる範囲で創意工夫してやろうとするのは良いことで出来ちゃってるんだろうけどこの先ずっと出来るかは不明
新しいのを取り入れないとダメ
特にエクセルVBAでやる必要のないのがあるなら勉強のチャンスなのに古いのでやろうとするから進歩しない xampp入れてPHP一から覚えるぐらいなら、VB.NET覚える方がはるかにマシだわ >>191
エクセルのマクロもVBAじゃなくてjavascriptになるのか?
てか、もうなってるの?
ボタンと押したときの動作とかもすでにjavascriptで書くようになってる? >>197
アドインがjsで書けるように鳴ったんだよ ここは言語スレじゃなくてExcel VBAスレなんだが
バイクやチャリの板で日本縦断の準備とか注意点についての質問レスに対して飛行機使えよ馬鹿とレスしてるやつ居たらアホだろ >>199
何回やっても例え下手やなw
もっとやっていいぞ >>198
マクロは関係ないのね。 VBAが無くなるとは考えられん >>201
マクロは単純に廃止だろうね
知らないかもしれないが、昔はVSなどMS製品には大抵VBAマクロが入ってたんだよ
どんどん廃止されて、今や残ってるのはOfficeだけ >>202
ん? マクロ自身が廃止になるのか?
マクロは残るがVBAじゃなくてjavascriptになるのか、って聞いたんだが >マクロ自身が廃止
上でそう言ってたけどソースが見つからない
ただの噂かも
>VBAじゃなくてjavascriptになるのか
現状はjsでもアドインを作れるようになっただけ
俺もvbaは廃止しないと思う だってVBAってセキュリティ的にヤバいし
エクセルファイルに偽装してマルウェア的なかなりの事までやれちゃうから廃止で良いよ >>204
>俺もvbaは廃止しない
絶対あり得んよね。 今までの過去の資産がどれだけあるか
それを作ってるのは理系のプログラマじゃなくて文系の経理の女の子も相当いるからな 全くバカばっかりだ。
その場で最適なのを選択すりゃ良いんだよ。
レガシーとか言ってるバカは救いようがない。
VBAで簡潔出来るならその方が良いんだよ。
VBScriptでファイル選択ダイアログを使う時にExcel.Application使うなんてのは本当はやりたくないけど他にうまい方法が無いから仕方ない。
このやりたくないというか筋が悪いと感じることが出来ない奴は結局駄目だね。
レガシーなのはその通りだが、それで別言語使って筋悪プログラミングしてたら意味が無い。 “Office アドインはVBAやVSTOを置き換えるものではないので(現時点では)、「何でこんな簡単なこともできないの!?」とイライラしてはいけない”だとさ。 Officeアドインとかいうの忌み子になりそうだよな とりまIEが消えればVBAでスクレイピングは消える
OS依存の負債を作りかねない機能はどんどん省いて欲しいね セルの中に、そのセルが存在するシート名を抜き出す関数の定義ってどんなのがある?
シンプルで分かり易い、エクセルの版に依存しないのが良いな。 ここはVBAのスレだから、セル内で使う計算式の質問はスレ違か。 >>210
IEが無くてもhttp通信できるぞ
>>211
cell関数
https://kokodane.com/kan54.htm
シンプルじゃないけどこれぐらいしか >>214
http通信でスクレイピングか
是非頑張ってくれ >>214
ありです。
残念なことに、CELL関数は Excel Online の excel では動かないんですね。 というか、IE消えても出来るぞ。Winsockとか知らんか? スクレイピングならJSで良いと思うけど何が何でもVBAなの?
何か幼少期に家庭的な問題でお父さんから虐待されてたとか? pythonスレのスレタイに、ruby禁止と入れて、スレ立てしている奴は荒らしだよ
lodash 禁止とか、jQuery 禁止とか、ライブラリの話は禁止とか書いて、
テンプレを勝手に改変して、スレ立てしている奴は荒らし
色々なスレを荒らしてる
相手をすると居つくから、相手をするな! スクレイピングのために、xampp, PHP を学ぶのはキツイ。
Ruby, Nokogiri, Selenium WebDriver で良い。
JavaScript, jQuery も呼び出せるし
VBScript のスレ主のピッコロ大魔王のように、
VBScript, PowerShell で、.NET のライブラリを使って、5ch をスクレイピングする猛者もいるけど、これもキツイ
書きやすいのは、やっぱりRuby! という荒らしがいるのでruby禁止をスレタイに入れるのは賛成だ スクレイピングってその分野なら必須なのでVBAなんて低速非効率でするなんて馬鹿げてる バカだよなあ。
どんな言語でも出来るがVBAでやるのが最適な場合の質問だろ。
VBAのスレなんだから。
スクレイピングのためにxampp,PHPを学ぶんだよ。
それが最適なら。
Rubyが最適ならRubyでやれ。
でもここではVBAが最適という前提。
オマエの能力が低くてVBAで答えられんことなんか知らん。 スクレイピングのために、Apache, MySQL, PHP を学ぶのは、難しすぎる
Ruby なら、PowerShell から、1-liner で、
Rubyで作られた遅いウェブサーバー、WEBrick が起動する
ruby -run -e httpd . -p 8080
そのフォルダに、index.html があれば、
何も考えなくても、これでブラウザからアクセスできる
http://localhost:8080
DB は、sqlite3 で良い。
sqlite3.exe なら、外部プロセスとして起動できるし、
sqlite3.dll なら、Rubyプロセス内に、DLLを読み込めばよい
それに多くのブラウザは、内部で、sqlite3 を使っている。
MySQL は大げさ
そもそも単に、CSV・テキストファイルに、保存しちゃダメなのか? いつからスクレイピングとはWEBサーバを立てる事になったんだ スクレイピングの速度を上げすぎるとDoSと勘違いされない?
pythonとかならちゃんと犯罪にならないレベルで収まるよう対策されてるの? wget が、再帰的クローラーのコマンドだけど、オプションでwait 時間も設定できる。
wgetの方が、curl よりも高機能
xampp には、Apache が含まれているから、web サーバーも立てたいのかなと思って バカは自分の無能を言い訳に相手の望まない案を提案する。
誰もRubyでやってくれなんて言ってないんだが。 VBAを覚えても馬鹿にされるだけだしVBA程度でプログラミング出来ますって言えないし
本当に辛いよな >>235
>VBAを覚えても馬鹿にされるだけ
どこで?
これぐらいは基本スキルと思う
>VBA程度でプログラミング出来ますって言えない
誰に大して言うの?
vbaは一般事務や営業が楽するためのツールだよ
vbaプログラマーなんて滅多にいない 昔は同時接続5つくらいまでみたいなマナーのようなのがあったが、今はどうなの? >>236
そりゃそうだ
ところで他言語連携って、A言語で作ったライブラリをB言語から呼び出すパターンと、
時間的同期を意識しなくていいバッチ的なももの組み合わせみたいなものしかイメージないんだけど、
イベント連携しながら運用するようなパターンもよくあるの? >>237
図書館のサーバーに大してかなり気を使ってスクレイピングしたにも関わらず、電子計算機損壊になった例もある
どこまでokとかは言えない >>235
いや、普通に言うけどね。
C、C++、Java、VBAとかって。
それに、VBAを使うべきじゃないと言う時もある。
でも、ここで他言語のことを言う奴ってVBAの方が完全に良い場合に他のが良いとか言う無能が多いからなあ。 >>240
シートにデータ張るくらいの簡単なものなら インタフェースできてるからVBAが一番楽。 >>243
遊びでやってるならどうぞw
事務でも仕事なら取るべきだ。 許可は取らないけおd、API作ってくれとは連絡するかな VBAのエディターにはVSみたく行番号を表示する機能は標準では備わっていないのでしょうか? >>247
サンクス
VSと比べていろいろと中途半端ですね。
C#でこれまではずっと開発してましたが
Excel台帳ベースのシステムを組む事になったので
今回は、VBAで開発してます。
大体のことはVBAでできるけど、本格的な開発はやはりVS使わないとダメですね。 >>249
ワークシートなどを含むExcelオブジェクトはVSからでも普通に読み書き操作できるぞ
使っていいんならVSで開発すればいい >>250
ちょっとした文字列操作とかスクレイピングだから
VBAの方が楽かな〜と思って今回数年ぶりにVBAいじってます。 ちょっとした文字列操作とスクレイピングってVBAが一番苦手なやつでは ・スクレイピングは深夜にcron+phpで行ってサーバー上に保存
・vbaはその結果を取得
の二段構えが楽と思うけどな
文字列操作はどんな言語でもなんとかなるやろ
EXCELに入れるとunicode周りが死ぬけど cron使える環境ならphpなんて大層なもん入れなくてもcurlとかwgetでよくね どうなんだろうな
俺はもうスクレイピングなんかに多言語勉強したくないから、cronからphp叩いてどうのこうのしている
vbaはもう完全に後始末で、骨拾うだけ スクレイピングの主役は通信じゃない
winsockでもwgetでもbitsadminでも良いから取ってきたファイルをどうするか教えてくれよ >>253
ログインしないと見えないデータなんだよ
なのでクライアントでの取得必須 んなもん2段階認証とかじゃなければセッションなりクッキー投げるだけやん
取ってきたファイルはパーサーに食わせるなり正規表現でゴリゴリするなりだけど
そのどちらもVBAはとても苦手な分野やで 認証とかhtmlパーサとかJSエンジンとか
大抵はその辺をIE操作で賄うモノだと思ってたけど自分の認識が違ったらしい >>258
あんちゃん詳しいな〜
そーいうのやったことが無い。
試しにやってみようかな。 basic認証なんかは瞬殺だけど、
セッションとかクッキーになると、諸々含めてphpにした方が良い。というかchrome拡張が一番楽
httpsやらUA絡みだすと小生無理!ってなる。 vbaはwebに向いてないってことだけは覚えておいて欲しい
それだけなんだ ログインするなら、Ruby, Selenium WebDriver で、ブラウザを自動操作すべき。
iMacros でも良いけどさ
>>222
に書いてある通り >>261
年齢を重ねると新しい技術を学ぶのが億劫になるんじゃよ Excelマクロについて全くの無知でみなさんにお伺いしたいのですが、マクロで画像のような操作は可能でしょうか?会社の書類作成事務の効率を上げたく…
スレ違いでしたらすみません。https://i.imgur.com/xF5hatf.jpg >>265
VLOOKUPで余裕でしょ
マクロなんか要らん 今更ではあるけれど、C#やVB.netで開発しなくても
だいたいVBAでできるな〜
結局データの保存先がDBなどではなく
Excelとかだから最初からVBAで開発しておけばよかったと若干公開 みんながExcelを起動しているとき、
俺の画面だけJexcelだったら格好いいのに・・・。 >>265
大体こういうこととは思うが
https://dotup.org/uploda/dotup.org1806820.zip.html
もう少し詳しく伝えてもらわんとなんここっちゃわからん
とりあえずvbaは不要で、
vlookup、indek+matchの合わせ技になる >>267
>>270
ご親切にありがとうございます!やってみます! >>244
YahooやGoogleなどの検索エンジンはいちいち許可とってるのか? >>239
もし岡崎図書館のことを言ってるんなら、一度は逮捕されたけど結果は不起訴で、逆にシステム管理者側が謝罪までしてるんだけど >>245
>>272
コミュニケーションが取れない人なのか、知ったかなのか、それとも趣味でやってるだけなのか知らないが、そもそも図書館事件と言えば岡崎市の事件のことだろ。
本当に事件のこと知ってるのか?
図書館側のシステムに問題があったとしても、了解を求めることなくこういうことをするのが問題なのはマナー上当然のことだろうに。
そもそも、ここで言われてるのが岡崎市の事件と全く同じようにアクセスするわけでないのは当然だから、大量アクセスを否定した話にすらなっていない。
こちらの行為について迷惑だと判定するのが向こう側なのに、こっちの勝手な判断に従って了解を求めることすらしないじゃ趣味といわれても仕方ない。
>>239に対して許可を取るのが普通という発言を受けて「API作ってくれ」と連絡するってのが、全く意味が分からん。
コミュニケーションって分かる?
相手にこちらが何をしたいかも伝えずにAPIの話をするんかねw >>273
有名な事件だから顛末はすべて分かってるけど、これ以降、連絡するのはマナー上当然という流れになってると思うが。 >>275
お前、何いってんの? 図書館の問題なんか関係ないわ。そんな話はしていない
びっくりしたわ
コミュニケーションが取れない人ってお前自身じゃね コミニュケーションつかマウント取りたいだけ。
マウント取るため勝手に論点ずらし、話題変更。 >>277
それまでのやり取り見てから言えよ。
お前は>244に対して発言してるんだろ。
>>244の話の起点は>>239なんだよ。
そんなことも分からないからコミュニケーションが取れないと言われるわけだw >>277
それと、誤解を与えたと思うが、そもそもの知ったかとかコミュニケーションとかは>>245に対して言ってたつもり。
たまたま、タイミング良く>>272の発言があったから、一緒にアンカーつけたけどな。 >>275は
>>237、>>239、>>241ときて>>245の意味が全く分からなくての発言だ。
岡崎事件を挙げて、どこまでokとかは言えないと言っておきながら無断でスクレイピングすると言ってる。
全く意味が分からねえ。 スクレイピングで許可がいるってどういう時だ?
そもそもスクレイピングってブラウザの手動操作を経由しないGetリクエストが全部該当しちゃうの? 頻度の問題なんだよ
秒間一回のリクエストで逝くゴミサイトだろうが、それで迷惑がかかるなら業務妨害になる可能性がある
検索エンジンは特定のサイトに頻繁にポーリングかけたりはしない マナーとかいう自分ルールでマウント取ってるだけだから無視でいいよ >>283
ループコードでブラクラといってくる
無能警察(兵庫県警)がいるからそこだけ問題 >>284
スクレイピングで検索しても頻度のことは言っておらずループで回すこととも結びつかない解説が多いんだよね。
だから「ボタン押す都度なんかやる」ってだけのプログラムも対象になりうるんじゃないかと心配になる。 なんか左の番号に抜けがたくさんあるんだが、発狂でもしてんの?w そういうあぼん報告が一番ダサいし荒らしと同程度に邪魔 無能な警察が存在するのは事実なんだから、その対策もエンジニアは考えておくべきだな
対策せずに逮捕されても自業自得 >>285
>>237で始まったマナーの話なのに自分ルールにされるのは如何なものか。 >>294
ん、俺を無視しろと言ったんじゃ無いのか? 図書館の奴は
ddosでも無いのに拘留期間が長かったのが問題だと自分は思ったな当時 IT分野に関しては日本はシナにも劣る土人国。
winny潰しも酷かったな。 コインヘイブの件しかり日本警察のIT力は
世界最下位 スクレイピングは、1日1回までなら大丈夫。
検索エンジンは、そうしてる
相手のrobot.txt に書いてある
何回もリロードすれば、手動でも、営業妨害で逮捕される。
だからテストでも、他人のサイトには、絶対にアクセスしない
とにかく、相手の業務を妨害したら、逮捕されるだけ >>299
適当すぎる
図書館の件は何も分かって無い警察の見せしめ逮捕だよ
罪状も計算既損化い >>300
兵庫県警がそもそもバカだから
それが問題
1日1回とか遠慮しすぎ スクレイピングは違法?3つの法律問題と対応策を弁護士が5分で解説
https://topcourt-law.com/internet_security/scraping-illegal
以下、抜粋
3.スクレイピングと著作権
コンピュータによって情報を解析することが目的である場合には、例外的に著作権者の同意を得ることなく、
スクレイピングによって取得した他社情報などを記録媒体に記録したり翻案することができます
4.スクレイピングと利用規約
ユーザーが利用規約(スクレイピングを禁止する内容が含まれているもの)に同意していることが必要になります。
ユーザーが利用規約に同意することにより、ユーザーは「スクレイピングをしない」義務を負うことになる
5.スクレイピングとサーバ負荷
偽計業務妨害罪が成立するかどうかは、スクレイピング行為によって相手方の「業務を妨害したか否か」が
判断基準になるところ、スクレイピングによって何回アクセスしたら違法で、反対に何回までなら合法です、
といった基準はありません
ただ、Librahack事件は一つの目安になると思われます。この事件では、
逮捕された者が1秒に1回の頻度で1日2000回のスクレイピングを試みた点について、
サーバに負荷をかけたとまではいえないとの見方もあります。
この判断は、まだ合法とのお墨付きを与えるものではありませんが、仮にスクレイピングをするとしても
「自然検索の範囲内」で対応するのがベターかもしれません させたくない側が、されない・させないための対応・対策に参考になります 岡崎図書館の時に、IT業界の識者が集まって講演会をやったんだけど、
専門用語を使わずに素人にも理解できるように説明する能力がプログラマーにも求められる、みたいな意見も出てた
そうしないと自衛もできない >>303
そのページ見たけど「スクレイピング」も「クローラ」も曖昧にしか定義されてないね。
ループでぐるぐる回してるかどうかなんて観点は全くなさそうだ。
HTTPリクエストはプログラムだけどブラウザはプログラムじゃないと思ってるんだろう。 単に合法かどうかばかり論じてるけど、相手に連絡とって、こういうことをしたいって言ってれば捕まることも無かったろうさ。
無断にやったのが問題なんだ。 >>306
> ループでぐるぐる回してるかどうかなんて観点は全くなさそうだ。
サーバーにはそんな観点は関係ないから当たり前
人海戦術でも業務に妨害を与えることは可能 >>307
だからそれを突き詰めたらWebページにアクセスする前に許可取れってことになる >>308
ならブラウザだって同じ事じゃないか?
スクレイピングだけ取り立てて許可だ規制だってなんの恨みでもあるのか まとめサイトは取り締まらない無能な兵庫県警
そここそ5chコピーサイトなんて、スクレイピングしまくりだろ >>310
まあ、頑張れw
>>312
だからスクレイピングだけ云々はおかしいって話をしてるんだが… >>314
どうも君のスタンスがよくわからんな
スクレイピングもブラウザもサーバ側から見ると機能に違いはない。
だからスクレイピングだけ云々はおかしい。
ただしスクレイピングは一人でも超高頻度のクエリー投げることができて、そういう運用については制約が必要だ。
よってスクレイピングについての記事は頻度についての言及をすべきだろう。
↑
俺のスタンスはざっとこんなもんだが違うのか? >>315
> ただしスクレイピングは一人でも超高頻度のクエリー投げることができて、そういう運用については制約が必要だ。
一人かどうかとかも関係ない
1,000,000人集めて人手なら業務妨害に当たらないとか無いだろ >>316
同じなのは業務妨害になるという結果だけだ。
人手でも業務妨害になるという主張をするなら「多人数集めて一斉にやったら」という但し書きが必要だろ?
スクレイピングについても「高頻度にやったら」という但し書きが必要なのは当然だ。
そういう条件を付けないと、リテラシーの低いやつがルールを機械的に適用するぞ。 図書館の話は迷惑行為であるが刑事犯罪になんかならないよ
業務妨害とか言ってる奴はそれを笠に着て自分が然も凄いが如く言いたいだけの奴 >>317
> 人手でも業務妨害になるという主張をするなら「多人数集めて一斉にやったら」という但し書きが必要だろ?
> スクレイピングについても「高頻度にやったら」という但し書きが必要なのは当然だ。
プログラマーに向いてないね
そんな但書は要らん
サーバーに対するリクエスト数を制限するだけでいい >>320
>>303にあるような記事は一般人向けのものであり、一般人はそれを読んでスクレイピングの
定義を知った気になってしまうのだ。 リクエストだけの問題じゃない
WEB鯖の場合、セッションを確保したままにするとアクセスしなくてもリソースをどんどん食い潰してくという厄介な仕様があってだな >>324
そんなものはサーバー側の設定でなんとでもなるだろ この前はDBだかSQLだかの話を何日も延々と
今度はスクレイピングの話を延々と
別スレでもたててそこでやれよ 技術的な知識も現実的な場数も足りてないから頓珍漢な議論しか出来ず
しかも煽り会っているから永遠に終わらないのだ >>326
むしろレンサバだと提供者がそういう設定してるだろ >>331
ところで何のために煽ってるの?何か得するかいい気分になるの?
そこまで生産性の無い事をする気持ちが良く分からない > ところで何のために煽ってるの?何か得するかいい気分になるの?
> そこまで生産性の無い事をする気持ちが良く分からない
>>329みたいなこと書く奴が何を言ってるんだよ… 捕まるとかそういう話に終始してるのがアホらしい。
トラブルになった時点で負けだろう。
スクレイピングでのトラブルは探せば色々見つかるだろう。
時間割アプリの問題とかLinkedInとか。
殆どがコンタクトを取っていれば防げた問題。
もっとも中には許可されないことが分かってて確信犯的に無断でする場合もあるが。 【速報】金券500円分タダでもらえる
https://pbs.twimg.com/media/D2y3uRaUkAAt6d9.jpg
@タイムバンクをインストール
iOS: https://itunes.apple.com/jp/app/%E3%82%BF%E3%82%A4%E3%83%A0%E3%83%90%E3%83%B3%E3%82%AF/id1253351424?mt=8
Android: https://play.google.com/store/apps/details?id=jp.timebank
A会員登録
Bマイページへ移動する。
C招待コード→招待コードを入力する [RirzTu]
コードを入力した方に600円もらえます
今なら更に500円ギフト券を貰った残高からただで買えます。
貰ったギフティプレモはAmazonギフト券(チャージタイプ)に交換できます(電子マネー払いにて)
数分で出来るので是非ご利用下さい >>334
関係ないのに永遠に続けるバカっているよな >>336
これを自分の招待コードに差し替えて拡散すれば勝手にポイントガッポガッポやで Cells(1, 1).Value = "〒111-222" & vbCrLf & "東京都新宿区XXXマンション" & vbCrLf & "西村ひろぽん"
のコードでセルに改行コード crlf 入りの文字列を入力し
Excelのセルの値をメモ帳に張り付けるとこんな感じになってました。
〒111-222
東京都新宿区XXXマンション
西村ひろぽん
crが余計に1つ多くvbcrlfの前に入ってしまいます。
コードでは入れていないのですが、なぜでしょうか?何か対策はありますか? >>340
再現しなかった
vbcrが2つ入ってたらそうなるけど、ハテ VBAなんて全くできないんだけど
エンジニアってこれよりずっと難しいことやってるんでしょ? >>343
このスレは基本的に一般事務・経理・営業が、現在のルーチンを補助するためのツール作成がメイン
エンジニアはEXCEL自体を作るようなイメージ
でもvbaエンジニアもいたりするし、こういうツールを作る事を生業にしている業者もある >>340
Cells(1, 1).Value = "〒111-222" & vbLf & "東京都新宿区XXXマンション" & vbLf & "西村ひろぽん"
セル内改行はLFのみだよ >>341
はい、確かにVBAで挿入する時には
それでうまくいきました。
セルの値をコピーすると
文字列lf →文字列crlf に置き換わってました。
なぜだろう。
>>342
いや、再現しますよ。
>>345
サンクス。
とりあえずVBAではおまじないと覚えておきます。 素直に
Cells(1, 1).Value = "〒111-222"
Cells(2, 1).Value = "東京都新宿区XXXマンション"
Cells(3, 1).Value = "西村ひろぽん"
じゃダメだったのかい! >>347
試してみたら
CR → CRLF
LF → CRLF
となった。
つまりCRもLFも別個にCRLFに変換されてしまうようだ。 >>349
それOS依存だろ
OSに合わせて変換だと思った お母さんからvbNewLineを使いなさいって言われてるから初心者の俺も使ってるわ crとlfを意識して使い分けたいから、newlineはあえて使わないな android版はVBA使えないしMacなんか使わないからvbCrLfで困らない 本日の戦い
vbNewLineでよくね派
vs
vbNewLine使うと余計に混乱してしまう派 >>352
vbNewLineてテキストの改行だろう
セル内改行とは違うじゃんか >>355
初心者を扱うの大変なんだよな
だから混乱が起きた そもそも何でCRとLF、2つも作ったんだろ。
見えないのもうざいから、ワードみたいに
|
|
←┘
こういうの入れとけよな。 タイプライターとかMulticsとかの時代にさかのぼる負の遺産だからね >>359
> そもそも何でCRとLF、2つも作ったんだろ。
その話をするとタイプライターの時代まで遡るからとりあえずそう言うもんだと覚えておけばいいよ >>340
Excelは何も置き換えてない
Excelがセル内改行として扱うのはLFだけ
CRLFを突っ込んでもCR部分はただの見えない文字として存在してるだけで改行しない
セルの文字列をコピペした時CRLFのうちLFがCRLFに置き換わってCR CRLF状態になる(Windowsの場合。他は知らん)
それをCRを改行として扱うテキストエディタとかに貼ると両方改行して6行になる
俺の使ってるメモ帳はCRとLFは改行として扱われず見えない文字になるが、バージョンによるのか 続き
ここに、こんなの書いてある
秀丸エディタでは、改行が chr[10]でもchar[13]+char[10]でも自動で判定して表示するようです。
一方でWindows標準のメモ帳では改行はchar[13]+char[10]固定であるため、linux などchr[13]を改行とした
テキストファイルを表示すると改行せずに表示されます。 つまり、メモ帳は、CrLfセットでないとダメだって >>367
というかWindows標準がCRLF
秀丸やサクラエディタが融通を効かせてくれてるだけ webの文字コードは更にキツイ
最近大分マシになったけど 秀丸エディタとか今でも使ってる人なんているの?
久しぶりに名前を聞いた TeraPad でも、改行コードを指定できる
ただし、TeraPadは、新しめの文字が?? になってしまう
中国の地名の「深圳」とか MacはCr、Unix/LinuxはLf、WinはCrLf >>359
元はテレタイプのコードだからね
テレタイプではCRでカーソルを行頭に復帰
LFでカーソルを行送りとなり合わせて改行になる
CRだけではカーソルが行頭に復帰するだけで行は変わらない
LFだけではカーソルが次の行に送られるだけで桁位置は変わらない
こういう仕様だった 文字コードといえばワード・パワポもエクセル連携の観点では曲者
段落区切りの改行がCR、段落内改行がVTになるからな
単純な文字列貼付でいけると思ってると見事にハマる Windowsは、CrLfセットで改行なのに、>>340みたいになるっておかしいだろ >>379
CrLfだからそうなる
Excelの改行とWindows標準改行の扱いの違い >>359
キャリッジリターン、ラインフィードの2つの単語を覚えておこう。
どういう意味かは自分で調べてね。 キャリッジ・リターン 復帰
ライン・フィード 改行
CR+LF 復改 よくこんな話題で何日も盛り上がれるな
マウント取るにしても内容の程度が低すぎるでしょ 別の話題
VBAのエディタしょぼくね?
VSの方がよっぽど開発効率がいい >>391
そりゃ作られたの20年前でレガシーもいいとこだからな
だいぶ昔からdeprecatedフェーズだからどれだけ要望があろうと改善されることもない >>392
Exce2010の時と比べても
VBAエディタな〜〜んも機能改善されてねー >>393
そもそもレガシーでありMS的には使ってほしくない機能なんだから、
不便すぎてユーザーが減っていくことがまさに「改善」なんだよ
気に入らないのはわかるが古いものを新しくしていくっていうのはそういうもの それでも利益的には無視できないだろう
もし切るならとっくに切ってる
別に移行するにも何にどう移行するのか?
lotusも無くなったからそんなに恐れる必要も無いけど
free系officeも敵ではないだろうし
狙いはcloud系か何かなんだろうけど
開発の人はどうにでもなるだろうけど
excelvbaは素人系だからなぁ 古いExcelを令和対応させるVBA作ってください!! If Cells(1 ,1) > 43585 Then wstrGengo = "令和" VBAで簡単な入金管理作った
経験あるんだけど
VBAでちょこちょこ
するだけでいい仕事って就けるもん? VBA 求人 東京
で調べたら月給50万とか80万とか
出てくるけどほんまなん? >>403
本当だけど
それガッツリとしたVBAエンジニアだよ
多分gitかTortoiseSVN辺り使うはず
【フリーランス】Excel/Access-VBA | 開発知見がある方!システムサポート業務
仕事内容
基幹システム/部門個別システム支援(運用、問合せ、J-SOX対応等)
部門内インフラ管理支援、エンドユーザIT支援、業務用ツール開発
給与 >>403
別にVBAでも普通ある。
けど、面接して採用される奴は他にもスキルがあるか、それなりに出来る奴だろうな。
gitや、SVNについては必ずしもってところだろう。
もっとも、VBAのコードを管理するためにgitやSVN用のツールをVBAで組む程度はやれる或いはやってるだろう。 1989/1/7 → 昭和64年1月7日
1989/1/8 → 平成1年1月8日
2099/1/1 → 平成111年1月1日
3000/1/1 → 平成1012年1月1日
試してみたらこうなった。
令和がまだ入ってないのは分かるが、
1000年後も普通に平成だとは思わなかったわ。 >>406
どうせならOSとEXCELのバージョンかけや >>407
どちらか片方ならわかるが、何で両方?
組み合わせで変わるもんじゃないだろう。 >>409
MSはそんな思い込みが通用するほど甘い相手じゃない こういう思い込みをする奴が新年号対応に莫大な人工が掛かる糞システムを作るのである >>411
シリアル値は1900年から
明治までしか対応できない Windows 10・WSL・Ubuntu 16.04 の設定ファイルでは、
+:2:1990/01/01:+*:平成:%EC%Ey年
+:1:1989/01/08:1989/12/31:平成:%EC元年
+:2:1927/01/01:1989/01/07:昭和:%EC%Ey年
+:1:1926/12/25:1926/12/31:昭和:%EC元年
+:2:1913/01/01:1926/12/24:大正:%EC%Ey年
+:2:1912/07/30:1912/12/31:大正:%EC元年
+:6:1873/01/01:1912/07/29:明治:%EC%Ey年
+:1:0001/01/01:1872/12/31:西暦:%EC%Ey年
+:1:-0001/12/31:-*:紀元前:%EC%Ey年 明治6年(1873)から正しい
それ以前は太陰太陽暦(旧暦)だから、西暦とは異なるから、日本の暦は使えない Excel2013以降ならこれで行けると思う
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Calendars\Japanese\Eras]
"2019 05 01"="令和_令_Reiwa_R" >>416
これは、Office各バージョンで共通で使えるしExcel・Word等でも使えるね
他のアプリでも使えるんじゃない >>416
これは、Windowsのカレンダーに対して日本用の設定を追加してるだけだから
Windowsの標準コントロールのカレンダーを使用して正しくコーディングしていれば
この設定をするだけで対応できるだろ
これを「令和登録.reg」のファイルにして管理者モードで実行するだけだね
--下記--
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Calendars\Japanese\Eras]
"2019 05 01"="令和_令_Reiwa_R" VBAでfor nextで回しているときにworksheetfunction.vlookupを使っているのですが
値が存在しないときにエラーが出て止まってしまいます。
こんなとき存在しない時は処理を回避するにはどうしたらいいですか?
On error resume nextにすると、エラーのときにも処理をしてしまいます。 >>423
On error resume next はエラーを無視して続ける
On error go to XXXX でえあらーが出たらそっち行け >>425
vlookupで見つかったらA処理、見つからなかったらB処理、をそれぞれさせる場合
どうするの? そっち行けのあと、ちゃんとfor nextループに復帰しないといけない。 >>427
基本的にgo toの 行先はループ内だな
で、正常の場合はそのルーチン内で飛ばす、また共通で使用できる部分はそのまま使う
それぞれ複雑になる場合は、外部呼出しで処理 簡易だけどこんな風でよろしいか。
On Error Resume Next
For i=0 To lngRW
varValue=WorksheetFunction.Vlookup(〜)
If Err.Number=(見つからない) Then
'B処理
Err.Clear
ElseIf Err.Number=0 Then
'A処理
Else
Debug.Print "想定外:" & vbCrLf & Err.Description
EndIf
Next i
On Error Goto 0 こうじゃないの
On Error Goto err
For i=0 To lngRW
varValue=WorksheetFunction.Vlookup(〜)
'処理
err:
Next i >>431
一般的に書くと以下だけど、処理は複雑なら外部ファンクションで
On Error Goto err
For i=0 To lngRW
varValue=WorksheetFunction.Vlookup(〜)
[正常処理]
Goto 共通
err:
[err処理]
共通:
[共通の処理]
Next i >>432
あぁそうか、その形だスマン
エラー番号を見たり外したりで分岐させる方法が合ったと思うけど、
あれってどうなのかな Dim Rc As Variant
For I = 1 To 10
Rc = Application.VLookup(〜)
If IsError(Rc) Then
'B処理
Debug.Print "Err"
Else
'A処理
Debug.Print Rc
End If
Next このエラーって何が返ってきてるの?
Rc = Application.VLookup(1, Range("a1:b2"), 2, 0)
Rcには「エラー2042」
variant/error
となっている
エラーオブジェクト? Debug.Print WorksheetFunction.IsNA(Rc) >>437
?
>>438
errorってオブジェクト?
なんでsetせずに代入できるんだ? on error使うのあまり良くない
vlookupの前にcountやfindで存在チェックするのをおすすめするよ
裏技的な方法だとAppllication.Vlooiup >>439
宣言済みのグローバルオブジェクトだから なんでマクロを表から実行する機能がボタンしかないんですか!
ボタンだけ画像で気持ち悪い >>445
セルのクリックで選択が変わったイベントを取るとか
他にもできるけど、単に知らないだけだろ >>442
悪い奴じゃなさそうだが、残念だったな
所詮、何でも道具なんだから目的に合わせて
臨機応変に対応しないとな >>445
そういえば、聞き漏らしたけど
>ボタンだけ画像で気持ち悪い
これ意味が分からない
例えば表に更新ボタンがあるのが気持ち悪いか? >>445
セル内に任意の Sub を走らせるコマンドを書きたいということかな? ボタンを透明にして、セルをクリックしたように見せかければいい >>451
例えば以下でいい、透明なボタンなんてメンテナンスしにくい
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$A$1" Then
「セルA1を選択された時の処理」
End If
End Sub >>445
何を言ってるんだ?
標準モジュールに以下を書いて、
セル内に=FuncNibai(2)と入れてみろ。
Public Function FuncNibai(lngNum As Long) As Long
FuncNibai=2*lngNum
End Function >>454
それでは基本的にシートに対する副作用のない動作しかできないよ >>455
ボタンから実行していないだろ。
表を変えたいというなら、入力したセルと無関係のセルの値を変更する処理も書ける。
そんなことする奴はおらんだろうが。
そもそも>>455がどうしたいのかが無いから、どうにもならん。
個人的には、リボンから実行するように作ることが多いけど。 >>456
基本的に、新規関数の定義だから
それ以外のことをするのは、混乱の元だよね イベントでマクロ起動できるようになりました。ありがとうございます!
ハイパーリンクのイベント使いました。
でも
イベントはシート単位でマクロ側で呼び出し元特定する仕組みで
間違えるの怖いしシート全体でマクロ走るし
ハイパーリンクは自分のセル位置変わっちゃうし
余計気持ち悪くなりました
ハイパーリンクに直接マクロ指定したりとか
もっとスパッと間違えない仕組みがないものでしょうか >>459
何がしたいのかもう少し具体的に言ってくれれば誰かがマクロ書くと思う
>シート全体でマクロ走るし
これも以下のような形で、特定のセルだけマクロが走るように制御することも可能
Private Sub Worksheet_Change(ByVal Target As Range)
行 = Target.Row
列 = Target.Column
If 行 < 4 And 行 > 2 And 列 = 2 Then
'処理
End If
End Sub >>459
そんなの選択したセルがハイパーリンクか判断すればいいだけ
要求を書かないから特定のセルで動くマクロを提示しただけ
その前に
>ボタンだけ画像で気持ち悪い
これ意味が分からない ボタンはクリックしただけで手が滑って意図せずずれちゃったり
配置した後ろにカーソルが隠れちゃったりするから
なんか異物感があります >>463
そうか、理由はよくわからんがハイパーリンク化は
selection.hyperlinks.count
または
Range.hyperlinks.count
で取れるんでないの試してない >>465
俺もこのほうが良いと思う確認してないけど まあ、どうやっても出来ないと書き込むんじゃなくて
何をどうしたいけど方法を聞けよ、できるだけ自分の求めることを
詳しく スライサーのボタンクリックをイベントとしてマクロを実行させたいんだけど、
ググっても探し方が悪いのか、「スライサーを作成するVBA」ばかりになってしまう。
どこか事例を解説しているWebページを紹介してもらえませんか? ピボットテーブルのスライサーの事じゃないの?
別にスレチでもなんでもないと思うけど >>471
スライサーにイベントハンドルかます事はできないっぽい
以下2つのどっちかになると思う
Private Sub Worksheet_PivotTableChangeSync(ByVal Target As PivotTable)
Debug.Print Cells(4, 1)
End Sub
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
Debug.Print Cells(4, 1)
End Sub
https://docs.microsoft.com/ja-jp/office/vba/api/excel.worksheet.pivottablechangesync
https://docs.microsoft.com/ja-jp/office/vba/api/excel.worksheet.pivottableupdate >>472
ありがとうございます。
ピボットテーブル本体まで戻れば
変更イベントハンドルがあるのですね。
この方向でやってみます。 >>456
えっ?
副作用のある操作もできるのか?? >>459
特定のセルクリックしたらマクロ実行とか いろいろやってみましたが
表をいじって位置が変わっちゃうと動かなくなったり、
変なリンクできたりするので
ボタンでやります…
ボタンをセルに合わせて自動調整されるようにプロパティ設定したら
ちょっと気持ちがおちつきました
ありがとうございます ヒポリットテーブルってややこしい。
理解するこつあはありますか? >>480
ピボットテーブルな
繰り返し使うしか無い
後は元データもちゃんとしたものじゃないとピボットがうまく機能しない >>480
色々できて楽しいと思いながら
新しい使い方を検索しながら使いな >>454の関数で値を計算して返すついでにどこか別のセルの値を設定しようと
Range("A1") = 1
としたって通らないだろ
そんな制約があったんじゃ>>445に対する答えにはならんね マイクに話しかけたら実行されるようにすりゃいいんじゃないの? >>480
いろいろやってみると面白いし、
元データをテーブルにして組み合わせると、
計算速度も速いような?
融通が利かない部分もあるけど。
4〜3月の月次推移グラフで、
ピボットテーブルには年度合計を出せるのに、
この合計もグラフに反映させる方法あるのか、ないのか・・・
日時時間フィルターのタイムラインは、使い勝手がイマイチ、
とか。
あと、縦横クロス集計のピボットテーブルを
一発でリスト表(3Dマップに使える)に変換する隠れ機能があったり。 シート内にマクロを設定した
ボタンを1つと、複数の画像があります。
ボタンをクリックしたら以下コードを実行し画像の一括削除を行っています。
しかし、問題があってボタンまで消失してしまいます。
そこでボタンの場合には削除はしない
という風に制御を入れたいのですが、ボタンの名称はどうやって調べればよいでしょうか?
'シート無いの画像をすべて削除する。
For Each img In ActiveSheet.Shapes
img.Delete
Next >>487
ボタンに特定の名前を付けてそれをハードコーディングすりゃいいと思うがそれじゃ不満なのかな? >>487
img.Nameで名前を調べることができます
If img.Name <> "ボタンの名称" Then
img.Delete
End If
みたいに書けば、特定の画像の消去をスキップできます >>489
名前なんて変化するのでコーディングするのはない
プロパティで有るだろ、調べてないが常識的に 削除対象の画像を予めShapeRangeにまとめるなり、削除対象の画像の名前をシートに書き出すなりしてボタンマクロで一括削除させる設計にする方が検索効率や保守効率が良いと思う
ボタン名やコントロール名でハードコーディングするのは下策
ボタンの数やコントロールの種類が増えたときにいちいち手直しする必要が出てくる 動的にコントロールを追加するプログラムを作ってないの?
毎回追加で書いてるの?
それは面倒で下衆だわ >動的にコントロールを追加するプログラム
昔作ったわ
EXCELでこの設計は止めたほうが良い。エラー頻発する >>487
For Each work in Shapes
If work.type = 消したいオブジェクトタイプ Then 消す
Next >>474
>>478
>>483
スマンな。
>>456の時点では勘違いしてた。
でも、たぶん出来るだろうなと思ってやってみたら出来るな。
それどころか入力セルに対しても出来る。 >>487は差のマクロが登録されたあるひとつのボタンだけを対象に「消したくない」と言っているように思えるのだが >>491
別にボタン名とかコントロール名でやっても良いと思うよ。
増えようが、名前付けル−ルがデタラメなんてこと無いだろう。
画像ならimgが先頭に付くとか、ボタンならbtnが付くとか、普通そうしてるはずだろ。
>>492
それは、この質問だけ見ただけじゃ何とも言えない。
消えなければ追加する等という作業は最初から必要無い。
動的に追加するような状況とも思えないな。
>>493
それはその組み方が良くないだけだろ。 まあ、その時目の前の問題だけクリアーするのは筋が悪い
目的を汎用化し使い易くメンテナンスし易いように組むな普通 VBAスレで何言ってんの
そういうことを言い出すとVBAなんか使うなという結論にしかならんよ >>488
ボタンに名前をつけるにはどうすればいいんですか? >>497
名前比較で実現出来るかどうかという実現可能性の話をしてるわけではない
あくまで効率性の話をしてるんだが
特定のボタンを消さないようにするという目的だけのためにShapesコレクションをなめてアイテムのNameプロパティを逐一調べるという処理は筋が悪い
ワークシート上に存在する画像や図形、テキストボックス、コントロール等の数だけ名前比較することになるからな
削除対象になる画像をワークシートに追加するタイミングでShapeRangeコレクションに入れ、ボタン押下でDeleteメソッドで一括削除というやり方の方が絶対に速い 一つも目的だけの為に作り込むのが良いのか汎用性を持たせて使い回せるようにした方が良いのかって事で俺は汎用性がある方が長持ちして良いと思う派 >>502
あのさあ、わざわざそんなことするほどの処理かね?
俺だったら名前ではやらんと思うけど、こんなのは何でも良い話だろ。
普通に考えて、ボタン1つに後は画像だけなんじゃね―の?
正直、こんなので効率も糞も無いと思うね。 マクロに「Sub なんちゃら」って名前を付けるんだから、それを呼び出すボタンに固有の名前を付けるのは全く自然だ >>505
コレクションの総なめや文字列比較での処理分岐は処理速度の問題に直結するだろ
それにマクロで処理しなければならないくらい画像を張り付けてあるシートに対する操作なら尚更処理が重くなる可能性が高い
数百個くらい画像が貼ってあるかもしれないし
割と現実的な設計の話だと思うんだが、まぁ君が効率も糞もないと思うなら仕方ない >>502
> 削除対象になる画像をワークシートに追加するタイミングでShapeRangeコレクションに入れ
とか言うけど、その画像がプログラムで追加されるとは限らんよ
人が適当に描画した図形を単にクリアするボタンかも知れんし >>509
それならShapes.SelectallでShapeRangeコレクションに突っ込んで、マクロ呼び出し用のボタンだけShapeRangeから除外して一括削除だね
とにかくShapesの中でループを回す必要がない >>507
それは数百個貼るような状況の場合の話。
そういう場合なら、その時考える話だ。
例えば、それなりに組める奴ならScreenUpdatingなんかを使っても速度が速くなることは無いだろう。
俺の場合も当然そうだ。
だからと言って、普段そんなに速度を重視して組んでいる訳じゃ無い。
しかしだ、状況により速さが必要になったら当然それ用に変わるだろう。
いつも速度を重視して組んでいるならご苦労なこった。 >>510
> マクロ呼び出し用のボタンだけShapeRangeから除外して
どうやってやるつもり? オブジェクトを直接比較すれば済む話じゃね
なんでわざわざ.Name呼び出して文字列比較するのかわからん
オブジェクトの比較なら何千あっても大して遅くならんし
馬鹿ばっかかよ そもそもshaperangeコレクションにアイテムをremoveするメソッドがあれば済む話なのにな
やっぱVBAって糞だわ >>513
オブジェクトを直接比較の何を比較するんだよ
全てのオブジェクトは代入で使ってるもの以外
違うんだけど vbaは===がない上にisで比較できないパターンがあったはず
ユニークな名前で比較するやり方は正解 >>518
オブジェクトの参照を比較するに決まってんだろ素人か?
>>519
このユースケースで試してからほざけ >>519
名前なんて好きに変えられるだろ
そんなもんでユニークって言っても筋悪いって言われるんだよ >>520
素人でございます、具体的に提示してください Application.Caller と比較するのかな? >>524
これは、プロフェッショナルな>>520 様が明快なお答えを出してくれるので
黙っておけよ ObjPtr、ポインタ、参照渡しあたりでググれカス
煽りが下手すぎて説明する気にもならん >>487
Sub foo()
For Each img In ActiveSheet.Shapes
If img.Type <> 8 Then
img.Delete
End If
Next
End Sub
ここ数日見てなかったけど何やってるんだお前ら
プロパティ比較すればいいだけだろう、一体何日かかってるんだ
https://i.imgur.com/B5lcGn9.png
>>520
無能の頂天っすね >>526
具体的に提示できないのですか(笑)
必死でググったか(笑) >>528-529
俺から見ればお前ら両方雑魚やぞ >>530
>>494 で示されてることをかなり遅れてドヤ顔で書き込んだ奴がいるらしい
無能かな? >>530
ボタンはフォームコントロールとActiveXコントロールがあるけど
大丈夫か? 酒飲みながら茶化してるんですまんな >>531
終わってんのかよwww知るかwwwwじゃあ何の話してるんだよwwww ObjPtrだろうがなんだろうが「消しちゃいけないこのオブジェクト」を最初にどうやって指定するのかと 酒飲んでるから!本気じゃないから!
はいノーダメ!
思考がテンプレすぎる >>537
いやいや、具体的にかけない君が何言っても
笑い話 >>526
そこじゃないと思うぞw
比較するためにはボタンをオブジェクトとして取得しなきゃならん。
どうやって取得する?
>>527
俺もこのやり方をするだろうね。
でも名前でも全く問題無いと思うぞ。 >>537
結局、ググってもそんなコード内から泣いてるのか?
思いつきで、引きこもりのカスが書き込むよなこのスレも >>481
>>482
>>485
理解するコツを聞いているのに
いろいろ使ってみろ、みたいな回答はおかしくないか?
そんなこと承知の上で、理解するコツ、つまり心がけることやこんなことに注目したら理解がスイスイスーダラダッタスラスラスイスイスイっとできるかを聞いているのですが。 >>537
まあ、引きこもりのカスだからノーダメ・・全ダメ(笑) >>535
納得した
話題のループやグダグダ言う点は確かに酒の関の会話レベル
シラフで話してる奴はすげぇわ
>>539
thisかMe無いんだよな
callerでオブジェクトの取得するには、
名前を取得してforeachで名前と一致するオブジェクトを探して・・・
になると思う。超面倒くさい
>>542
ピボットに限らずEXCELは使わない機能が膨大にある
やりたいことを決めて、機能を使いこなすのが一番早い 質問者はShapesコレクションのFor Eachで消えるボタンだって言ってますよ >>542
>理解するコツ
それこそ、マニュアルを読めよまたはググれよ
例えば以下でもいいけど、他にもいっぱいある
https://www.becoolusers.com/excel/pivottable.html
だけど、頭の構造によって読んでも分かんない奴も多いからな
必要な時に使うんじゃわからんバカには無理って言ってるんだよ
普段から使えよ >>544
お前「caller」の意味わかって書いてる?
今回の場合に使うべきかもわからんのか? >>547
そう真剣になるなよ、本題についてはもうとっくに>>494で終わってる
で、
>ボタンをオブジェクトとして取得
これについて俺も知りたい
callerは他言語で言うthisみたいなもんで、通常はオブジェクトで飛んでくる。もうちょい正確に言うとオブジェクトの参照だな
これがオブジェクトで飛んでこないからめちゃくちゃ使い勝手が悪い
オブジェクトで取得する楽な方法あるの? お前らもしかしてわざと無能演じてんの?
だったらすげえや全然気づかなかった
set b = ActiveSeet.Shapes(Application.Caller)
For Each x in ActiveSeet.Shapes
If Not x Is b Then x.Delete
Next >>546
「いろいろ使ってみろ」とか「マニュアル読め」じゃないんだよ。
自分の言葉で説明してほしいということ。
具体的にはこれはデータベースを扱っているのだから
「フィールド」とか「グループ化」とか「集計」とかそういう具体的な用語を使ってだ。 VBAの特徴
内部抗争が酷いが外敵には一致団結して退治する >>550
それこそスレチだわ 初心者質問スレでも池よ >>549
確認してないが、それ複数ボタンで動くか?
フォームコントロールとActiveXコントロール有るけど >>542
他人に期待しすぎ。
それが出来たら今頃は、サイト立ち上げたり、本出したり、どこかで講師やっとるがな。
MSからも含め、VBAよりもピボットテーブルの情報は少ないし、
パーツ、パーツで区切れるVBAよりも、
広範囲で漠然とした「自分のやりたいこと」に使えるかどうか、
試行してみないとなんとも言えない。 >>554
押されたボタン以外は消える
ボタン1つと画像複数っていう質問なので削除ボタン以外のShapeを一括削除する仕様だと勝手に読み取った
少なくともNameで比較はありえねーよカスというサンプル こんなとき図星の決まり文句言わなきゃなんないのかぁ。
「 み ん な 理 解 で き て い な い 。」
理解できてる人なら竹を割ったようにスッキリと解説できるはず。
使いまくれとか、サイト見ろとか、試行してみないとなんとも言えないとか、全部言ってる人がピポットテーブルの本質を理解できていない決定的な証拠じゃないか。 >>557
当たってるよ。理解する必要ないからね
ピボットで作るデータの9割ぐらいは基本機能で瞬殺だから「使って覚えろ」としか言えない
複雑な事をしたければ作業列でパーっと作った方が早い、深く理解して得るものが少なすぎる
そもそも大事なことは目標の設定の仕方だから、このスレでどうこう言えない >>549
ShapeRangeコレクションにRemoveメソッドがない以上これが最適解だな foreach列挙中に対象コレクションから要素消すなよ VBAの演算子で一方だけ評価するのってありますか
i < 100 OR data[i] = x みたいに境界超えてないか先にチェックしたい i < 100 AND data[i] = x
逆でした >>562-563
> VBAの演算子で一方だけ評価するのってありますか
ない
If i < 100 Then If data(i) = x Then ...
ってやるしかない >>549
???
それって、固定の名前でやるのに比べてどの程度メリットが有るの?
固定の名前でやる方がまだましだと思うんだが。 >>560
文字列型プロパティの比較判定は重い処理だし、オブジェクト命名の運用に処理結果が依存してしまう
組み込みの列挙定数やオブジェクトポインタで比較判定した方が安全なのは事実 ・プログラムとして危険
vs
・vbaだしどうでも良くね
ファイッ >>566
ほう。
画像が100個あった場合、
文字列で比較と比べてどれくらい速くなるの?
まったくアホらしいと思うんだが。 ぶっちゃけ1000回比較しても体感できる差は無いけど
ならどちらがいいかは完全にセンスの問題になるわけで
オブジェクトを比較したい場面でオブジェクトそのものを比較できるのにわざわざ名前みながら比べるとか
頭の中どうなってるの >>569
>>571
別に、名前で比較したいわけじゃ無い。
俺は最初から、こんなのどれでやっても良いだろ派だ。
最初からパフォ−マンスに大きな差が出ないと思ってたし、センスの問題はかなり気にする方だが、今回の問題ではどれでやってもセンスが悪いとも思わない。 >>572
Is知らなかったからって取り繕わなくてもいいよ >>573
ハァ?
そんな初心者のわけねえだろ。
それに、
>>549って俺に言わせると名前でやってることになるんだがw
>>539で、「どうやって取得する?」って書いたのは、結局名前で取得することになるんじゃね?って意味で、名前でってのはApplication.Callerみたいに名前を取得したら結局同じじゃね?って意味なんだがw >>573
だから、それは対象のボタンオブジェクトが分かってる場合だろ
最初のお題と違ってボタンがいくつあるかも分からん条件で効率よくってはなし
俺はNameプロパティは変更出来るだろ
だからTypeプロパティだろって言っているだけ >>549はデバッグ時に疲れからかモジュールにカーソルをあわせてF5を押してしまう この中で一番重いのはShapes.Delete
それ以外をどんだけ工夫しても、逆にどんなタコなコーディングしても、体感できる差は出ないから 【12日まで】500円を貰える春のばらまきキャンペーン開催中です
@ スマホのApp Storeから「プリン(pring)」をインストールする
A 会員登録を済ませる
B 下図の通りに進む
https://pbs.twimg.com/media/D3pRtQiUwAQLMUR.jpg
C コードを登録 [5gAYSz]
これで五百円を貰えます
スマホでセブンATMからお金を下ろせたり(キャッシュカード不要)便利なアプリですのでよろしければご利用下さい >>576
>>488-489で解決してるからいいんじゃん
あとはよくあるチンケな知識でのマウント合戦だからスルーでオケ マウントやめたら色々な方法見れて役に立つんだけどな
何故一番になりたがるのだろう 小さい花や大きな花
ひとつとして同じものはないから
No1にならなくてもいい
もともと特別なonly one まあ、なんだな久しぶりに実際に使ってみた
ルーチンの仕様
1.フォームコントロールとActiveXコントロールで作成したShapeオブジェクトは全て残す
2.それ以外のShapeオブジェクトは全て消す
3.対象ShapeオブジェクトはActiveSheetのみ
3.フォームコントロールとActiveXコントロールどちらでも動作する
Public Sub コントロール以外のイメージ削除()
Dim shape1 As Shape
For Each shape1 In ActiveSheet.Shapes
'MsgBox (shape1.Name & ":" & shape1.Type) 'これは確認用です・・・コメントアウト
If shape1.Type <> msoOLEControlObject And shape1.Type <> msoFormControl Then
shape1.Delete
End If
Next
End Sub
実際に作成してみて感じたこと
Nameプロパティは全て違うものが振られていく・・追番が付く
フォームコント―ロールを使ってる人がやっぱいるんだ・・俺はActiveXコントロールしか
普段は使わない 追記しておくけど
目的・仕様をハッキリさせなきゃどんなルーチンも価値評価が難しいな
定義済み定数は定義名を使えよ普通に、ウォッチ式で確認できるから
>For Each x in ActiveSeet.Shapes
誤記スンナ ×ActiveSeet ○ActiveSheet >>480
俺がどうしてもexcel捨てられない理由が唯一
ピボットテーブルがあることなんだけどな
(その他のオフィス製品にも近ごろは
載っているようだが
VBAからの操作に慣れきってると
なかなか乗り換えきれない)
手放せなくなるまで使ってみてください 全部プロシージャで集計と報告系のマクロ書いてるけどグラフ出力とか一部は指定サイトの結果取得とか機能増えすぎて9モジュール1800行とかになってる
なんちゃってプログラマの俺にはもうお辛い… 動きゃいいよ
要件がリッチになりすぎたなら、それはもう技術的に何とかしようとするより外部のSaaSを導入することを検討すべき >>588
スマンが君の書いてる機能はマクロを使わずにできるものだが
>集計と報告系のマクロ書いてるけどグラフ出力とか一部は指定サイトの結果取得
集計と報告系・・・当然簡単だろ、場合によってはワードも利用する
>グラフ出力
ピボット使えよ、何が不足してるんだ?
>一部は指定サイトの結果取得
こんなのクエーリーの標準機で、起動時に読み込むとか、一定時間おきに読み込めよ
面白がってVBAにしないで、標準の機能で出来ることはExcel様に任せるよ そこまで作り込む能力があるなら素直にPS, Python, Ruby, node.jsあたり学んだほうが幸せになれるぞ SIerすらメンテできないようなものを作ると後々自分の首を締めることになるよ
ずっとお守りに時間を奪われて出世は閉ざされ、そのうちシステム刷新でクビよ ってか、Excelの標準機能も満足に使えないのに無理やりVBAを使うのは
やめた方が良い、標準機のでできることはコードにしないな 規模的にスケールするような作り方を理解した上でなら全然大した量ではないけど、
なんちゃってプログラマのアドホックなコーディングはだいたい1000行を超えたあたりで限界が来る
俺は絶対お守りしたくない >>595
そういうののお守りもしたことあるよ。
いやー大変だった。
基本、デバック実行で、何の処理をしているのかを類推することになる。 >>593
そうなのか?
自分はほぼOffice共有マクロでやっていてExcel固有の機能とかは最低限しか使ってないな >>592
開発者ならそうだろうけど
開発者じゃなくて業務をしてるだけ
みたいな人がついでに使うのがexcelvbaって感じだから
その人が首になる事はないんじゃないかなぁ?
それにそんな本格的なシステムを組むほど予算が無い
みたいな会社規模だとどのみちどうしようもないし
そういう界隈用って有る様で無いし
表計算
という点では予想外の使われ方だとは思うけど
なんかそういう小零細向けのアプリが有った気がしたけど >>598
それが、組織内での共通認識ならいいんでないの
マクロは俺は基本的に避けるが、好みだよ
でも、「Excel固有の機能とかは最低限」じゃあExcel使う意味あるの? まあ、勘違いするバカ多いんだよな
プログラムは自分で作ってるとか、俺が考えたとか(笑) >>600
ExcelはUIとしては優れていると思うよ。
操作するユーザーとのデータのやりとりとかグラフ出力とかね。
でもSQLでやるようなクエリーはもちろん不向きだし、途中段階のデータ加工処理にも不向きだと思うんだがね。 >>603
でも、そんなの君の好みだろ
不向き気なら使う必要ないな
ってか使えるとこだけうまく使うんだろ
なのに文句だけいゆうのな まあ、何も使いこなせない奴って文句しかないんだよな >>604
文句なんか言ってないだろ?単に不向きなことはExcelにやらせてないというだけのことじゃないか
そもそも>>593がそっちの趣味主観から始まっているわけだしな >>606
そっちこそ俺の書いた
「SQLでやるようなクエリーはもちろん不向きだし、途中段階のデータ加工処理にも不向きだと思う」
に具体的な反論があるなら言ってみてはどうなのか >>608
PowerPivotとPowerQuery使えば楽勝だぞ >>608
>「SQLでやるようなクエリーはもちろん不向きだし、途中段階のデータ加工処理にも不向きだと思う」
>に具体的な反論
お前は不向きの内容も具体的に書き込んでないのにどのようなアドバイスが欲しいのかな?
処理速度かな? 問題点がなにかも自覚しないから不満なだけで止まるんだよな
で、自分ではなくツールのせいにする楽なこった >>610
言いたかないが、それはレベルが低いだろ。
普通に考えれば分かることだ。 >>603
>でもSQLでやるようなクエリーはもちろん不向きだし、途中段階のデータ加工処理にも不向きだと思うんだがね。
工夫次第で普通にできる。別に不向きじゃないと思う
そういうのはAccessのほうが向いてると言われればその通りだと思うが >>614
元々のVBAを使わずにExcelの機能を使うっていう話の観点で言えば、データが多くなるとExcel関数ではどうにもならないくらい遅くなるということがある。
銀行のデータ整合性チェックをしたことが有るんだが、10万以上のデータでSUMPRODUCTとか全くのアホなことやってたな。
その時はSQLじゃ無いけどVBAで組んだら一瞬になったけど。
今の仕事でも50カラムぐらいで40万件ぐらいのレコードをExcelに吐き出してるのを扱ってるがVBA使わずに関数とか正気の沙汰とは思えない。 10万くらいなら関数でも楽勝だろ
自動計算切れば普通に動く 数値だけなら楽勝だけど文字列のfindとかは結構キツイ
>10万以上のデータでSUMPRODUCT
これ列全体指定してたら多分計算終わらん ワークシート関数は使い捨てならいいんだけど残して運用し続けるのはつらい データベース的に使ってるエクセルテーブルで関数従属関係をワークシート関数で実現するのやめてほしいよな Excelっていうか表計算ソフトは
ゼロから設計し直したほうが良いと思う
セルごとに個別の計算式が入っていて
どれか一つが間違っていても
簡単に気づくことが出来ないとか
一つのセルだけ修正し忘れとか
メンテナンス性が悪すぎる >>625
え?
少なくとも後者は教えてくれるぞ?
前者は数式表示モードにするか、横にformulatextで表示しとけば? OpenTextFileとCreateTextFiledeのメソッドが返すTextStreamには双方でなにか違いがあるのでしょうか?
ファイルの書き出しにはTextStreamのWriteLineメソッドを利用しています。
FileSystemObjectを使ってテキストファイル(拡張子無し)を作成して、
書き込みを行う処理を実装したいのですが、
CreateTextFileを使うとError 5 となりファイルは作成されるのですが書き込みができないことがたまにあります。
発生頻度が少なすぎて原因を抑えられず、
自力ではここまでが限界のため、何か思い当たることがあればご意見を頂けますと助かります。
OpenTextFileのほうでは少なくとも確認できる限りではエラーが発生しませんでした。
CreateTextFile
https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/createtextfile-method
OpenTextFile
https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/opentextfile-method >>621
SUMPRODUCT知らないか、10万のデータでどういう使い方するのか想像出来ない奴は黙ってろ。 >>629
SUMPRODUCTは所詮O(N)だから実質的な計算量はたかが知れてる
遅けりゃSUMPRODUCT使わないで一時セル使った単純な式に展開してもいい >所詮O(N)だから実質的な計算量はたかが知れてる
O(n2)以上だよ
めちゃくちゃ多い >>631
O(N^2)となる根拠は?
実装がヘボいのかもしれないけど、仮に手計算でやったとしたら基本的に計算量は行数に比例するだろう
それなら一時セル使えば確実にO(N)で済むよ >>620
そりゃSUMPRODUCTとか使われたら話は違ってくるわな
>>630にあるように工夫すればいいってこと 絶対参照の範囲と相対参照の範囲をSUMOTODUCTする場合は平気でO(n^2)になるよ
Excelでシミュレーションとかしてるとよく出てくる 元々無理矢理VBA使うのはって話から始まってるが、もはや無理矢理関数使うことになってる件w >>625
> 前者は数式表示モードにするか、横にformulatextで表示しとけば?
それぞれが微妙に違ってる(セル座標のこと)画面からはみ出るぐらいの
長い数式が何十個も表示されていて、それがワークシートを
コピーするたびに量産されていくという状態で
全部見て間違いがないことを確認できるわけ無いだろ >>638
全然本質的な解決にはならないけどR1C1形式にすればセル参照含め同じ数式になって多少は見やすいぞ >>638
その考え方が間違いだろ
フォーマットは統一しろよ
みて確認なんかしない >>640
何を言ってるんだ?
一見してフォーマットが統一されているように見えていながら
誰かがミスして数式が壊れたり、修正が必要な時に漏れたりするから
問題だって言ってるんだろ。
フォーマットを統一するのに「人間がミスをしなければ」という
不可能な条件があるから、だめなんだよ >>641
個別に修正なんかしない
そんな事するからミスをする > 個別に修正なんかしない
シートにデータ入れる時点で修正するんだが? そうそう。エクセルというか表計算は
データと処理(セルに入れる関数)と見た目(色等)が
一つに結合してしまっているという大きな欠点があったな。
分離されてないので、何かを修正する時に
別の何かまで変更してしまって、それに気づかない。 行でデータを作ったら
列には必ず同じ数式しか入れない
バカなことしてたら何時までも進歩しない > 列には必ず同じ数式しか入れない
列には同じ数式入れるとかアホやろwww
DRYじゃない。同じ物は一つだけでいい あ、DRYっていうのは同じことを何度も繰り返すなってことねw
わかりやすく言えば、コピペするなってこと。 「式をロック」したいだけなのに
そうすると今度はセルの幅などが変えられなくなる。
細かく設定すれば可能だが、面倒くさい。
メンテナンスする人はいちいち解除しないといけない
そして、どのセルがロックされているかわからない
頑張ればできるが・・・
どんどん無駄な頑張りが必要になる。 accessや.netで作るとメンテナンスもっと面倒だよ >>649
それ、単に考えが雑なだけだろなんにしても
計画性もなく適当に増殖させるから自分でも制御できなくなる セルロックは色々面倒くさくなるのは同意。ほぼ変更なしまで完成されてれば別だが。
なので、自分用とか、可能であれば、式セルに薄い色つけてる。 まあ、ある程度データが大きくなったら、データーはテーブル&数式で処理して
表示、印刷はピボットを使うかフォーマットを定義したシートでまとめろよ
目的も、機能も行き当たりばったりってExcelのシートもVBAも負担なだけ >>653
コメント入れればいいんだよ、印刷しなければ問題ない
面倒くさいって、管理できればそんな必要はないけどな その管理が面倒くさいって話
修正でシート変更したとして、
今度から新しいシート使ってくださいとか言っても
間違えて古いシート使ってきて、でも見た上違いわかんねとかさ
エクセルファイルをコピーした分だけ
プログラム(セルに入れる関数のこと)が複製されるから管理不能。
一つのエクセルファイルを共有して使うとか
何人も人がいればやらんだろ?
それぞれ個別のエクセルファイル修正して提出とかだろ? 削除や挿入でセルがずれない設定があればねぇ
今のところindirectしかない。indirect使うと数式が読みづらくて死ぬ offsetで大体逝ける
始点がずれるのはむしろ使いやすい offsetか、滅多に使わないけどindirectよりは楽そうだ >>657
わかりやすい名前を付けてそれを使えばズレないだろし分かりやすい VBAの一番の欠点は情報が圧倒的に少ない
多言語の1億分の一くらいの情報量
質問してもアンサーが遅い Webで有用な情報を発信できるレベルの人間ならそもそもVBAなんて使いたがらないからね 少しはみ出した使い方とかも出ないし想定内の情報のみ まあね、最近のスマホの使い方みたいに
「見ればわかるよ」ってのが長々と書いてあるね Excel VBAは玉石混淆だけどまぁまぁ情報はネット上に転がってる
Access、OutlookのVBAも最低限の情報ならば探せる
これがPowerPoint、Word、Publisherとかになると途端に情報量が減る >>661は釣りだぞ
検索力低いですね^^;って返すとこまでがテンプレ 検索力の問題とかじゃなくて情報量が圧倒的に少ないのは事実
VBAプレイヤーの絶対人数が違うんだから当然だけど天才的な人もいない VBAの情報量と言われても、EXCEL操作できればそれでいいんだからそれ以上何かいるんけ? 単純なExcel操作の範疇ならそこそこ有能そうな人の記事もあるよね
能力の低い人ほどそれ以上のことをVBAでやろうとするからな VBAしか見ないから少ないと感じる。
普通のExcel操作なんて皆知ってることばかりだろう。 VBAしか見ないから少ないと感じる。
普通のExcel操作なんて皆知ってることばかりだろう。 パワーポイントとワードは同じVBAでしょはよ作ってね
たかがvbaだし期間なんて要らないよねよろしくー
みたいなん多くてうげーてなる >>677
こういうことだろ
上司A 「パワーポイントとワードは同じVBAでしょ、はよ作ってね」
同僚B 「たかがvbaだし期間なんて要らないよね、よろしくー」
俺 「うげー」 恥を忍んできくが
WordのVBAって、なんか使い道あんの?
オレは全角半角統一とか
余白ほかレイアウト調整とか
定型文挿入とか
そんな簡単なのは自作して使ってるけど
「高度な使い方」ってのが思いつかない
文章中心のデータに
定型処理って需要があんのかね >>680
そんだけ活用できてれば十分じゃん
言語仕様を制限する方が余計な手間がかかるから、そのままなんでも使えるようにしてあるだけだろ
高度かどうかは置いといて、Word VBAの使いみちとしては、印刷物の寸法をちゃんと合わせたいとき
Word文書にVBAで罫線なりシェイプを書き込めばいいんじゃない? >>679
すごいな、読む気がなかったかもしれん
>>680
俺は、使ってっるリストボックスで選択した文字で
文書を変更して印刷している
高度である必要あるの?便利であればいいんでないの >>681
>>682
ああなんか救われた気がする
スレチ気味の質問だったが
ありがとう
素朴でも便利な小道具つくって行くわ 【1 OSの種類 .】 Windows10 Pro 64bit
【2 Excelのバージョン 】 Excel 2019
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
Visual Studio Community 2019を入れたら、Excelの設定があちこち勝手に書き換わってしまいました
そのうちの一つとしてVBEでスニペットが表示されなくなったのですが、直し方を教えてください >>680
昔作って、超低頻度だが役に立ってるのが、Windows乗り換えたときに全フォントのサンプル表示と印刷。
各種プログラムソースに色付け、A3縦二段組印刷。(最近はイチから解析しなくなったな〜…) >>680
ExcelVBAのソースコードを自動で色付けするのに使ってる。 >>686
VBAのキ−ワードの色付けは誰かがやってたからそれを貰って、コメントの色付けを追加して使ってる。 >>680
>WordのVBAって、なんか使い道あんの?
ファミコンのエミュレーターとか。 Word VBAでVisualStudio作ろうぜ! >>690 は想像もつかないが
ほかは参考にさせてもらうわ
ありがとう WordのVBAはWord文書をgrepするときに使うくらい フォルダ内に存在するファイルが以下のように構成されています
2019-1-1
2019-1-2
2019-1-2修正1
2019-1-3
2019-1-4修正1
2019-1-4修正2
この時、それぞれの日のファイルのうち最も新しい物から値を吸い上げたいです
そこでまずはdir(ファイル1*)とdir()で更新日を比較、大きなものと次を比較...とやろうとしたのですがその場合日付が1桁表記であるため1-1と1-11の比較となり1-11が採用されてしまいます
この問題を解決するにはどのようなアプローチで行えばよろしいでしょうか?
なお、日付の次は必ずしも「修正」ではなく別のコメントの場合もあります
ヒントなど頂けますと幸いです すみません訂正です
1-1と1-1*で比較をしようとすると、狙いとしては”1-1修正”がある場合その比較だったのですが1-1と1-11の比較、1-11と1-12の比較...1-19(あるいはその修正版)が選ばれてしまいます >>695
"修正"の文字列が凶悪過ぎて無理だな
"修正"がなければsplit()で分けて、日付データにしてしまうのが一番手っ取り早いんだけど
2019-1-2-修正1
なんてあったらお手上げ >>695
ファイル名ではなくファイル自体の更新日で比較は?
可能ならファイル名の付け方を考え直した方がいいと思うが すまん>>696読んでなかった
Dir("1-1*")で"1-1修正"も読み込まれるはず
ファイル名が"1-1 修正"になってるってことはないか?
それとDirはファイル名昇順で返すから比較せず最後に読み込んだファイル名を使えばいいと思う >>699
1-1修正
1-1最新
なんてのがあると、タイムスタンプ無視して修正が最後になるぞ
コメントが不定なら、数字とそれ以外の文字を判定して切り分けるしかない 1-1修正
1-12回めの修正(「1-1 2回めの修正」のつもり)
ってパターンもあってもうこれ絶対にヤバイ処理 >>696
すまん更に勘違いしてた
"1-1修正"が出て来ず他のが出てくると言ってるのかと勘違いしてた
>>698が無理ならファイル名をsplitで"-"で切って、3つ目の文字列から左2文字のうち数字だけ取得する
ただし>>701の言うようにコメントの最初に数字が来ることがあるならどうしようもない postfix扱いの「コメント」に規則性がないのならそもそも最新版を特定する術がない
運用の方を変えるべきだろう 最新版以外はoldフォルダ作ってそこにほおりこんでおく
そうすれば超簡単に出来る >>それぞれの日のファイルのうち最も新しい物
新しいとする基準は何?
ファイル名で修正1修正2ってあったら修正2が最も新しい?
日付部分のyyyy-mm-dd(ただしmmとddは一桁もあり得る)が固定なら
毎回癖のあるdirとワイルドカードなんて使わないでファイルリストすべて取得してから処理したら? 新たにVBAライブラリを作ったりする人が全く出ないのが取り残された言語の欠点
他の言語は次から次へとライブラリが追加されてより便利に快適にそして簡単になるのに
終わってるVBAには将来性も可能性もないから仕方ないけどね Sub macro1()
ChDir "指定フォルダ"
指定日 = "2019-1-1"
f = Dir(指定日 & "*.*")
Do While f <> ""
t = timestamp(指定日, f)
If t > 最新t Then
最新f = f
最新t = t
End If
f = Dir()
Loop
MsgBox "日付が" & 指定日 & "のうち最新の物は" & vbCrLf & _
"ファイル名 " & 最新f & vbCrLf & _
"日時 " & Format(最新t, "yyyy/mm/dd hh:mm")
End Sub
'ファイル名の日の桁数をチェックして、一致したらタイムスタンプを返す
'一致しなかったら0を返す
Function timestamp(s, f)
w = Mid(f, Len(s) + 1, 1)
If "0" <= w And w <= "9" Then
timestamp = 0
Else
timestamp = FileDateTime(f)
End If
End Function >>706
確かに聞かないな
最新ライブラリで10年前とかの世界だ フォームにしてももう少しグラフィカルだったりアニメーションだったりするだけでイメージが全然違うんだけど
頭の良い誰がライブラリを作ってくれんかね 多くの人にとって有用なライブラリを作れるほどの能力のある人なら、
VBAを便利にすることはVBAの延命や利用人口の増加を招き、それは即ち社会正義に反する行為であると理解しているからね >>706
vbaにライブラリって何か必要?
中途半端なの出てきてもそれ覚えるの面倒なんだよね
jQueryぐら便利で誰もが使ってるようなのならいいんだけど VBAのライブラリ作るよりCOMにしちまうんじゃないの?
VBA以外にも使えるし。
そしてCOMのライブラリなんて腐る程有るんだが何を言ってるんだ? 実際、俺はVBA用にC#でライブラリ作ったりしてる。 >>714
二つ質問
それってCreateObject でインスタンス作って使うの?
どういうジャンル/用途のもの? >>711
> vbaにライブラリって何か必要?
こういう文脈のライブラリなら
アルゴリズム系のライブラリだろ?
ソートとか配列に対する処理(合計求める)とか
VBAの言語の範囲内で実装できるアルゴリズム
あと大きめのやつならCSV読み書きとか
テンプレートエンジンとか >>711
> 中途半端なの出てきてもそれ覚えるの面倒なんだよね
ライブラリの関数名はどの言語にも有るような名前にするので
一般的なプログラマなら覚えるまでもない >>717
一般アルゴリズム系とかCSVならいっぱいあるでしょ
テンプレートエンジンってなに? CSVの読み込みほしいな
住所の番地"1-1-1"を読み込むと日付になって超めんどい
幾つか試したけどどれやっても日付型になってしまった
今思えば頭にピリオドでも付ければ良かったのかもしれん >>695-707
Ruby では以下。
ただし、Date オブジェクトに変換して比較しているから、同じ日付の順序付けは、不明
require 'date'
filenames = %w(abc 2019-1-11さらに修正1 2019-1-11修正2 2019-1-11修正1 2019-1-11 2019-1-1 2019-01-01)
re = /^(\d[\d-]+)/ # 数字で始まり、数字かハイフンだけが続く
# マッチしたものだけを集めて、ソートする。md[ 1 ] は、capture 部分
p results = filenames.select { | fn | fn.match( re ) }
.sort_by { | fn | md = fn.match( re ); Date.parse( md[ 1 ] ) }
p results.first
結果
["2019-1-1", "2019-01-01", "2019-1-11", "2019-1-11修正1", "2019-1-11修正2", "2019-1-11さらに修正1"]
先頭
"2019-1-1" >>721
もうすぐ無くなる言語の話なんてやめようよ ライブラリで有効なのは作るのが面倒なUIだろ
グラフィク系にこそライブラリの有り難みがある そもそもVBAに固執するのは他のものを覚えたくないからであって、
いくら便利なものがあろうと誰もそれを探そうとしないし覚えようともしない
それができる人ならとっくにVBAなんか卒業してるよ >>725
卒業てw適材適所だよ。EXCEL関連の時はvba、webはphp+js、ゲームはC#
これぐらい使い分けときゃだいたいok >>726
VBA使う人には他のものが使えないから使ってる人と単に選択肢の一つとして使ってる人がいて、君は後者であるというだけだ
大多数は前者なわけだし、後者の人はVBAでやりづらいことを無理にVBAでやろうとはしないからライブラリ云々は問題にならないだろう >他のものが使えない
は他のものを覚えたくないだけでなく
他のものを使わせてもらえないというのもある >>728
仕事を選べないor技術的裁量を持てない立場に甘んじているならその程度の能力ってことだ
本質的には大差ない 使わせてもらえないのはごく一部の相手なんですけどね
ほかは普通にいろいろ使ってる 自治体だと、テキストエディタすらウインドウズ標準のものしか使えない。インターネットから切り離されてる不自由な環境なので、VBAとかVBSは重宝される、らしい。 >>732
そういう馬鹿なところのために、
マイク・スピーカー端子経由でデータのやりとりをする
ツール作ったら便利なのだろうかね? 個人的には申請出せば色々使えるけど、それが面倒くさいというのもある。
どうせ、VBAでどうとでもなる。
よっぽどどうにもならない場合は申請出すけど。
最近流行りのRPAとか全く必要無い。
簡単にソース作成する個人ライブラリが既にある。 PC-8001ではカセットテープにプログラムを保存したんだよな
それを最近のPCで録音して、音声ファイルからプログラムデータを復元するWindowsアプリがフリーで公開されてる 下手なの作ってフリーズしたり過去のデータが消えたら責任とれるの?って話になるからな ライプラリってそんな知る人ぞ知るってマイナーな使い方じゃなく簡単に情報入手出来るようになって価値があるよね
汎用性があり改変もしやすくオープンなのが増えると良い。
そんなのVBAじゃなくともって言う人もいるけどそれでもVBAが存在して使用されてるんだから有用なライプラリはあった方が良い GithubでVBAっていれて検索すると3000以上のリポリトジがあるけど、
どうすれば有用なものが見つけられるか
まるでわからん なんとなくvba利用しているような運用職なんですがモノは良いのでもっと横展開出来て再利用性高いものが作れたら作って欲しいと言われました
再利用性が高いとはつまりどういうことでしょうか…
モジュールをそのままコピペして全く別のものでも動くように…? >>743
決め打ちとしてない?
データ全部を処理する時にfor i = 1 tto 100000とかテキトーな数値にしたり
そうじゃなく、最終行をちゃんと取るとか >>743
言ってるやつに聞け。
まあどうせ無理だろ?
どうせそいつが言ってるのは、他の部署でも使えるようにしろってことだろうから
業務内容を統一したものに "変更" しないと無理ですとか言っとけw > 横展開出来て再利用性高いものが作れたら作って
↑これ無理なんだよ。
今あるものを再利用性が高いものにすることはできない。
ただし「再利用性が高いもの」を使うことはできる。
どういうことかというと「今あるもの」は再利用できるものと
再利用できないものが合体してる形。
そこから再利用できるものを分離することはできるが
どうしても再利用できないものは残る。 そうやって責務を分離して再利用性の高いライブラリを構築することは可能。
しかし使いこなすのが難しくなる。
依存関係や凝集度をちゃんと考えた良質なライブラリは玄人受けはするだろうけど、
機能が細分化し抽象性も増すから一般人には豚に真珠状態。 まずはモジュール化
その会社の業務内容に合わせて、部署が違っても共通で使える部分をライブラリとして整備する
まあ言うのは簡単だけど、実際に作るのは死ぬほど大変なんで、理想の高さに比例した地獄が待ってるんだけどな > その会社の「業務内容」に合わせて、「部署が違っても共通で使える部分」
そんなものは存在しない。
業務内容から生み出されている時点で、業務にべったり依存してる。
再利用性の高いライブラリっていうのは、業務内容を切り離している。
業務内容と関係ないから、共通で使える。 自分の理解で合ってるか確認したいんだけど再利用性高いてのは決め打ち無くして例えば引数とかで使えるようにしてモジュールなりを使い回せる状態
だけども再利用性ない部分(呼び出し元?main?)を作らないといけない限りこれ1つあればどの業務、案件でも使える!てことにはならない
ライブラリ化?とか再利用性を高めることは出来るけど中々難しく初心者には険しい
て感じでおけ? >>750
ライブラリと業務寄りアプリの難しさは別種のもので初心者にはどっちも難しい。
とはいえライブラリは小さな便利ツールをピンポイントで一個一個作っていくことができる点で
ハードルが低い面はある。 無理だと言うやつには無理のんだろう
汎用性の高いのは別に問題ないのでは?エクセル自体はどの部署でも使ってるんだから追加でどこまで機能を絞るか縛りを緩くするかの問題でしょ プログラム板の他スレじゃ相手にされない半端者がここならドヤ顔で語れるだろうって調子に乗ってて草 他プログラムはサンプルや情報が多いからVBAより簡単に現象を獲得できる そもそも他言語はシンプルだしVSならガッツリとインテリセンスが効くから簡単に書けて工数も少なくて済む
文法もVBAは難しい部類 難しいというか不合理なんだよな
内包表記やヌル安全やモナドみたいに別に難しい概念があるわけでは無い マクロでブック開くと、データ量が多いブックの場合開き終わるまで拘束されてしまう。
開き終わってセルに書き込みできるまでに他の処理をさせたい
if application.Ready=False then
(その間にやる処理)
endif
こんな感じに、開くまでの間になにか処理をさせたいのです。
なにかできる方法があったら教えてください
その重いブックは自分で作ったものじゃなくてすぐに改善はできない状況です
よろしくお願いします 一瞬、マクロを実行するファイルそのものを開く時の待ち時間かと思ったわ。
VBAじゃなくて、VBSで開かせるなら出来なくもなさそうだけど。 VBAやUWSCのプログラムちょっとできる程度なんだが組み込みのソフトウェア部に転身しろと先輩から言われる。
ちなみに今は製造部の使えないやつ扱いをうけている模様。
これは辞めろってことか >>762
現場が分かるシステムが欲しいんだろう
かなり必要とされてるように見える。行ってみたら良いだろう
いずれ製造なんて自動化でなくなる部門何だしている >>760
他の処理ってのがExcel操作だったら無理
ExcelはSTAのCOMなので複数のスレッドからアクセスしても常にタスクを直列にシリアライズして逐次処理する
一個の処理で詰まると後が渋滞するだけ
Officeの他のアプリのVBAとかPowerShellとかJSとかVBSとか、別の言語のプログラムをキックして他のエンジンで処理を実行させることは可能
後でウィンドウなりファイルなりにアクセスすれば処理結果も取れるし >>763
ありがとう。
その自動化するための機械作ってるのがうちの会社なんだよね。
機械のソフトウェアだからCとかパイソンになるのかな?
一応情報卒なんだけど自信ないよ >>765
何で遅いか調べないの?
外部リンクとか、シート間参照が多いとか >>765
そうなのか
言語は多分C辺り、pythonは無いと思う
一度面談受けたら?分からない事がさすがに多すぎる >>767
Cだよなぁ、ポインタで挫折しちゃったけいけんがあるんだよなぁ。数字の羅列はやってても楽しくないんだよなぁ。グラフィックに実行結果出ないとつまらないんだよなぁ。
でも一生製造で終わりたくはないし…話ししてみようかなサンクス >>764
Excel.Application複数起動してもダメなの? accessのテーブルに接続するデータテーブルをVBAでrefreshallした時に、
読み込み完了前に次の処理に進むのを止めることできますか?
stopで一時的に止めればいけるけれど、読み込み完了後に次処理に自動的に
進めたいです。 >>771
たぶんできる。
>>764は思慮が足らないと思う。 >>773
Excel2010までは簡単だったがExcel2013から複数インスタンスの起動は難しくなったようだな
ただ、所詮重い処理をそのままにして複数起動してももっと重くなるよな
そもそも、重い原因を確認しないと、自動計算を止めれば早くなる可能性もあるが
それをやっていいかもわからん 正直、余計なことをせずに静観しておいたほうが良い気はする けどこのスレの人間って、無駄話で罵り合いするの好きだよね w 漠然とした話から連想ゲームして、自分語りを始める
で、好きな事違うから無駄な話が続くんでない VBA界には有名人がいないから、いじる対象がないってのもある
他言語だとコミュニティの顔みたいな存在がちらほらいるけどVBAは活動自体ないからな ないねぇ
オープンマインドじゃないし自分の考えが正論だと信じ込んでるから新しい発想は受け入れないもん
全部排除 書道家にWord使ったほうが早いのにとか言っても仕方ないだろ?
VBAは伝統芸能なんだよ 昇順で並べたデータ(日付など)の変わり目に一行挿入を繰り返すマクロは作れるかな?
セルの差分の列を作って0でないところに行挿入を考えてるんだが、他に何かないでしょうか先生方 >>786
上下のセルの内容が同じじゃなかったら挿入 >>787
これは早速素晴らしい案をありがとう!よほどシンプルに行けるわ >>788
念の為、
for i 最終行 to 2 step -1
で回すんだぞ このスレだとプログラマではないひとの質問が書かれるか。 >>789
行がずれるから逆から回すということかな、助かりますありがとう! >>790
そりゃそうだろう
vba使う層って事務のにーちゃんねーちゃん+できる営業マンが片手間に使うぐらい きみの勝手な思い込みだよ、
と思われたくないなら客観的な根拠をあげた方がいいね エクセルの画面が右上に飛んで行って、
画面に「どこいくね〜ん!」って表示させるのはどうでしょう? >>779
居るだろ。
君が知らないだけじゃね?
パッと10人くらいは思いつく。 >>797
聞いちゃいけない事ってあるだろ、ニタニタで我慢しろよ どうせtwitterのキーワード検索にVBAって入れて出てきたやつとt.tanakaぐらいだろうよ Office田中さんはその内の1人だね。
あとはA○○○さん、k○○○○○○さん、魔○○○○○○さん、じ○○○○○○さん、熊○○○さん、K○○さん、き○○○さん、s○○○○さん、y○○○○○○さん、Y○○○○○○さんとか。
き○○○さんは今も活躍されてるけど今は見かけなくなった人が多いけどね。
.netの方へ移動された人もいるし。
ここ数年でVBAやりはじめた人じゃ知らないのも無理無いが。 ああ、A○○○さんはA○○○○さんだった。
今はA○○○○○さんかな。 >>800
T○○○さんもI○○○○さんもいないじゃないか Office田中はサイトの修正点を送っても反映してくれないのがネック
後続のためにも直してくれ〜 解説系とライブラリ提供系に分けられるがそれなりに有用
しかしコミュニティを形成してるかと言うとちょっと >>802
I○○○○さんは想像つく。
けど、俺がいた所じゃ見かけたことが無い。
そういやtwitterで発言されてるらしいけど、俺VBA関連はtwitter見て無いんでな。
T○○○さんは想像つかないな。
田中さんは有名人だけどあの人のサイトでは教わることは無いな。
基本的に全て知ってることだから。
でも>>800で挙げた人達は全員俺よりかなりレベルが上だ。 VBAのworksheetfunction.vlookup関数で
該当の値がないときエラーを回避してそこの処理は無視させるにはどんなコードを書けばいいですか?
該当なしだと問答無用でエラーが出て止まってしまう。 >>807
'forなどで回す時はラベル付けて飛ばす
Sub foo()
On Error GoTo err
For i = 1 To 5
bar = WorksheetFunction.VLookup(1, Range("a1"), 1, 0)
'エラーじゃない時の処理
err:
'共通の処理。無ければ何も書かない
Next
End Sub
'使い捨てプログラムならonerrorで囲んでしまうという手もあるが、あまりオススメできない
Sub foo()
On Error Resume Next 'エラーを無視
bar = WorksheetFunction.VLookup(1, Range("a1"), 1, 0)
On Error GoTo 0 '無視を無効化
End Sub >>809
お前ね何度書けば・・・
Sub foo()
On Error GoTo err
For i = 1 To 5
bar = WorksheetFunction.VLookup(1, Range("a1"), 1, 0)
'エラーじゃない時の処理
goto 共通
err:
ERR時の処理
共通:
'共通の処理。無ければ何も書かない
Next
End Sub >>811
てか、WorksheetFunction.VLookup(1, Range("a1"), 1, 0)
見過ごしたけど、これ何? >>807
Trueならエラー起きないんじゃない? on errorはセンスがないように感じるのですが。
わたしのセンスがon errorを使うことを許しません。
どうしたらいいですか?
こんなとき定番のような方法はないですか? on errorで問題ないならそれで良いじゃん
そんな瑣末な事に時間を使わずにもっと生産性のある事に時間を使って組織や社会に貢献して下さい On Errorを使うのがセンス無い?
何処の初心者だ?
想定された動作なのに一緒くたにするのが嫌というならOn Errorの使い方を知らないだけだろ。 >>815
センスとか気になるならVBAに関わるのは止めた方が良いよ >>815
ID:9HZyCDJwのキチガイが起こってるぞw >>819
センスの無いお前には言われたくね―なw vbaにtrycatchが無い以上、onerrorで分岐するしかない
ただ今回に限って言えば、ワークシートにvlookup()を入れてその結果で分岐させることは可能 こんな方法もある
Range("Z1") = WorksheetFunction.VLookup( 略 )
結果をどこか空いてるセルに入れてしまえば、エラーでも止まらずに結果を判定することができる
もうひとつ、試したことはないけど
WorksheetFunction.Iferror( WorksheetFunction.Vlookup ( 略
みたいな方法でもエラーで停止するのを回避できそうな気がするけど、Vlookupで止まるかなあ >>822
間違えた
こうだった
Range("Z1") = Application.VLookup( 略 ) >>807
・VlookupじゃなくてFindを使う
・事前にcountifとかエラー値が返らないもので存在確認してから使う
・worksheetfunctionの代わりにApplication.VLookupを使うと見つからなかった場合N/Aが返るが、旧バージョンの命令だからあまりおすすめしない 質問者は、もっと具体的に書くべきだな、対応方法は多種多様にあるから
質問に対するベストな回答が、質問者の意図するベストの回答とは限らん もうね、On Error Resume Nextが嫌とか、宗教だと思うんですよ。 んて訳の分からん面倒なコードを書くとかキチってるよね >>829
でも配列の次元すらOn Error 使わないと求められないってひどくないですか? >>831
何も分かってないんだから大人しく使いなよ >>833
?
だから文句言わずにonerrorを使えば良いだけなんだが >>831
お前の言ってることは結局、コ−ド書かないと動かないって酷くないですかってのと同じ。 >>834
アスペか?
配列の次元を取得するのにOn Errorを使うなどという事自体は酷い。これは事実だ。
それに対して「何も分かってない」とdisる以上、On Errorを使わない真っ当な方法があると解釈するのが当然のこと。 そこじゃないよ
vbaの酷い点はtrycatchが無い事 客見ずにマウント取り合いってツルッパゲのする事 産毛すら無い >>835
流石にそれはないわ
VB.NETやC#は普通にプロパティあるし >>837
書き方の問題じゃね?
実質同じことが出来るんじゃないの? >>840
それはVBAに無いものをあげつらっているだけ。
VB.netやC#に無いものをあげつらうことも出来るだろ。
そもそも何が酷いのかサッパリ分からん。 On Error とか例外機構っていうのは、メモリ不足とかファイルの不在なんかのソフトウェア的には想定しづらい
例外的な事象に使うものなんだよ。
例えば「関数引数に対する事前条件がもし守られていなかったら」なんていう
ソフトウェア的に想定できるような事には例外を使うのべきじゃない。
ましてや配列の次元の取得なんてことに使うのは「ひどい」としか言いようがない。
それはセンスとかの問題じゃなくて常識だと思うよ。 >>842
> そもそも何が酷いのかサッパリ分からん。
まじで言ってるの? もともと有る機能を組み合わせて
目的の動作をするように作るしかない 例えば昔仕事で扱ったWin32APIのGetPrinterでは取得するPinterInfo2構造体のサイズを0にして渡して敢えて失敗させることによって正しい構造体のサイズを取得するなんてのがある。
再度正しいサイズで実行するやり方が想定されていて、そして失敗時はdllエラーも当然発生するなんてのが有るわけなんだが。
確かDevmode構造体を取得するする時に使うDocumentPropertiesも同じような使い方してたと思う。 >>845
結局取得できる。
何も問題無い。
お前のオナニー以外は。 >>844
まず次元の取得方が標準で用意されていない点が少しひどい。
さらにそのワークアラウンドがOn Error利用である点が一層酷い。
わかる?
これでキミもバッチリだ。 >>847
>>832じゃねーから何も考えておらん。 >>850
だからそれは無いものをあげつらっているだけ。
どんな言語にもあることだ。 >>841
実質同じ事って言い出すと何でもアリになってしまう
onerrorしかないと可読性が大きく下がる
ところでEXCELで次元数を取得する機会って一度も無いんだけど、
よく使う計算なのか >>853
可読性が下がる???
書き方が悪いんじゃ無いの?
そんなこと感じたことも無い。 >>853
多分、配列を初期化したかしてないかの話じゃないかと思うね。
UBoundでエラーが出る話だろう。
で、Sgnが嫌なんだろう。 >>848
それはちゃんとドキュメント化されてるだろ
On Errorで次元を取得するのとはレベルが違うよ
動けばいいと言うレベルのコーダーならいいのかも知れないけど >>856
何言ってるの?
On Errorしかないのが正式なら同じだし、
On Error以外に正式なものがあれば問題ないし、
同じことじゃねーかw
しかも後出ジャンケンかよw
結局言い掛かりもいいところだ。 On Error 以外に配列の次元取得方法がないと決まった訳じゃなくて、よく知られてる方法がOn Error利用だってだけだが、
割り切ってAPIを呼んでいる人もいる。 >>749
え、お前の会社って稟議書や経費精算の業務って全部署共通じゃないの?
その会社固有の業務だけど、部署間で使い回しの効く部分のことを言ってるんでしょ? >>843
とりあえず構造化例外処理すらない時代の言語にいってもしょうがない話
常識は時代で変わるんだよ
結局はVBAは古い時代の言語ってだけ
あと、配列の次元が知りたいとか設計が悪いとしか思えん >>857
はあ?
正式な方法がないって話だぞ
日本語理解できてないの?w >>860
> あと、配列の次元が知りたいとか設計が悪いとしか思えん
君には不要というだけの話
他の言語では普通に多次元配列用のライブラリとかある >>863
それさ...
平気で言うやつがいるけどさ...
ありえなくない? じゃあどうしてもOn Errorが嫌だとして、
他の方法が幾つか出てるんだから、それ試しなよ。 trycatheなら関数に封じ込める事ができるけど、
onerrrorはグローバルだから全体に影響してしまうのが最高に糞なんだ
正直、グローバルじゃなければ別にonerrorだろうとなんだろうと構わんのだよ on errror が糞とかどうとかお前の趣味に合わせて出来てる訳じゃ無いんだよアホウ >>866
君の言う通りだ
反発を受けてるのは「文句言わずにonerror使え」とか言い出した奴ですよ
ただ次元数をライブラリに渡せっていうのはナシだ うまく作れない奴が他人のせいにしたところで問題は解決しないのにな >>861
大いなる自己矛盾の中にいることに気付かないとはね。
論理的思考能力が無いならプログラムを組むのなんか辞めることだな。 >>871
何を言いたいのさっぱりかわからんw
低能が反論できずに有耶無耶にしたいときによくやる方法だな >>867
on local error …
って書くだけじゃん。アホか。 >>867,.874
onlocalerrorってなんだ、初めて聞いたわ
そもそもon errorはグローバルじゃないぞ
Sub foo()
Call bar
a = 1 / 0 'ここでエラーになる
End Sub
Sub bar()
On Error Resume Next
a = 1 / 0 'エラーにならない
End Sub >>873
やっぱり分からんかw
お前はドキュメント化されていれば正式だと言ってる。
しかしそれは結局MSの判断ということだ。
お前はOn Errorが正式では無いという回答そ貰ったのか?
そうでなければお前の「正式な方法がないって話だぞ」というのはお前の決め付けだ。
結局お前の中には矛盾した2通りの正式が存在することになる。 local付けると局所だと思ってたけど、配下に有効みたい。
つまり、付けても動作に変わりはない(?、詳細は試してない) 昔試したときに、local有無で動作違ってたはずなんだけどな…
まあ、配下に有効だから、goto 0で無効にしてから callすれば局所化は可能かと 俺も On error Goto でtry Catchと同程度のことができると思ってた
要するに書き方かなと思ったが1回目のエラーはいいがそれ以降が使えないじゃん?
ネストするにも無理があるな、複数の場所(例えば2重ループで)でのやり方があるかもしれんが
無理じゃない?
俺は「On error Goto」で出来ると思ってた、やり方があれば申し訳ないが教えてほしい エクセルで、複数ブックの特定文字列だけ一気に変えるマクロってどこかで紹介されてますか?
例えば2018年4月21→2019年4月23日に変える感じです
日付が入力されているセルがそれぞれのブックでバラバラなので、セル指定置換はできないようです >>876
よほど多用されてるとかでない限りいちいち〇〇は正式じゃないなんて言う回答なんてするわけ無いだろ
レスが馬鹿すぎるw 例えば
Private Sub CommandButton1_Click()
Dim ShNM
For i = 1 To 6
Sheets(1).Activate
ShNM = Range("A" & i).Value
On Error Resume Next
Sheets(ShNM).Activate
GoTo Kyoutuu
Nosheet:
Kyoutuu:
Next i
End Sub
この式は最初のシートを「Z」としそのA列の行1〜6に例えば「A」〜「F」まで書いて
シートを「Z」以外にシート名を「A」〜「F」までの内3つしか作ってないと、「.Activate」で2回エラーになるが1回目は意図した動作だが
2回目のエラーでメッセージボックスが出る
回避方法を教えてほしい 赤っ恥
On Error Resume Next
はこれなら大丈夫だが
On Error GoTo Nosheet
はNGって話です でもそれじゃあ書いてる意味がないので
結局
On Error Resume Next で次を考えるなかななの、一番使いたくないんだが On Errorは全体に作用しすぎるから、isError的な感じでfunction分けた方が良いんじゃないか >>884
onerrorgotoをメインの処理の流れ制御には使わない方がいいと思う。
On Error Resume Nextは、次行にエラーがあると想定されるときに使い、If Err.Numberで判定して、その値によって処理を変える。
On Error GoTo は、どちらかというと、一つの処理(subやfunct…)の頭で宣言し、想定外のエラーを検知してエラーを出すのに使う。 >>886
ありがとう、他の言語も使ってるから勘違いしていた
対応することはもちろんできるし、Excelの環境を利用しながらの
プログラムは有効なので、仕方ないのであれば考えるは
考えてなかったのが、お恥ずかしい なんかアプデ来てからwebクエリのバグが起こって実行エラー 1004で読み込めないんだけど
俺だけ? >>889
「Webクエリによって返されるデータがありません」とか言われるけど
読み込み先のWebページみても仕様の変更とかURLの変更とか見られないし明らかにExcelアプデが原因っぽいんよなー >>890
もう一度、クエーリーを作成してもダメ? >>881
どこで紹介されてるかは知らないが、1ファイルずつ中身検索して変更すればいい >>883
シートの存在チェックをしないままActivateメソッドをコールしてるからエラーになるんだろ
Private Sub CommandButton1_Click()
Dim ShNM As String
For i = 1 To 6
Sheets(1).Activate
ShNM = Range("A" & i).Value
If SheetExists Then
Sheets(ShNM).Activate
Else
'Nosheetのラベルの箇所に書いていた処理
End If
'Kyoutuuの所に書いていた処理
Next i
End Sub
Function SheetExists(ByVal name As String) As Boolean
Dim sh As Worksheet
For Each sh In Sheets
If sh.name = name Then
SheetExists = True
Exit Function
End If
Next
SheetExists = False
End Function >>882
何言ってんの?
回答するかしないかはどうでもいい。
お前が回答を貰って無い以上、不明ということだ。
つまり、「正式な方法が無い」などという発言は明らかに矛盾している。
もはや、「正式」という言葉をどう解釈するかという問題になって全くアホらしいが
、MSに方法が無いのかと問えば、何らかの回答をするだろう。
それを正式な方法と考えれば、日本語の解釈に固執するバカ以外は問題無いわけだ。 >>886
基本的に同じ考え。
1つ付け加えると、On Error Resume Nextはエラー処理終わったらエラーをクリアしてすぐにOn Error Goto 〜とかに戻す。 >>895
vbaでエラー処理の状態って取得できる?
目視確認無しで、エラー処理の方法てすぐに戻せる?
よく考えたらこれ出来ない気がする >>894
正式な方法があると言うなら出せよw
出せない時点でお前のレスは意味がない >>898
あぁ、それは知ってるんだ・・・すまぬ
resume nextとgoto 0って判別できるんだろうか Excel VBAの例外をあてにしたロジックは危険だよな。 On Error Resume Next
↑この構文そのものがわかりにくいんだよ。 オブジェクト操作でなんだかわからないがエラーが発生しても処理を続行するというのは独特。いかにもVBAの適当さが出ている。 VBAと関係ないがT-SQLも例外の事前定義がないから、トライ、キャッチ構文が役に立たない。 >>903
Excel VBAのOn Errorは、これから出るエラーの種類や原因がわかった上で使う場合がほとんどだと思うぞ
事前に回避する処理を書くより、事後にエラー処理をした方が簡単な場合があるから >>897
完全に論理崩壊w
どうしてこんなバカがここにいるんだ?
正式な方法が無いなどと決めつけてるんだからお前がその根拠を示すべきだろ。
俺は何らかの正式な方法がある「だろう」と言ってる。
MSが出来ないなんて回答する筈が無いからな。
実際少なくともOn Error使って出来るわけだ。
MSが出来ないと回答しなければそれが正式な方法だ。 >>895
便乗で付け加えると、局所的に onerrorgoto使って、エラーリカバリーしてresumeで処理継続できる。
これ知ったときめちゃ便利やんと思ったし、出番もあったはずだが、ほとんど使ったことない。 >>907
そんなこと言うならPinterInfo2構造体のサイズを取得するのはGetPrinter()しかないことをMSに確認したのか?
って>>848に言ってやれよw >>909
???
エラーを起こすことを想定した処理をMS自身が提示していて、しかも一般的に普通に使われていて(俺のまわり And Web等)、それに対して問題だなどと思わんから確認する必要など全く無いわけだが。
論理って知ってますかw >>910
もっといい方法があるかもよ?
向上心がないんだなw MS自身が提示している方法ではないそれこそ正式じゃないよな >>911
すまない、恥をかいてお願いする
もっといい方法や、向上心のある方法を教えてくれ 聞いたところでどうせVBA以外の環境を使えとしか言えないんだろ 明日からVBAエキスパートの試験が変わるっていうから、今日駆け込みで受けてきた
……資格スレどこ行ったんですか? なんだかよくわからんがPinterInfo2構造体とやらのサイズ取得にエラーを利用する方法をMSがサンプルとして(?)あげているけど
配列の次元取得に対してはそういうものがないって話なのか?
で、どうした? >>891
もう一度最初から新しいクエリを作成したらいけた
んー原因不明のまま更新するの怖いなー 質問スレで聞けば教えてくれるかもよ?
MSにきけば教えてくれるかもよ?
何もしなくても問題ないかもよ? 結果が同じなら中身なんて気にするな
そんなに突き詰める程の言語じゃないだろ
サッサと次の仕事しろ >>911
論理が分からないからそういう反応するわけだw
あのね、俺はOn Error使って問題無いの。
A1セルに1を入れるのにRange("A1").Value=1よりもっと良い方法があるかMSに確認するバカとは違う。 >>923
向上心がないとバカのままだよ?w
もう手遅れかもしれないけど… 怪しげな自己啓発のセールストークみたいな問答しやがって
死ね Excel VBAには定義エラーが明示されていないから仕方ないね。
仕様が明確に公表されていないから、全体としてはエラーハンドリングは何かエラーが発生したら、止めるような方針になってしまうのはあたりまえ。 お前らまだOn Error Goto と On Error Resume Next で争ってるのかよ?
俺が昔、あれだけ説明してやったのにw
どちらも Goto とは全く関係ないもので使用して良い
On Error Gotoはtry-catchと違ってネストができないので使いづらくは有るが、
try-catchとOn Error Gotoは本質的に同じもの
例外が発生したら後半部分(catch相当)にジャンプする
On Error Resume Next は 例外が発生したときにジャンプするのではなく
次の行に行くことで例外を使わない戻り値によるエラーと似たような書き方ができるもの
書き方が違うだけでどちらも大差ない
On Error Goto も On Error Resume Next も基本は
例外が発生したら、Err.Numberなどで判定してリカバリ処理を行う
そんだけだろうが >>924
俺はそんな暇人じゃ無いんでね。
もっと有意義な探求をしてる。
お前は一生Range("A1").Value=1よりもっと良い方法を探求してくれwww >>930
> 俺はそんな暇人じゃ無いんでね。
そうなんだ、5chでバカを晒す暇はあるのにねw
> お前は一生Range("A1").Value=1よりもっと良い方法を探求してくれwww
まさかと思うけど
> もっといい方法があるかもよ?
が皮肉だと言うことに気づいてないのか? >>931
ほう、お前はコード書く以外のことはしないというわけかw
俺は完全に手遅れを晒すバカとは違う。
皮肉?
日本語も分からないようだw vbaに向上心も何もないだろう
EXCELの追加機能なんだから全体のルーチン見直したほうがよほど生産性たかまる >>932
> ほう、お前はコード書く以外のことはしないというわけかw
お前は一日中コードしか書かないバカコーダーかよw
> 日本語も分からないようだw
皮肉すらわかってないのか…
向上心がないとこうなるんだな、ちょっと可哀想 自己矛盾という指摘に対して反論出来なくて悔しいのかもしれんが、本論からずれた発言を繰り返してもバカを晒すだけだぞw >>934
www
そうだねえw
つまりアホな探求する程暇人じゃ無いけど5chに書き込む暇はあるよねえ。
バカ以外はそんなこと最初から分かる筈なんだがw 「 ほう、お前はコード書く以外のことはしないというわけかw」
←こういうのが皮肉なんだがw しかし>>932に対しての>>934の返しw
論理性皆無だなw
どうして俺が1日中コード書く人間になるのかね。 本人が何を言おうと草が多いほど知能が低いってみんな知ってるんだよねwwwww
行末wはNG設定しとけwwwwwww >>929
そんな事は当然知っとるわ
今更そんな当たり前の事を知ったかで出しゃばるな
ダセー奴だな >>935
> 反論出来なくて悔しいのかもしれんが、本論からずれた発言を繰り返してもバカを晒すだけだぞw
なんだ自分のことはよくわかってるじゃないかw
あと一日中コード書くとか言い出したアホは>>932な
皮肉とか言い出してるけど、皮肉にしても頓珍漢すぎる >>941
悪かったわw
論理が分からないアホには丁寧に説明しなきゃならんのだな。
俺は1日中コードを書く人じゃないんで
5chに書き込む時間は有るけど、>>930を受けて「5chでバカを晒す暇はあるのにねw」等と書く君は俺が5chに書き込む時間があると想像すらできないような人、つまり君自身は1日中コードを書いているような人なのかい?という問い掛けが>>932なわけだがw
>>932でどうして君じゃなくて俺が1日中コードを書く人になるのか全く理解に苦しむねw 「すげえなあ、君は1日中コード書くような人なんだね。」という皮肉w そもそもドキュメントとか仕様についてMSに確認する話がいつの間にか一日中コード書くとかの話になってる
って言うのが頓珍漢だって言うのに>>942みたいな的外れの解説を必死にされてもどんだけ暇なんだよ?
としか思わんよww コード書く仕事したいがどこも雇ってくれん。
国立の数学の院卒でもね。
歳喰ってから出たやつは価値なしとか。
同期の若い奴らは日立、富士通…のSE待遇で雇用。 >>946
そりゃおめぇ、vbaのスレなんかにおったらアカンで >>946
院まで出てコード書きたいのが優先というのがまずおかしい
院出て SEなんて、せっかくの知識を活かせるとこは殆どないと思う
(たまたま数学を活かせるとこ担当するかもだが)
日立なら中央研究所(今呼び方違うかもしれん)に行け。内容によっては実証コードも書く
数学の知識使って、世の中にないものを生み出せ エリートがコードを書くようにならないといけないと思うよ
ただし受託開発じゃダメだけど >>946
> …のSE待遇で雇用。
羨むべきかかなり微妙じゃね? そもそもexcel vba スレでいうことじゃない >>945
???
MSに確認する話は>>923に対して君が反論出来ない状態にあるから、もう終わったものという認識だが。
君にとっては君の主張である「On Errorは正式では無い」はMSに確認していないから不明ということで自己矛盾。
俺にとってはOn Errorが正式なものでは無いとしても、どっちにしろ正式な方法はあるだろうだろうから「VBAには正式な方法が無い」という君の主張は根拠がないという俺の主張は何ら覆されていない。
そして、俺にとってはOn Errorが正式なものだろうがそうで無かろうが問題とは思っていないのでMSに確認する必要は全く無い。
しかし、君にとっては自らの主張を通すためには君がMSに確認して、しかも「方法は無い。」という回答を引き出す必要がある。 まだやるのかよw
ならお前はまず
>>857
> On Errorしかないのが正式なら同じだし、
> On Error以外に正式なものがあれば問題ないし、
のいずれかが正しいこと示せ
もちろんMSの正式な回答付きでな >>953
www
ここまでバカかよ。
俺は示す必要無いの。
確認する必要もない。
君は示す必要が有るの。
確認する必要もある。
主張する立場の違いと、対偶と逆は違うということを勉強しておいでw ついでに言っとくと、君の「正式な方法が無い」なんて主張には全く説得力が無いが、エラーを想定した処理を例に挙げたのもそうだし、どう見てもバグとしか思えない挙動を仕様とするMSが「方法が無い」などと回答するとは思えないというのは、説得力が有ると思うがねw >>954
なら>>857の主張は取り下げるのね
あと、対偶とか関係ないからw >>955
何を言いたいのか意味不明
追い詰められて饒舌になるのは低能によくある行動だけどな ああ、バカはやっぱりバカなんだなあw
今の議論は以下の図式と同じなんだよw
君「これからサイコロをふると必ず6が出る」
俺「君の主張はおかしい」
君は必ず6が出るということを理論的に示さない限り君の主張は通らない。
一方、俺は仮に必ず6が出るということが理論的に示されても問題ない。
理論的に示せていない君の最初の主張をおかしいと言っているのだから。
君がMSから「方法は無い」という回答を勝ち取っても君が自己矛盾に陥っていたという事実は変わらん。
が、そのときはVBAには正式な方法が無いというのを認めてやろう。
これが1点目。
2点目は、確かに俺は少なくとも何らかの方法があるだろうと言っている。
しかし「だろう」だし、その根拠も示している。
それに対して君は何ら反論出来ない状態だ。
つまり、君は反論するための行動を取る必要がある。
俺は君の反論待ちだ。 相手の主張を否定する立場は、自らの何かを正しいとか調べる必要は無い。
相手の主張の問題点を指摘するだけで良いんだね。
これが主張する立場の違いだ。 >>950
だよね〜。
日本企業のSEなんて、羨むような仕事にありつけることは稀だと思うし、何十年もやりたいことを続けられることはまずない
実力あるなら、googleとかも候補だよね。MSは微妙か…
英語いけるなら >>959
人に主張の根拠を要求するならお前も指摘の根拠を出せって話な
否定だからいいとか頭湧いてるのかよw >>963
だから根拠は出してるし、君の反論待ちなんだがw
根拠は2つも出してるぞ。 >>963
君の主張の問題点を指摘し、君が反論出来ないんだから仕方無いだろw >>966
> だから根拠は出してるし、君の反論待ちなんだがw
> 根拠は2つも出してるぞ。
具体的にレス番示して引用してみw
>>967
言ったはなから連投ww >>968
何でバカにそんな親切なことをしなきゃならんのか分からねえが、以下2つが根拠だ。
>>848
>>894
これに対してのお前の反論は全く意味の無い反論だ。 あと、お前が自己矛盾に陥っている点についても、お前の反論待ちなw
確定してないのに根拠もなく正式な方法が無いなどと言ってたんだからなw >>969
なんの根拠を書いてるんだよ…
お前が書くのは
> On Errorしかないのが正式なら同じだし、
> On Error以外に正式なものがあれば問題ないし、
のいずれかが正しいことの根拠な
>>848は次元数の取得の話じゃないし>>894に至ってはお前の妄想じゃねーかw
念の為にもう一度書いとく
>> 人に主張の根拠を要求するならお前も指摘の根拠を出せって話な
できないなら黙っとけ
>>970
確定してないという根拠を出せよw >>971
バーカw
問題が分かってねーみたいだから君の自己矛盾の話からいこう。
君は「正式な方法が無い」と言っているが確認していないので実際は正式な方法があるか無いか分からないという状態だ。
従って「正式な方法が無い」は間違い。
つまり確認するまでもなく君は間違ってる。
俺の主張は君の理論には間違いがあるというものだから確認する必要はない。
自己矛盾の話においては俺は正式な方法が有るなどとさえ言っていない。
自己矛盾の話とは別に「正式な方法が有るだろう」とは言ってるが、まずは自己矛盾の話を解決してからだ。
本当は一度に解決したいがアホが問題点をきちんと把握してないからしようがない。 確定してないという根拠w
確定した根拠を示さなければ確定してないということだろw
何言ってんだ?
逆の立場だったらどうなる?
「On Errorが正式な方法だ」
「その根拠は?」
「正式ではない根拠は?」
これでOn Errorが正式な方法だという結論になると思ってるなら笑えるわw ifで#N/Aのエラーが入っていなければ処理したいのですが、どう書いたらいいですか? 質問です。
あるセルに表示は日付設定で日付を入力すると
その範囲でSQLを呼んでデータを抽出するのですが
一台の端末だけ日付を例えば2019/04/25と入れると
値が2019/04/25(木)と変換されてしまいます。
50台以上ある端末で1台だけの現象ですが原因がわかりません。どのような原因がありえますか? >>977
最初からセルの書式設定が入力されている。全体ではなく一行目だけどかも見たほうが夜い
ロケールも影響するかもしれない >>973-974
何をごちゃごちゃ言ってるんだよw
人に根拠を要求するなら>>857の根拠出せよって話
簡単なんだろ?
早くしろよw >>977
一般的に、表示(書式)に影響されてはいけない
値を取得して、都合いいように変換して使う
Text(だっけ?)ではなくValueを使う >>980
言ってないよ、俺の想像
てかまだそういうツッコミしかできないのか?w >>983
お前が誰か知らんけどここまでの流れ見てて「まだ」>>980みたいなこと言ってる奴もちょっとおかしいだろw >>977
そのPCのExcelの設定だろうな。
何を考えてやっているか知らないけど、Excelのセルの書式は文字列にしておいた方が無難。
だいたい見た目を気にしている理由を聞きたい。 >Excelのセルの書式は文字列にしておいた方が無難。
さすがにそれはないw
標準で良い >>986
それはあなたが想定している使い方の場合でしょ。
質問しているひとはSQLにも触れている。Excelを中心に考えると面倒なことになるよ。 >>975
If 調べたいやつ = cvErr(xlErrNA) then >>979
ごちゃごちゃwwwwwwwwwwwwwww
ワロタwww
反論出来なくて顔真っ赤ってか?
お前が根拠を示せないことが俺の根拠なんだよw on error goto とか N-BASIC にもあったくらいだし、何をいまさら、という感じがします >>990
そのエラーがなんなのかチェックせずに、ひとくくりにして処理を続行させる構文が存在するから議論になっている。 SQLのBETWEEN句に日付を渡すんだったらセルの書式設定なんて関係ないでしょう
>>981の言う通り >>991
違うよ。
そのエラーが何なのか調べないなんて論外。
だけどエラー処理を通常処理に使うのはダメだっつう主張だったからMSだって正式な処理としてやってる話を突っ込んだら、おかしなことを言い出して、ここまで続いてる。 >>993
それは違う。マイクロソフトの説明では特定の操作時はこのエラーしか発生しないと決めつてエラー構文を使えと言ってしまっている。 >>987
具体的なことが書いてなくてよくわからない
>あなたが想定している使い方
どんな使い方だと考えてる?
SQLで使うとき、標準ではなく文字列にする理由は?
>面倒なことになる
どんな面倒なことになるのでしょう? Excel VBAのスレでは話が噛み合わないと思う。 アホくさいけど、エラーが出ないようにVLOOKUPする簡単なやり方がある。
最初に、検索値をそのまま検索される方のシートにコピペしちゃうの。
本当にアホ臭いけど。 >>997
おっさん、それじゃ値が二つできてしまう >>989
で、
> 人に根拠を要求するなら>>857の根拠出せよって話
には触れないのか?w このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 40日 2時間 42分 25秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。