X



Excel VBA 質問スレ Part60

レス数が1000を超えています。これ以上書き込みはできません。
0006デフォルトの名無しさん
垢版 |
2019/03/17(日) 01:48:38.37ID:F3UCopkF
前スレの最後の方で承認欲求モンスター共がAccessの話でマウント合戦初めて、もうみんなこのスレ要らないやって思ってたんだぞ
0009デフォルトの名無しさん
垢版 |
2019/03/17(日) 09:42:14.71ID:168XCQuT
お願いします。

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列だけ下に行きます
0010デフォルトの名無しさん
垢版 |
2019/03/17(日) 11:43:51.79ID:zQ1XyGkC
>>9
Cellsで参照してるアクティブシートのB列だけ、最終行であるべき行よりも9行下に余計な値の入ったセルがあるとかじゃない?
変な空白が入ってたり、表の欄外に他人が勝手にコメントつけてたりとかありそう
0011デフォルトの名無しさん
垢版 |
2019/03/17(日) 12:05:15.62ID:ZlmVE6mc
MsgBox Range("B" & n).Value

とか一度やってみて

同じような事が起きたことあるけど
会社のおっさん上司が白色の文字をそのセルに置いてたわ
0012デフォルトの名無しさん
垢版 |
2019/03/17(日) 14:35:17.64ID:zQ1XyGkC
コンソールの使い方知ってるならDebug.Print n とかDebug.Print Range("B" & n).Value でも良し
0013デフォルトの名無しさん
垢版 |
2019/03/17(日) 16:19:59.54ID:5mJrF7aW
>>9
正直、コードが微妙に感じる。
1行で済むだろ。

それと、ブックとかシートは余程のことが無い限り省略しない方が良い。
0016デフォルトの名無しさん
垢版 |
2019/03/17(日) 20:52:23.19ID:5mJrF7aW
>>15
sht.Cells(sht.Rows.Count,2).End(xlUp).Offset(1,0).FormulaR1C1=Sheet(2).Range("I4").Value
とかかな。
FormulaR1C1とかValueは適宜実際に併せて変えてくれ。
Sheet2のI4に式が入ってるとは思えないから両方Valueで良いような気がする。
0018デフォルトの名無しさん
垢版 |
2019/03/17(日) 23:17:32.63ID:5mJrF7aW
別に1行にすべきというわけじゃ無い。
.SelectとActiveCellが良くないということ。
あと、元の情報が無いのとスマホで書いたからブックは省略したけど、自分が組んでたら省略はしない。
0019デフォルトの名無しさん
垢版 |
2019/03/19(火) 02:31:46.42ID:vV4Rcm78
入力のあったセルの場所が分かったとしても、また同じ事が起きそう
入力させるセルと出力するセルはハッキリ分けた方がいいと思うよ
0021675
垢版 |
2019/03/19(火) 12:34:39.62ID:ipysPyU9
確実に全セル入力されてる列があるならそれを基準に使う手もアリ(例えば項番の列とか)
0022デフォルトの名無しさん
垢版 |
2019/03/19(火) 12:37:36.01ID:cTNTzw16
新しくシートを作成するコードで、
シート名をInputboxで入力させるんだけど、
もし名前が被ったときに、エラーを回避して
Subを終わらせることってできる?

シートも結構いっぱいあるから
「名前が一致したとき」にExit Sub
ってのはやりたくないんだけど…
0025デフォルトの名無しさん
垢版 |
2019/03/19(火) 13:19:11.43ID:SqXQzXb0
>>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
0029デフォルトの名無しさん
垢版 |
2019/03/19(火) 19:31:40.14ID:gEDMHfls
on errorってエラーの決め打ちじゃなくて「このエラーが出るはず」という使い方だから、他の手段があるならあまり積極的には使わない方がいいと思う
0031デフォルトの名無しさん
垢版 |
2019/03/19(火) 22:17:46.56ID:fSzJr70Z
on errorの場合はworksheets.add.nameで作ってエラー時はActiveSheet.Deleteみたいな処理にすんのかな
不測の事態が起きそうで怖いけど
0032デフォルトの名無しさん
垢版 |
2019/03/19(火) 22:26:38.38ID:4+n02oxf
シートに配置したフォームコントロールのボタンのクリックとマクロを関連付けています
この時、ボタンのテキストを取得する方法はありますか?
Application.Caller
だと名前は取得できるのですが
ボタンの名前をテキストと同じものに変更する、でも良いです
0033デフォルトの名無しさん
垢版 |
2019/03/19(火) 22:31:52.70ID:aHt3ijA4
>>16
ブック.シートをwithでくくりたい(´・ω・`)
0036デフォルトの名無しさん
垢版 |
2019/03/19(火) 23:02:44.80ID:gEDMHfls
>>35
ボタンに表示している文字の事を言ってるなら、手作業でもなんでもcaptionプロパティに入れてるはずだが
0037デフォルトの名無しさん
垢版 |
2019/03/19(火) 23:07:48.99ID:8F1IYR8J
リストボックスのリストを更新した時クリックイベントが発生するのは何故?
0046デフォルトの名無しさん
垢版 |
2019/03/19(火) 23:38:15.01ID:vV4Rcm78
少々強引だが、apiのGetCursorPos関数でマウスポインタの場所のコントロールを取得って方法もある
0048デフォルトの名無しさん
垢版 |
2019/03/20(水) 00:28:31.79ID:6ln9W50J
>>43
一見イベントハンドラですが、thisが使えない、オブジェクト渡さないイベントハンドラはハンドラと言えるのでしょうか
個人的には、ハンドラという方が逆に混乱すると思いますのであえて言っていません

>>45
うおおおおおおできましたああああああああすごい!!!!!
https://i.imgur.com/8q0Z3yb.png

>>44>>46
ありがとうございます!
0049デフォルトの名無しさん
垢版 |
2019/03/20(水) 00:31:55.82ID:6ln9W50J
あと、>>45さんの
Sheet1
というオブジェクトも気になります
sheet(1)
のエイリアスが自動的に生成されてると思いますが、MSDNでどのように調べると良いでしょうか?
0050デフォルトの名無しさん
垢版 |
2019/03/20(水) 00:32:23.83ID:vmDq6MjZ
ActiveSheet.Buttons(Application.Caller).Characters.Text でいけないかな
試してないから駄目だったらごめん
0051デフォルトの名無しさん
垢版 |
2019/03/20(水) 00:47:38.18ID:vmDq6MjZ
>>49

インデックス番号は、同じ種類のシート間に付けられる番号で、左からのシート見出しの順に基づきます。

https://docs.microsoft.com/ja-jp/office/vba/excel/concepts/workbooks-and-worksheets/refer-to-sheets-by-index-number


シートオブジェクトの移動や削除を行ったときにダイナミックにインデックスが変更されるのか、ファイル保存等の更新イベントがあるのかという細かい部分は調べてないから分からない
デフォルトのシート名がSheet & シート追加時のインデックス値になるのは経験上知ってる
0052デフォルトの名無しさん
垢版 |
2019/03/20(水) 00:58:10.12ID:+iQ33M/7
>>49
画像のボタンがSheet1に貼ってあったからそれに合わせて書いただけ
"Sheet1"っていう名前のシートのオブジェクト名がSheet1になってるっしょ
0053デフォルトの名無しさん
垢版 |
2019/03/20(水) 01:11:06.91ID:+iQ33M/7
>>51
シートのインデックスは常に左からの連番
シートの追加削除等あればもちろん都度変わる
0055デフォルトの名無しさん
垢版 |
2019/03/20(水) 02:22:30.37ID:+iQ33M/7
>>54
どこに書いてるかは知らないけど、ボタンもシートもブックもオブジェクトの指定の仕方は同じ
 オブジェクト名
 オブジェクトのコレクション(インデックス)
 オブジェクトのコレクション("名前")
好きなのを使うがよい
0056デフォルトの名無しさん
垢版 |
2019/03/20(水) 02:25:30.67ID:+iQ33M/7
MS公式でWorksheetオブジェクトに関する説明調べればどっかにあるかもねえ、知らんけど
0057デフォルトの名無しさん
垢版 |
2019/03/20(水) 11:46:18.93ID:KyvcPrHu
マクロを10時間ぶっ通しで走らせるのはよくないですか?途中で再起したほうがいいですか?
0059デフォルトの名無しさん
垢版 |
2019/03/20(水) 12:06:20.76ID:6ln9W50J
>>55>>56
ありがとうございました
もう少し調べたかったけど、疲れたので断念します

>>57
とりあえず動かして、エラーが起きなければ何も問題はない
ただ、セルを触る物を10時間も動かすとメモリエラーが起こるかも知れない

>>58
笑った
0060デフォルトの名無しさん
垢版 |
2019/03/20(水) 12:33:29.40ID:KyvcPrHu
>>59
ありがとうございます。
メモリの心配はありますが、ぶっ通しでやってみます。
0062デフォルトの名無しさん
垢版 |
2019/03/20(水) 15:56:43.40ID:1jasQYq3
だから、どういう状況で10時間ぶっとおしが必要なんだよwwwwww
マジでExcelを何に使ってるのか気になるわ。
0065デフォルトの名無しさん
垢版 |
2019/03/20(水) 20:53:54.94ID:EpI850Tv
10時間動かし続けるとなると思いつくのは
出勤時間中にwebサイトやフォルダ監視し続けて何かをキッカケに何かするみたいなのかな
0067デフォルトの名無しさん
垢版 |
2019/03/20(水) 22:53:02.96ID:1jasQYq3
ExcelVBAでパワーポイント動かしたいんですけど、
とか言われても、もう驚かんわ。
0068デフォルトの名無しさん
垢版 |
2019/03/20(水) 23:11:09.25ID:7O8FfDv3
馬鹿はそこでマクロと言い出す
更には、「教えて」「助けて」で始まり
「急いでます」「作って」と要求する
0070デフォルトの名無しさん
垢版 |
2019/03/20(水) 23:21:49.19ID:dyVQ1wUM
なんだお前ら、勿体無いな
10時間動かすなんて奇抜な事をしてくれるんだから、全力で応援するべきだろう
かなり貴重なサンプルが手に入る可能性があるのに、バカだの言って切り捨てるのはあまりに勿体無い
0073デフォルトの名無しさん
垢版 |
2019/03/21(木) 02:02:16.06ID:+l8n8fiW
肛門に穴があいたんですけど、
とか言われても、もう驚かんわ。
0075デフォルトの名無しさん
垢版 |
2019/03/21(木) 07:23:06.55ID:u3u8nbsq
>>69
むしろ楽勝の方だろ
ちょっと前にシートの内容をスライドに埋め込むとかはやったことがある
やったのはPowerShellだったけどCOM経由なら似たようなもんだし
0076デフォルトの名無しさん
垢版 |
2019/03/21(木) 10:02:44.62ID:TiVPJMex
パワーポイントでVBAって何すんの?
パワーポイントって発表用のアプリだろ。 それでVBAって需要なんてあまりあるとは思えんが
0079デフォルトの名無しさん
垢版 |
2019/03/21(木) 10:29:58.00ID:epreAi+X
例えば、気象庁のホームページからクエーリーでデータを取得し
パワポにデーター貼り付けながら、加工してそれをアニメーションで
かっこよく表示していくとか、考えれば応用はいくらでもあるだろう
0080デフォルトの名無しさん
垢版 |
2019/03/21(木) 10:37:01.43ID:epreAi+X
言葉が足りなかった、プレゼン用ではなく、情報表示モニター用にな
いくらでも機能はつけられる
0082デフォルトの名無しさん
垢版 |
2019/03/21(木) 11:20:14.60ID:TiVPJMex
まあパワーポイント自身、個人で使うことなんてないのか
でも企業でも極一部の部署しか使わないものばかりじゃん
0083デフォルトの名無しさん
垢版 |
2019/03/21(木) 11:39:33.97ID:cL16VMj6
パワポVBAで何か作ってみたいという逆需要で、発表後喋ってる間にスターウォーズのエンドロールみたいなのを流すのを昔作ったことあるなw
それ以降、私の開発現場では(個人的にも)パワポVBAは全く需要なし
WordVBAも、補助ツールとして数年に一回作るくらいかな
0084デフォルトの名無しさん
垢版 |
2019/03/21(木) 11:42:12.40ID:XMapNPTs
スライドシェアとか見てもかったるいだけだからな
大昔の改行しまくりのテキストサイト思い出す
0085デフォルトの名無しさん
垢版 |
2019/03/21(木) 11:45:36.88ID:epreAi+X
なんか、ExcelのVBAでパワポを操作するのと、パワポのVBAを同一で語ってるやついるか?
ちなみにWordのVBAはいくつか作って今も使ってるけど、まあ対比で言えばExcelの
100分の1程度だな
0086デフォルトの名無しさん
垢版 |
2019/03/21(木) 12:40:04.02ID:epreAi+X
>>84
>スライドシェア
何だよ、かったるいのしか見たことないんだろ
>テキストサイト
何もわからんバカなのね(笑)
0090デフォルトの名無しさん
垢版 |
2019/03/21(木) 13:01:18.94ID:epreAi+X
自分では何もできないくせに、人の作ったものは全力で否定するカスいるな
生きてる必要あるんか?・・ってかどうなの?(笑)
0093デフォルトの名無しさん
垢版 |
2019/03/21(木) 18:38:57.53ID:jb0c41ul
>>75
そういう問題か?
PowerPointなのにPowerPointVBAを使わずにExcelVBAという所が驚きの対象なんじゃないの?
0096デフォルトの名無しさん
垢版 |
2019/03/21(木) 19:40:57.90ID:u3u8nbsq
>>93
Excel VBAで扱うのとPowerPoint VBAで扱うのはたいして変わらんよ
どっちから制御するかだけの問題
0097デフォルトの名無しさん
垢版 |
2019/03/21(木) 21:02:50.21ID:UMX0gRc1
他アプリから制御するのはいちいちアプリケーションインスタンスを起動しなきゃならんのが糞面倒
パワポだけで済むならパワポにする
0098デフォルトの名無しさん
垢版 |
2019/03/21(木) 21:15:08.25ID:HmxAO54P
VBAを使ってる人って御老人のイメージだけど合ってる?
0101デフォルトの名無しさん
垢版 |
2019/03/22(金) 08:13:43.08ID:s6oj+Xdm
>>96
PowerShellなんて言い出す奴だからわからないんだろうな。
大して変わらんのなんて当たり前だろ。

PowerPointVBAからExcel.Application使って、そのExcelオブジェクトからPowerPoint.Application使ってを10回繰り返した所で変わらんけどアホ丸出しなのが分からんのかね。
0103デフォルトの名無しさん
垢版 |
2019/03/22(金) 09:00:55.13ID:7FUJ+LGH
パワーポイントVBAって色々と勝手が違って面倒臭かった記憶があるけどな
そもそもエクセルやワードと違って空のアプリケーションインスタンス作れないんじゃなかったっけか
ファイル実行時に読み取りパスワードを指定するときもファイル名と連結する必要があるし
0104デフォルトの名無しさん
垢版 |
2019/03/22(金) 09:13:17.49ID:s6oj+Xdm
>>102
バカにはわからない。
というか例がアホ過ぎる所がミソなんだがw

そんなアホなことをするのかというのが驚きの対象であって、大して変わらんかどうかなんて頓珍漢な話はどうでもいい。
0105デフォルトの名無しさん
垢版 |
2019/03/22(金) 09:35:36.14ID:wT5mo1++
いや、当たり前なんてみんな知ってる(>>93を除くw)のに今更何を言いたいんだってこと
バカの上塗り?
0106デフォルトの名無しさん
垢版 |
2019/03/22(金) 10:34:34.64ID:1snpMqV+
結局、ワッチョイ抜きにするから荒れるんだろ
誰がどう主張したいのかわからなくなる
ワッチョイが嫌な奴がこのスレ建てたんだろうな、立て直すか?
0110デフォルトの名無しさん
垢版 |
2019/03/22(金) 13:05:17.10ID:xmRgZnoh
OLEアプリケーション連携の話になると途端に荒れるのやべーな
前も下らんAccessの話でクッソ揉めてたし
他アプリ連携のスキルをプライドの拠り所にしてる人が結構いるのかな
凄いことやってる風に見てもらえるときあるし分からんでもないけどさ
0114デフォルトの名無しさん
垢版 |
2019/03/22(金) 17:56:53.75ID:DJ7JSKt5
会社でブラウザの検索結果のページで
いっぱいURLのリンク先が表示されるのですが
そのたくさんのURLのそれぞれを開いたページ(毎回違うけど50ページくらいある)のデータを取得するVBAのコードを考えています。
IEの定番のCreateObject("InternetExplorer.Application")とDOMツリーの方法で実現できてはいるのですが
1つ1つページを開いて取得して閉じる、という作業がネットワークの遅さで異常に時間がかかります。
この複数のページを同時で取得する方法ってないでしょうか?よく知らないけどJavaでいうスレッドみたいな?
0115デフォルトの名無しさん
垢版 |
2019/03/22(金) 18:05:28.43ID:wNvbYX88
いまどきマルチポストに眉をしかめるような時代遅れの人間なんていないよ、ね?
0116デフォルトの名無しさん
垢版 |
2019/03/22(金) 18:13:30.85ID:f/f2Qmpp
>>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
0117デフォルトの名無しさん
垢版 |
2019/03/22(金) 18:19:28.87ID:wCnCSK0y
>>114
どっかのサーバーでPHPなどで書けば
一度に取得を投げて戻ったイベントで処理を書く
ネットワークに依存しないし負荷はサーバー
詳しくはPHPなどの質問スレッドでしろ
0118デフォルトの名無しさん
垢版 |
2019/03/22(金) 18:37:45.64ID:wCnCSK0y
>>116
VBAでは書いたことないけど
リクエストを配列にして一度に投げ
戻った奴から処理する
普通はイベントで受ける
0119デフォルトの名無しさん
垢版 |
2019/03/22(金) 19:06:06.24ID:DJ7JSKt5
>>116
そのCreateObject("MSXML2.XMLHTTP")はなんでしょうか?
str2にはたしかに入ってますが"https://www.yahoo.co.jp/";にしたら空欄になってしまいます。
HTMLページは膨大なソースなのでDOMツリーで必要なものだけを取り出したいのですが、それはできますか?

>>117
PHPって知らないのですが簡単に学習できるのですか?

>>118
VBAでイベントってどうやって受けるのですか
0122デフォルトの名無しさん
垢版 |
2019/03/22(金) 19:35:09.00ID:wCnCSK0y
>>119
PHPをおけるサーバーの契約まあ無料のところも有るだろ
学習は無料でツールをダウンロード出来る
比較的簡単な言語でいろいろソースもあるが
VBAは超簡単な方だからな

VBAは特定のイベントしか受けられんのかな
普通VBやc++やPHP などでコーディングするときは
イベントで受ける
0126デフォルトの名無しさん
垢版 |
2019/03/22(金) 19:46:10.91ID:s6oj+Xdm
>>125
これ、マルチプロセスだけどな。
別にしんどくない。
ExcelVBAでマルチプロセスやるときはExcel.Applicationを複数作ってやるのが普通だと思うけどね。

最終的に速度どうにもならないときはマルチプロセスにする。
0127デフォルトの名無しさん
垢版 |
2019/03/22(金) 19:51:03.17ID:s6oj+Xdm
>>123
10時間ぶっ通しのVBAのようにアホ丸出しの例としてExcelVBAからPowerPoint動かすって話だろ。

>>75のような当たり前の話じゃないんじゃないの?
という問い掛けが>>93だろ。
0129デフォルトの名無しさん
垢版 |
2019/03/22(金) 20:11:29.06ID:f/f2Qmpp
>>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しかないなら頑張れるけど、他言語だと瞬殺と思うとやる気が削がれる
0130デフォルトの名無しさん
垢版 |
2019/03/22(金) 20:17:17.71ID:PU7qmvYu
>>127
> 10時間ぶっ通しのVBAのようにアホ丸出しの例としてExcelVBAからPowerPoint動かすって話だろ。
その例がアホって話だろw
0133デフォルトの名無しさん
垢版 |
2019/03/22(金) 22:41:13.31ID:DJ7JSKt5
レスありがとうございます。

>>122
なるほどそうですかありがとうございます。
いまの直近の問題が解決したらあとで勉強してみます。

>>124-125, >>129
DOMができたとして
50個くらいある複数のURLの1つ1つに
Do While httpReq.readyState < 4
DoEvents
Loop
で時間待ちするのが問題なんです。
1つあたり1分近くかかるから。
一気に全部同時にやれないかなと。
0135デフォルトの名無しさん
垢版 |
2019/03/22(金) 22:54:22.06ID:CAtaruvO
>>134
PowerShellのプログラミングってめっちゃめんどくさい
タイプ量が半端なく多くなる。 大嫌い
0136デフォルトの名無しさん
垢版 |
2019/03/22(金) 23:08:19.23ID:E2ofkEmJ
まとめてダウンロードしてファイルに保存
その後一つずつ解析するべき
domなんて使わなくても正規表現で何とかするべき
0139デフォルトの名無しさん
垢版 |
2019/03/22(金) 23:36:27.88ID:f/f2Qmpp
>>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
0140デフォルトの名無しさん
垢版 |
2019/03/23(土) 00:08:10.78ID:GJYnZjvR
If httpReq.readyState < 4 Then flg = True
If httpReq2.readyState < 4 Then flg = True
片方で抜ける
配列ぐらい使えよ
0142デフォルトの名無しさん
垢版 |
2019/03/23(土) 00:41:36.68ID:sBAP9hOD
>>140
・普通に逆だった、スマン
・pushくれ。redimしなくていい素直なpush
・なんかテキトーにやってもうまいことやってくれる非同期欲しい
・eachで自動生成されるindexくれ
・インクリメントくれ
ってことでうんこコードになったわ、すまん

>>141
それは分かるし書きたいんだけど
documrnt.ready(function(){}〜
的な奴が分からなかった
0143デフォルトの名無しさん
垢版 |
2019/03/23(土) 00:42:04.83ID:sBAP9hOD
>>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
0144デフォルトの名無しさん
垢版 |
2019/03/23(土) 00:42:09.03ID:sBAP9hOD
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
0145デフォルトの名無しさん
垢版 |
2019/03/23(土) 00:45:06.99ID:sBAP9hOD
>>143までは問題ないと思う
>>144でグダグダになった。
パフォーマンス的にはそんなに変わらんだろう。大量にあるとメモリにも影響してきそうだけど
0146デフォルトの名無しさん
垢版 |
2019/03/23(土) 01:11:21.36ID:GJYnZjvR
If httpReq(index_foo).readyState < 4 Then flg = True
コレじゃ1つでも読み込めたらループから抜ける
set したのはリリースする

処理がおもいのは
html(index_html).write httpReq(index_html).responsetext
これだろ
0147デフォルトの名無しさん
垢版 |
2019/03/23(土) 01:15:54.12ID:GJYnZjvR
同じ個数配列で使うものはTypeを使って構造体にしろよ
構造体を配列で取る
redimぐらい使えよ
0148デフォルトの名無しさん
垢版 |
2019/03/23(土) 01:39:28.59ID:sBAP9hOD
>>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は正直もう無理や
0149デフォルトの名無しさん
垢版 |
2019/03/23(土) 02:18:04.14ID:GJYnZjvR
構造体を使うのは処理を分かりやすくするため
リリースは
Set オブジェクト変数 = Nothing
感覚的に難しいかな
0150デフォルトの名無しさん
垢版 |
2019/03/23(土) 04:53:32.37ID:4V4ijAbJ
>>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 になるだけ
0151150
垢版 |
2019/03/23(土) 05:31:12.29ID:4V4ijAbJ
漏れなら、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つのエラーで、すべての処理が止まるし、やってられない!
0152デフォルトの名無しさん
垢版 |
2019/03/23(土) 05:42:27.10ID:GJYnZjvR
VBA以外の構造化言語で書けば綺麗に書ける
まあ出来るだけ近いように書くのがよいが
まあ所詮俺もこんな処理ではJavaかPHPでしか書かない
まあ
0154デフォルトの名無しさん
垢版 |
2019/03/23(土) 08:17:41.71ID:Rd0MSm4a
たぶん、構造体 = Type = 型 = クラス っていうアナロジーで考えてたんだろうね
0155デフォルトの名無しさん
垢版 |
2019/03/23(土) 09:27:10.21ID:GJYnZjvR
まあ、コードも間違ってるし書き方も良くない
配列すら得意でないようなので・・・
あと、せっかくExcelを使ってるんだから
Url等の情報はセルから読み込むよな
0157デフォルトの名無しさん
垢版 |
2019/03/23(土) 11:18:14.30ID:sBAP9hOD
あぁvbaってclassと構造体両方あったのか

>>155
コールバックの部分だけはマジで分からんかった
どうやって書くんだ

>>150
クソ言語乙
0158fusianasan
垢版 |
2019/03/23(土) 11:19:15.45ID:j1qksDnK
Debug.Print("test")
0159デフォルトの名無しさん
垢版 |
2019/03/23(土) 11:39:13.69ID:uLwnX5A6
>>130
だから、お前が真面目に出来るとか言ってるのは、真面目な話じゃ無くてアホな話だろと言ってるんだが。

アホな例を出さなかったらそれこそアホだろw
0160デフォルトの名無しさん
垢版 |
2019/03/23(土) 11:47:22.03ID:4ZM/hDcb
>>159
はあ?
>>67
> やろうと思えば出来んでもないのか
って書いてるからやること自体は難しくないって書いてるだけだぞ
そもそもExcel VBAでPowerPointを操作するのがアホとか言ってるわけじゃないことも理解できてないのかよw
0161デフォルトの名無しさん
垢版 |
2019/03/23(土) 11:52:28.25ID:/daUWZWt
>>157
Excelでコールバックで受けたいって言っても、やったことないな
所詮そんなにクリティカルなルーチンを書く環境じゃないだろ
そんなことしなくても、ステータスが読み込めた物から処理して
全ての配列が処理出来たら終わればいいぐらいのコーディングだな
自分で書かなきゃ意味ないぞ
0162デフォルトの名無しさん
垢版 |
2019/03/23(土) 12:03:01.48ID:jhd39dfA
>>160
無能の相手はほどほどで

>>161
やっぱり難しいよな
>全ての配列が処理出来たら終わればいいぐらいのコーディングだな
これで書いたよ
DOM部分はどうせ瞬殺だからまとめて良い
0163デフォルトの名無しさん
垢版 |
2019/03/23(土) 12:12:55.71ID:/daUWZWt
>>162
他の言語で簡単にかけるって言っても
所詮その言語で提供されたルーチンを使うだけだから
適した言語で書けば比較的簡単にかけることは確か
コーディングに関しては直感で書いたからもう少し読んでみよう
0164デフォルトの名無しさん
垢版 |
2019/03/23(土) 12:16:35.94ID:/daUWZWt
まあ、所詮夜勤から帰って書き込みしてるから
午後は、お酒が進むんでまあ気にするな
0165デフォルトの名無しさん
垢版 |
2019/03/23(土) 12:44:05.74ID:4ZM/hDcb
>>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
' 続く…
0166デフォルトの名無しさん
垢版 |
2019/03/23(土) 12:44:29.37ID:4ZM/hDcb
' 続き
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
0167デフォルトの名無しさん
垢版 |
2019/03/23(土) 14:51:45.33ID:uLwnX5A6
>>160
いや、だから...
それに>>67じゃなくて>>69だろ。

やろうと思えば出来るけど、驚いてるのはそこじゃ無いだろという指摘が理解できなかったから>>96みたいな頓珍漢なことを言ったんだろ。

じゃなかったら>>96みたいに噛み合わない発言にならない。
0168デフォルトの名無しさん
垢版 |
2019/03/23(土) 14:57:22.48ID:jhd39dfA
>>165
俺も使わなくてもいいと思うが
上でコールバックコールバック言ってたからな

>>167
お前に何の能力もないのは分かったから落ち着け
0170デフォルトの名無しさん
垢版 |
2019/03/23(土) 19:02:03.41ID:4V4ijAbJ
157デフォルトの名無しさん2019/03/23(土) 11:18:14.30ID:sBAP9hOD

>>150
クソ言語乙

142デフォルトの名無しさん2019/03/23(土) 00:41:36.68ID:sBAP9hOD

こいつは荒らしじゃね?
相手しない方がよい
0172デフォルトの名無しさん
垢版 |
2019/03/23(土) 20:10:53.10ID:VsaUG60l
>>170
そのruby信者が荒らしだぞ
あらゆるスレで「rubyなら〜」と言ってrubyを貶めしている
pythonスレではスレタイにruby禁止とまで入る始末
0173デフォルトの名無しさん
垢版 |
2019/03/23(土) 22:49:02.19ID:XxYiFSG+
コールバックって何?
ググると、関数の引数に渡す関数って出てくるけど、
それって、複数の処理を、
↓こうやって横着して1行に書くのと何が違うのかわからん。

a = Replace(Replace("あいうえお", "あい", ""), "えお", "")
0174デフォルトの名無しさん
垢版 |
2019/03/23(土) 22:57:17.29ID:VsaUG60l
>>173
a関数の処理が終わった場合、a関数の引数を受け取ってb関数を自動的に開始する・・・という処理
非同期、特にスクレイピングが多重で続くような場合は非常に強力
https://www.sejuku.net/blog/67743

使う場面が分からないのは、使う必要が無いと思って良い
jsだと死ぬほど使うが、EXCELで使う事はまずない
0175デフォルトの名無しさん
垢版 |
2019/03/23(土) 23:43:32.78ID:vBZJiXyX
VBAでコールバックを実装しようとしたら、 Application.Runを使うかクラスモジュールでメソッド書いてCallByName関数で呼び出すようにするかって感じになるんかね
0177デフォルトの名無しさん
垢版 |
2019/03/23(土) 23:57:25.89ID:49H4PHbP
>>175
ごめんVBAでコールバックを「実装」か。
VBAの関数をコールバックするにはどうするかという問題と勘違いした
0178デフォルトの名無しさん
垢版 |
2019/03/24(日) 00:19:26.62ID:lQI3nZvh
>>177
そう、外部プログラムにVBA側の関数ポインタを渡す話じゃなくて、受けとる側の処理の書き方
0179デフォルトの名無しさん
垢版 |
2019/03/24(日) 00:40:55.67ID:MjUvfGmD
クラスのメソッドとしてコールバック関数を実装してinterfaceか遅延バインディング使えばいい
0180デフォルトの名無しさん
垢版 |
2019/03/24(日) 07:46:43.58ID:myNgr9GS
>>173
> a = Replace(Replace("あいうえお", "あい", ""), "えお", "")
これは外側のReplace()に内側のReplace()の「結果」を渡してる
コールバック関数は内部で呼ぶ関数を変えたい時に使う
例えば図形を描くルーチンがあったとして出力先を色々切り替えたいとかだと出力する関数を自体を渡す
やり方はこの辺りを参考にして
https://qiita.com/rai_suta/items/c07b22130b302682b729
0181デフォルトの名無しさん
垢版 |
2019/03/24(日) 11:58:57.43ID:DVu1xjKe
>>179
やっぱりAddressOfの値を受け取ってそれをAPI経由で実行するのがいいんじゃないか
ただしシグネチャは一定とする
0183デフォルトの名無しさん
垢版 |
2019/03/24(日) 12:32:32.58ID:4ve/ST91
そんな事をエクセルVBAでやる意味って何?
何が何でもVBAって馬鹿のひとつ覚えって言うんだよ
0184デフォルトの名無しさん
垢版 |
2019/03/24(日) 12:35:25.20ID:aL5blMH8
>>183
他言語を覚えなくて良いのは大きなメリット
環境構築、記述方法、言語仕様
この辺全部覚えなくて良いのはデカイ
特にvbaはプログラマーじゃなく事務員が使ってる場合も多いので、環境構築が苦手な事が多々ある
0185デフォルトの名無しさん
垢版 |
2019/03/24(日) 13:44:54.25ID:PQbtijKV
ノコギリで刺身切ろうとして包丁使えよって言われて包丁の使い方覚えなくていいのはメリットって言ってる構図
0188デフォルトの名無しさん
垢版 |
2019/03/24(日) 14:07:22.16ID:OZ1kvGmt
他言語を覚えなくて良いって発想がどうかと思う
適材適所で効率良くするのも仕事だし
死にゆく言語の代表がVBA
0189デフォルトの名無しさん
垢版 |
2019/03/24(日) 14:08:05.28ID:myNgr9GS
>>185
流石に頓珍漢すぎ
出刃包丁で刺し身切ろうとしたら刺身包丁買ってこいってゴネてる奴がいるだけ
0190デフォルトの名無しさん
垢版 |
2019/03/24(日) 14:30:37.07ID:aL5blMH8
>>187
根拠もなく、何を見てそう思ったの?

>>188
>他言語を覚えなくて良いって発想がどうかと思う
>適材適所で効率良くするのも仕事だし
これは同意
俺も効率化のためにphpとjsはある程度覚えてるわ

ただ、人に勧めるのは現実的に厳しい面がある
たまーに出てくるスクレイピングのためにphp覚えろって言うのはなかなか酷
時間がかかって良いならウンコみたいなコードでも処理できるしな
ここの人でもサーバー=レンタルサーバーって発想した人いるけど、
スクレイピングのためにphp動かすならxamppで良い

>死にゆく言語の代表がVBA
ずっと言われてるけど全然死なないので俺も困っている。せめてバージョンアップして
0193デフォルトの名無しさん
垢版 |
2019/03/24(日) 14:43:19.68ID:dT6Xb8jy
>>192
だけもクソも、現在推奨されているExcelのプログラミングインターフェイスはアドインのみだよ
VBAは廃止予定のレガシーな機能であり、使用は推奨されない
0194デフォルトの名無しさん
垢版 |
2019/03/24(日) 14:53:50.44ID:aL5blMH8
>>193
それは知りませんでした、申し訳無い
そのソースってどこかにありますか?

vbaがやっと進化するのか
0195デフォルトの名無しさん
垢版 |
2019/03/24(日) 15:03:11.84ID:A9z4XFqj
自分の現在分かる範囲で創意工夫してやろうとするのは良いことで出来ちゃってるんだろうけどこの先ずっと出来るかは不明
新しいのを取り入れないとダメ
特にエクセルVBAでやる必要のないのがあるなら勉強のチャンスなのに古いのでやろうとするから進歩しない
0197デフォルトの名無しさん
垢版 |
2019/03/24(日) 15:19:49.80ID:Mw3X0nZC
>>191
エクセルのマクロもVBAじゃなくてjavascriptになるのか?
てか、もうなってるの?
ボタンと押したときの動作とかもすでにjavascriptで書くようになってる?
0199デフォルトの名無しさん
垢版 |
2019/03/24(日) 15:39:49.96ID:y9CSgW5G
ここは言語スレじゃなくてExcel VBAスレなんだが
バイクやチャリの板で日本縦断の準備とか注意点についての質問レスに対して飛行機使えよ馬鹿とレスしてるやつ居たらアホだろ
0202デフォルトの名無しさん
垢版 |
2019/03/24(日) 16:01:00.66ID:dT6Xb8jy
>>201
マクロは単純に廃止だろうね
知らないかもしれないが、昔はVSなどMS製品には大抵VBAマクロが入ってたんだよ
どんどん廃止されて、今や残ってるのはOfficeだけ
0203デフォルトの名無しさん
垢版 |
2019/03/24(日) 16:08:12.38ID:Mw3X0nZC
>>202
ん? マクロ自身が廃止になるのか?
マクロは残るがVBAじゃなくてjavascriptになるのか、って聞いたんだが
0204デフォルトの名無しさん
垢版 |
2019/03/24(日) 16:19:40.92ID:aL5blMH8
>マクロ自身が廃止
上でそう言ってたけどソースが見つからない
ただの噂かも

>VBAじゃなくてjavascriptになるのか
現状はjsでもアドインを作れるようになっただけ

俺もvbaは廃止しないと思う
0205デフォルトの名無しさん
垢版 |
2019/03/24(日) 16:19:49.86ID:rXU7uH3v
だってVBAってセキュリティ的にヤバいし
エクセルファイルに偽装してマルウェア的なかなりの事までやれちゃうから廃止で良いよ
0206デフォルトの名無しさん
垢版 |
2019/03/24(日) 16:23:34.70ID:Mw3X0nZC
>>204
>俺もvbaは廃止しない

絶対あり得んよね。 今までの過去の資産がどれだけあるか
それを作ってるのは理系のプログラマじゃなくて文系の経理の女の子も相当いるからな
0207デフォルトの名無しさん
垢版 |
2019/03/24(日) 16:46:14.04ID:cASdygc2
全くバカばっかりだ。
その場で最適なのを選択すりゃ良いんだよ。

レガシーとか言ってるバカは救いようがない。
VBAで簡潔出来るならその方が良いんだよ。
VBScriptでファイル選択ダイアログを使う時にExcel.Application使うなんてのは本当はやりたくないけど他にうまい方法が無いから仕方ない。
このやりたくないというか筋が悪いと感じることが出来ない奴は結局駄目だね。

レガシーなのはその通りだが、それで別言語使って筋悪プログラミングしてたら意味が無い。
0208デフォルトの名無しさん
垢版 |
2019/03/24(日) 17:13:35.45ID:cASdygc2
“Office アドインはVBAやVSTOを置き換えるものではないので(現時点では)、「何でこんな簡単なこともできないの!?」とイライラしてはいけない”だとさ。
0210デフォルトの名無しさん
垢版 |
2019/03/24(日) 17:43:12.27ID:bibhGphx
とりまIEが消えればVBAでスクレイピングは消える
OS依存の負債を作りかねない機能はどんどん省いて欲しいね
0211デフォルトの名無しさん
垢版 |
2019/03/24(日) 17:58:19.82ID:XiACCcaf
セルの中に、そのセルが存在するシート名を抜き出す関数の定義ってどんなのがある?
シンプルで分かり易い、エクセルの版に依存しないのが良いな。
0213デフォルトの名無しさん
垢版 |
2019/03/24(日) 18:03:25.87ID:APHXkx0k
言ってみ
0219デフォルトの名無しさん
垢版 |
2019/03/24(日) 23:27:39.47ID:APHXkx0k
スクレイピングならJSで良いと思うけど何が何でもVBAなの?
何か幼少期に家庭的な問題でお父さんから虐待されてたとか?
0220デフォルトの名無しさん
垢版 |
2019/03/24(日) 23:39:48.89ID:3fqiTHWE
pythonスレのスレタイに、ruby禁止と入れて、スレ立てしている奴は荒らしだよ

lodash 禁止とか、jQuery 禁止とか、ライブラリの話は禁止とか書いて、
テンプレを勝手に改変して、スレ立てしている奴は荒らし

色々なスレを荒らしてる

相手をすると居つくから、相手をするな!
0222デフォルトの名無しさん
垢版 |
2019/03/24(日) 23:46:49.32ID:3fqiTHWE
スクレイピングのために、xampp, PHP を学ぶのはキツイ。
Ruby, Nokogiri, Selenium WebDriver で良い。
JavaScript, jQuery も呼び出せるし

VBScript のスレ主のピッコロ大魔王のように、
VBScript, PowerShell で、.NET のライブラリを使って、5ch をスクレイピングする猛者もいるけど、これもキツイ

書きやすいのは、やっぱりRuby!
0224デフォルトの名無しさん
垢版 |
2019/03/25(月) 00:01:34.20ID:PcSty2cw
スクレイピングってその分野なら必須なのでVBAなんて低速非効率でするなんて馬鹿げてる
0226デフォルトの名無しさん
垢版 |
2019/03/25(月) 00:44:08.18ID:hbWmkRbh
極めると魔法使いになれる
0227デフォルトの名無しさん
垢版 |
2019/03/25(月) 12:33:19.91ID:O3TyiYmg
バカだよなあ。
どんな言語でも出来るがVBAでやるのが最適な場合の質問だろ。
VBAのスレなんだから。

スクレイピングのためにxampp,PHPを学ぶんだよ。
それが最適なら。
Rubyが最適ならRubyでやれ。

でもここではVBAが最適という前提。
オマエの能力が低くてVBAで答えられんことなんか知らん。
0228222
垢版 |
2019/03/25(月) 23:50:42.64ID:mW0SiMKO
スクレイピングのために、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・テキストファイルに、保存しちゃダメなのか?
0231デフォルトの名無しさん
垢版 |
2019/03/26(火) 01:19:51.23ID:LqY+kMaC
スクレイピングの速度を上げすぎるとDoSと勘違いされない?
pythonとかならちゃんと犯罪にならないレベルで収まるよう対策されてるの?
0232222
垢版 |
2019/03/26(火) 02:40:19.99ID:gZH84WWp
wget が、再帰的クローラーのコマンドだけど、オプションでwait 時間も設定できる。
wgetの方が、curl よりも高機能

xampp には、Apache が含まれているから、web サーバーも立てたいのかなと思って
0234デフォルトの名無しさん
垢版 |
2019/03/26(火) 09:52:19.15ID:6lKUP98X
バカは自分の無能を言い訳に相手の望まない案を提案する。

誰もRubyでやってくれなんて言ってないんだが。
0235デフォルトの名無しさん
垢版 |
2019/03/26(火) 09:56:34.73ID:YksIzQQu
VBAを覚えても馬鹿にされるだけだしVBA程度でプログラミング出来ますって言えないし
本当に辛いよな
0236デフォルトの名無しさん
垢版 |
2019/03/26(火) 10:13:52.38ID:uoYW3oSf
>>235
>VBAを覚えても馬鹿にされるだけ
どこで?
これぐらいは基本スキルと思う

>VBA程度でプログラミング出来ますって言えない
誰に大して言うの?
vbaは一般事務や営業が楽するためのツールだよ
vbaプログラマーなんて滅多にいない
0237デフォルトの名無しさん
垢版 |
2019/03/26(火) 11:33:39.48ID:HkFlKNPk
昔は同時接続5つくらいまでみたいなマナーのようなのがあったが、今はどうなの?
0238デフォルトの名無しさん
垢版 |
2019/03/26(火) 11:43:27.57ID:v6BkG2hM
>>236
そりゃそうだ

ところで他言語連携って、A言語で作ったライブラリをB言語から呼び出すパターンと、
時間的同期を意識しなくていいバッチ的なももの組み合わせみたいなものしかイメージないんだけど、
イベント連携しながら運用するようなパターンもよくあるの?
0239デフォルトの名無しさん
垢版 |
2019/03/26(火) 12:18:27.89ID:uoYW3oSf
>>237
図書館のサーバーに大してかなり気を使ってスクレイピングしたにも関わらず、電子計算機損壊になった例もある
どこまでokとかは言えない
0240デフォルトの名無しさん
垢版 |
2019/03/26(火) 12:32:19.25ID:6lKUP98X
>>235
いや、普通に言うけどね。
C、C++、Java、VBAとかって。
それに、VBAを使うべきじゃないと言う時もある。

でも、ここで他言語のことを言う奴ってVBAの方が完全に良い場合に他のが良いとか言う無能が多いからなあ。
0246デフォルトの名無しさん
垢版 |
2019/03/26(火) 12:55:18.22ID:DPMd1MEr
VBAのエディターにはVSみたく行番号を表示する機能は標準では備わっていないのでしょうか?
0249デフォルトの名無しさん
垢版 |
2019/03/26(火) 13:16:03.76ID:DPMd1MEr
>>247
サンクス

VSと比べていろいろと中途半端ですね。

C#でこれまではずっと開発してましたが
Excel台帳ベースのシステムを組む事になったので
今回は、VBAで開発してます。

大体のことはVBAでできるけど、本格的な開発はやはりVS使わないとダメですね。
0250デフォルトの名無しさん
垢版 |
2019/03/26(火) 16:55:11.90ID:LqY+kMaC
>>249
ワークシートなどを含むExcelオブジェクトはVSからでも普通に読み書き操作できるぞ
使っていいんならVSで開発すればいい
0251デフォルトの名無しさん
垢版 |
2019/03/26(火) 17:24:40.03ID:DPMd1MEr
>>250
ちょっとした文字列操作とかスクレイピングだから
VBAの方が楽かな〜と思って今回数年ぶりにVBAいじってます。
0253デフォルトの名無しさん
垢版 |
2019/03/26(火) 18:42:15.15ID:uoYW3oSf
・スクレイピングは深夜にcron+phpで行ってサーバー上に保存
・vbaはその結果を取得
の二段構えが楽と思うけどな

文字列操作はどんな言語でもなんとかなるやろ
EXCELに入れるとunicode周りが死ぬけど
0255デフォルトの名無しさん
垢版 |
2019/03/26(火) 18:57:02.87ID:uoYW3oSf
どうなんだろうな
俺はもうスクレイピングなんかに多言語勉強したくないから、cronからphp叩いてどうのこうのしている
vbaはもう完全に後始末で、骨拾うだけ
0256デフォルトの名無しさん
垢版 |
2019/03/26(火) 20:15:40.62ID:OL2Ik/OA
スクレイピングの主役は通信じゃない
winsockでもwgetでもbitsadminでも良いから取ってきたファイルをどうするか教えてくれよ
0258デフォルトの名無しさん
垢版 |
2019/03/26(火) 21:16:14.33ID:IZpVJLyd
んなもん2段階認証とかじゃなければセッションなりクッキー投げるだけやん
取ってきたファイルはパーサーに食わせるなり正規表現でゴリゴリするなりだけど
そのどちらもVBAはとても苦手な分野やで
0259デフォルトの名無しさん
垢版 |
2019/03/26(火) 21:25:26.00ID:/NHGfRej
認証とかhtmlパーサとかJSエンジンとか
大抵はその辺をIE操作で賄うモノだと思ってたけど自分の認識が違ったらしい
0261デフォルトの名無しさん
垢版 |
2019/03/26(火) 22:18:57.15ID:uoYW3oSf
basic認証なんかは瞬殺だけど、
セッションとかクッキーになると、諸々含めてphpにした方が良い。というかchrome拡張が一番楽
httpsやらUA絡みだすと小生無理!ってなる。
0263222
垢版 |
2019/03/26(火) 22:45:37.41ID:gZH84WWp
ログインするなら、Ruby, Selenium WebDriver で、ブラウザを自動操作すべき。
iMacros でも良いけどさ

>>222
に書いてある通り
0265デフォルトの名無しさん
垢版 |
2019/03/26(火) 23:28:35.45ID:Q3YSvizA
Excelマクロについて全くの無知でみなさんにお伺いしたいのですが、マクロで画像のような操作は可能でしょうか?会社の書類作成事務の効率を上げたく…
スレ違いでしたらすみません。https://i.imgur.com/xF5hatf.jpg
0268デフォルトの名無しさん
垢版 |
2019/03/26(火) 23:53:51.99ID:DPMd1MEr
今更ではあるけれど、C#やVB.netで開発しなくても
だいたいVBAでできるな〜

結局データの保存先がDBなどではなく
Excelとかだから最初からVBAで開発しておけばよかったと若干公開
0269デフォルトの名無しさん
垢版 |
2019/03/26(火) 23:55:07.78ID:KxwbGcFA
みんながExcelを起動しているとき、
俺の画面だけJexcelだったら格好いいのに・・・。
0273デフォルトの名無しさん
垢版 |
2019/03/27(水) 08:05:19.82ID:qB5RyyD6
>>239
もし岡崎図書館のことを言ってるんなら、一度は逮捕されたけど結果は不起訴で、逆にシステム管理者側が謝罪までしてるんだけど
0275デフォルトの名無しさん
垢版 |
2019/03/27(水) 08:30:41.26ID:/DQA1U1P
>>245
>>272
コミュニケーションが取れない人なのか、知ったかなのか、それとも趣味でやってるだけなのか知らないが、そもそも図書館事件と言えば岡崎市の事件のことだろ。

本当に事件のこと知ってるのか?
図書館側のシステムに問題があったとしても、了解を求めることなくこういうことをするのが問題なのはマナー上当然のことだろうに。

そもそも、ここで言われてるのが岡崎市の事件と全く同じようにアクセスするわけでないのは当然だから、大量アクセスを否定した話にすらなっていない。
こちらの行為について迷惑だと判定するのが向こう側なのに、こっちの勝手な判断に従って了解を求めることすらしないじゃ趣味といわれても仕方ない。

>>239に対して許可を取るのが普通という発言を受けて「API作ってくれ」と連絡するってのが、全く意味が分からん。
コミュニケーションって分かる?
相手にこちらが何をしたいかも伝えずにAPIの話をするんかねw
0276デフォルトの名無しさん
垢版 |
2019/03/27(水) 08:32:19.22ID:/DQA1U1P
>>273
有名な事件だから顛末はすべて分かってるけど、これ以降、連絡するのはマナー上当然という流れになってると思うが。
0277デフォルトの名無しさん
垢版 |
2019/03/27(水) 08:33:13.53ID:g4NvvqYE
>>275
お前、何いってんの? 図書館の問題なんか関係ないわ。そんな話はしていない
びっくりしたわ
コミュニケーションが取れない人ってお前自身じゃね
0278デフォルトの名無しさん
垢版 |
2019/03/27(水) 08:50:55.41ID:qyHdViw9
コミニュケーションつかマウント取りたいだけ。
マウント取るため勝手に論点ずらし、話題変更。
0280デフォルトの名無しさん
垢版 |
2019/03/27(水) 09:05:24.83ID:/DQA1U1P
>>277
それまでのやり取り見てから言えよ。
お前は>244に対して発言してるんだろ。
>>244の話の起点は>>239なんだよ。

そんなことも分からないからコミュニケーションが取れないと言われるわけだw
0281デフォルトの名無しさん
垢版 |
2019/03/27(水) 09:09:47.26ID:/DQA1U1P
>>277
それと、誤解を与えたと思うが、そもそもの知ったかとかコミュニケーションとかは>>245に対して言ってたつもり。
たまたま、タイミング良く>>272の発言があったから、一緒にアンカーつけたけどな。
0282デフォルトの名無しさん
垢版 |
2019/03/27(水) 09:18:24.88ID:/DQA1U1P
>>275
>>237>>239>>241ときて>>245の意味が全く分からなくての発言だ。

岡崎事件を挙げて、どこまでokとかは言えないと言っておきながら無断でスクレイピングすると言ってる。

全く意味が分からねえ。
0283デフォルトの名無しさん
垢版 |
2019/03/27(水) 09:29:20.58ID:7IO5xMdH
スクレイピングで許可がいるってどういう時だ?
そもそもスクレイピングってブラウザの手動操作を経由しないGetリクエストが全部該当しちゃうの?
0284デフォルトの名無しさん
垢版 |
2019/03/27(水) 09:46:33.15ID:tQ4XPcUj
頻度の問題なんだよ
秒間一回のリクエストで逝くゴミサイトだろうが、それで迷惑がかかるなら業務妨害になる可能性がある
検索エンジンは特定のサイトに頻繁にポーリングかけたりはしない
0287デフォルトの名無しさん
垢版 |
2019/03/27(水) 10:46:27.13ID:7IO5xMdH
>>284
スクレイピングで検索しても頻度のことは言っておらずループで回すこととも結びつかない解説が多いんだよね。
だから「ボタン押す都度なんかやる」ってだけのプログラムも対象になりうるんじゃないかと心配になる。
0291デフォルトの名無しさん
垢版 |
2019/03/27(水) 12:16:26.49ID:qB5RyyD6
無能な警察が存在するのは事実なんだから、その対策もエンジニアは考えておくべきだな
対策せずに逮捕されても自業自得
0296デフォルトの名無しさん
垢版 |
2019/03/27(水) 18:51:37.49ID:5WFP8xQ3
図書館の奴は
ddosでも無いのに拘留期間が長かったのが問題だと自分は思ったな当時
0299デフォルトの名無しさん
垢版 |
2019/03/28(木) 04:24:21.91ID:Wtvk2F5L
スクレイピングは、1日1回までなら大丈夫。
検索エンジンは、そうしてる

相手のrobot.txt に書いてある

何回もリロードすれば、手動でも、営業妨害で逮捕される。
だからテストでも、他人のサイトには、絶対にアクセスしない

とにかく、相手の業務を妨害したら、逮捕されるだけ
0303デフォルトの名無しさん
垢版 |
2019/03/28(木) 10:53:27.70ID:l7H13VPO
スクレイピングは違法?3つの法律問題と対応策を弁護士が5分で解説
https://topcourt-law.com/internet_security/scraping-illegal
以下、抜粋

3.スクレイピングと著作権
コンピュータによって情報を解析することが目的である場合には、例外的に著作権者の同意を得ることなく、
スクレイピングによって取得した他社情報などを記録媒体に記録したり翻案することができます

4.スクレイピングと利用規約
ユーザーが利用規約(スクレイピングを禁止する内容が含まれているもの)に同意していることが必要になります。
ユーザーが利用規約に同意することにより、ユーザーは「スクレイピングをしない」義務を負うことになる

5.スクレイピングとサーバ負荷
偽計業務妨害罪が成立するかどうかは、スクレイピング行為によって相手方の「業務を妨害したか否か」が
判断基準になるところ、スクレイピングによって何回アクセスしたら違法で、反対に何回までなら合法です、
といった基準はありません

ただ、Librahack事件は一つの目安になると思われます。この事件では、
逮捕された者が1秒に1回の頻度で1日2000回のスクレイピングを試みた点について、
サーバに負荷をかけたとまではいえないとの見方もあります。

この判断は、まだ合法とのお墨付きを与えるものではありませんが、仮にスクレイピングをするとしても
「自然検索の範囲内」で対応するのがベターかもしれません
0305デフォルトの名無しさん
垢版 |
2019/03/28(木) 11:35:08.61ID:TXhBN1cl
岡崎図書館の時に、IT業界の識者が集まって講演会をやったんだけど、
専門用語を使わずに素人にも理解できるように説明する能力がプログラマーにも求められる、みたいな意見も出てた
そうしないと自衛もできない
0306デフォルトの名無しさん
垢版 |
2019/03/28(木) 11:54:05.51ID:HLZueckG
>>303
そのページ見たけど「スクレイピング」も「クローラ」も曖昧にしか定義されてないね。
ループでぐるぐる回してるかどうかなんて観点は全くなさそうだ。
HTTPリクエストはプログラムだけどブラウザはプログラムじゃないと思ってるんだろう。
0307デフォルトの名無しさん
垢版 |
2019/03/28(木) 12:31:01.04ID:wSbwELs4
単に合法かどうかばかり論じてるけど、相手に連絡とって、こういうことをしたいって言ってれば捕まることも無かったろうさ。
無断にやったのが問題なんだ。
0308デフォルトの名無しさん
垢版 |
2019/03/28(木) 12:39:14.95ID:yd30y0n6
>>306
> ループでぐるぐる回してるかどうかなんて観点は全くなさそうだ。
サーバーにはそんな観点は関係ないから当たり前
人海戦術でも業務に妨害を与えることは可能
0312デフォルトの名無しさん
垢版 |
2019/03/28(木) 13:58:01.74ID:HLZueckG
>>308
ならブラウザだって同じ事じゃないか?
スクレイピングだけ取り立てて許可だ規制だってなんの恨みでもあるのか
0313デフォルトの名無しさん
垢版 |
2019/03/28(木) 14:26:42.73ID:iot7Ha6W
まとめサイトは取り締まらない無能な兵庫県警

そここそ5chコピーサイトなんて、スクレイピングしまくりだろ
0315デフォルトの名無しさん
垢版 |
2019/03/28(木) 16:56:38.72ID:HLZueckG
>>314
どうも君のスタンスがよくわからんな

スクレイピングもブラウザもサーバ側から見ると機能に違いはない。
だからスクレイピングだけ云々はおかしい。
ただしスクレイピングは一人でも超高頻度のクエリー投げることができて、そういう運用については制約が必要だ。
よってスクレイピングについての記事は頻度についての言及をすべきだろう。
 ↑
俺のスタンスはざっとこんなもんだが違うのか?
0316デフォルトの名無しさん
垢版 |
2019/03/28(木) 18:19:07.66ID:vLmtjJZv
>>315
> ただしスクレイピングは一人でも超高頻度のクエリー投げることができて、そういう運用については制約が必要だ。
一人かどうかとかも関係ない
1,000,000人集めて人手なら業務妨害に当たらないとか無いだろ
0317デフォルトの名無しさん
垢版 |
2019/03/28(木) 18:29:37.80ID:HLZueckG
>>316
同じなのは業務妨害になるという結果だけだ。
人手でも業務妨害になるという主張をするなら「多人数集めて一斉にやったら」という但し書きが必要だろ?
スクレイピングについても「高頻度にやったら」という但し書きが必要なのは当然だ。
そういう条件を付けないと、リテラシーの低いやつがルールを機械的に適用するぞ。
0319デフォルトの名無しさん
垢版 |
2019/03/28(木) 18:39:42.93ID:su6DvUn3
図書館の話は迷惑行為であるが刑事犯罪になんかならないよ
業務妨害とか言ってる奴はそれを笠に着て自分が然も凄いが如く言いたいだけの奴
0320デフォルトの名無しさん
垢版 |
2019/03/28(木) 19:12:07.44ID:vLmtjJZv
>>317
> 人手でも業務妨害になるという主張をするなら「多人数集めて一斉にやったら」という但し書きが必要だろ?
> スクレイピングについても「高頻度にやったら」という但し書きが必要なのは当然だ。
プログラマーに向いてないね
そんな但書は要らん
サーバーに対するリクエスト数を制限するだけでいい
0322デフォルトの名無しさん
垢版 |
2019/03/28(木) 19:37:20.19ID:zggdcEf4
>>320
>>303にあるような記事は一般人向けのものであり、一般人はそれを読んでスクレイピングの
定義を知った気になってしまうのだ。
0324デフォルトの名無しさん
垢版 |
2019/03/28(木) 19:51:14.41ID:xFQ00KNs
リクエストだけの問題じゃない
WEB鯖の場合、セッションを確保したままにするとアクセスしなくてもリソースをどんどん食い潰してくという厄介な仕様があってだな
0327デフォルトの名無しさん
垢版 |
2019/03/28(木) 20:36:18.92ID:A3r+RL12
この前はDBだかSQLだかの話を何日も延々と
今度はスクレイピングの話を延々と

別スレでもたててそこでやれよ
0329デフォルトの名無しさん
垢版 |
2019/03/28(木) 21:04:10.10ID:O79akzCM
技術的な知識も現実的な場数も足りてないから頓珍漢な議論しか出来ず
しかも煽り会っているから永遠に終わらないのだ
0332デフォルトの名無しさん
垢版 |
2019/03/28(木) 21:35:58.12ID:O79akzCM
>>331
ところで何のために煽ってるの?何か得するかいい気分になるの?
そこまで生産性の無い事をする気持ちが良く分からない
0333デフォルトの名無しさん
垢版 |
2019/03/28(木) 22:00:45.02ID:fRHhg+J8
> ところで何のために煽ってるの?何か得するかいい気分になるの?
> そこまで生産性の無い事をする気持ちが良く分からない
>>329みたいなこと書く奴が何を言ってるんだよ…
0335デフォルトの名無しさん
垢版 |
2019/03/29(金) 08:21:18.11ID:FHKNInbw
捕まるとかそういう話に終始してるのがアホらしい。
トラブルになった時点で負けだろう。

スクレイピングでのトラブルは探せば色々見つかるだろう。

時間割アプリの問題とかLinkedInとか。
殆どがコンタクトを取っていれば防げた問題。
もっとも中には許可されないことが分かってて確信犯的に無断でする場合もあるが。
0336デフォルトの名無しさん
垢版 |
2019/03/29(金) 13:03:28.66ID:HmBCV24x
【速報】金券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ギフト券(チャージタイプ)に交換できます(電子マネー払いにて)    
      
数分で出来るので是非ご利用下さい  
0338デフォルトの名無しさん
垢版 |
2019/03/29(金) 18:38:03.39ID:NYOzkE7a
>>336
残高マジで増えたwww   
0340デフォルトの名無しさん
垢版 |
2019/03/30(土) 00:05:18.82ID:K763EDhF
Cells(1, 1).Value = "〒111-222" & vbCrLf & "東京都新宿区XXXマンション" & vbCrLf & "西村ひろぽん"

のコードでセルに改行コード crlf 入りの文字列を入力し
Excelのセルの値をメモ帳に張り付けるとこんな感じになってました。

〒111-222

東京都新宿区XXXマンション

西村ひろぽん


crが余計に1つ多くvbcrlfの前に入ってしまいます。
コードでは入れていないのですが、なぜでしょうか?何か対策はありますか?
0343デフォルトの名無しさん
垢版 |
2019/03/30(土) 02:01:07.03ID:GNmeMRzR
VBAなんて全くできないんだけど
エンジニアってこれよりずっと難しいことやってるんでしょ?
0344デフォルトの名無しさん
垢版 |
2019/03/30(土) 02:21:31.67ID:BYxrD6lc
>>343
このスレは基本的に一般事務・経理・営業が、現在のルーチンを補助するためのツール作成がメイン
エンジニアはEXCEL自体を作るようなイメージ
でもvbaエンジニアもいたりするし、こういうツールを作る事を生業にしている業者もある
0345デフォルトの名無しさん
垢版 |
2019/03/30(土) 03:03:59.52ID:Lscb2BBn
>>340
Cells(1, 1).Value = "〒111-222" & vbLf & "東京都新宿区XXXマンション" & vbLf & "西村ひろぽん"

セル内改行はLFのみだよ
0347デフォルトの名無しさん
垢版 |
2019/03/30(土) 07:57:38.98ID:K763EDhF
>>341
はい、確かにVBAで挿入する時には
それでうまくいきました。
セルの値をコピーすると

文字列lf →文字列crlf に置き換わってました。

なぜだろう。

>>342
いや、再現しますよ。

>>345
サンクス。
とりあえずVBAではおまじないと覚えておきます。
0348デフォルトの名無しさん
垢版 |
2019/03/30(土) 08:04:35.59ID:MmqNwO70
素直に

Cells(1, 1).Value = "〒111-222"
Cells(2, 1).Value = "東京都新宿区XXXマンション"
Cells(3, 1).Value = "西村ひろぽん"

じゃダメだったのかい!
0349デフォルトの名無しさん
垢版 |
2019/03/30(土) 08:43:12.88ID:Bc/A+ZhT
>>347
試してみたら
CR → CRLF
LF → CRLF
となった。
つまりCRもLFも別個にCRLFに変換されてしまうようだ。
0352デフォルトの名無しさん
垢版 |
2019/03/30(土) 09:55:31.40ID:rKCbbHqC
お母さんからvbNewLineを使いなさいって言われてるから初心者の俺も使ってるわ
0355デフォルトの名無しさん
垢版 |
2019/03/30(土) 11:38:26.16ID:BYxrD6lc
本日の戦い

vbNewLineでよくね派
     vs
vbNewLine使うと余計に混乱してしまう派
0359デフォルトの名無しさん
垢版 |
2019/03/30(土) 12:42:55.38ID:MmqNwO70
そもそも何でCRとLF、2つも作ったんだろ。
見えないのもうざいから、ワードみたいに

  |
  |
←┘

こういうの入れとけよな。
0363デフォルトの名無しさん
垢版 |
2019/03/30(土) 13:43:10.56ID:lnhNxPid
>>359
> そもそも何でCRとLF、2つも作ったんだろ。
その話をするとタイプライターの時代まで遡るからとりあえずそう言うもんだと覚えておけばいいよ
0364デフォルトの名無しさん
垢版 |
2019/03/30(土) 13:47:06.57ID:glDBW/eM
>>340
Excelは何も置き換えてない
Excelがセル内改行として扱うのはLFだけ
CRLFを突っ込んでもCR部分はただの見えない文字として存在してるだけで改行しない

セルの文字列をコピペした時CRLFのうちLFがCRLFに置き換わってCR CRLF状態になる(Windowsの場合。他は知らん)
それをCRを改行として扱うテキストエディタとかに貼ると両方改行して6行になる
俺の使ってるメモ帳はCRとLFは改行として扱われず見えない文字になるが、バージョンによるのか
0366デフォルトの名無しさん
垢版 |
2019/03/30(土) 22:52:52.36ID:uS2atdcl
続き
ここに、こんなの書いてある

秀丸エディタでは、改行が chr[10]でもchar[13]+char[10]でも自動で判定して表示するようです。
一方でWindows標準のメモ帳では改行はchar[13]+char[10]固定であるため、linux などchr[13]を改行とした
テキストファイルを表示すると改行せずに表示されます。
0371デフォルトの名無しさん
垢版 |
2019/03/31(日) 04:23:05.94ID:8cbdf+T7
秀丸エディタとか今でも使ってる人なんているの?
久しぶりに名前を聞いた
0373デフォルトの名無しさん
垢版 |
2019/03/31(日) 09:25:24.80ID:rZDtkSri
新バージョンの
禿丸ツルピカなら使ってる
0374デフォルトの名無しさん
垢版 |
2019/03/31(日) 09:32:08.99ID:mUt6la4P
TeraPad でも、改行コードを指定できる

ただし、TeraPadは、新しめの文字が?? になってしまう

中国の地名の「深圳」とか
0375デフォルトの名無しさん
垢版 |
2019/03/31(日) 09:43:08.67ID:S96NH+nt
>>372
VS
0377デフォルトの名無しさん
垢版 |
2019/03/31(日) 14:47:15.91ID:p4bbm5us
>>359
元はテレタイプのコードだからね

テレタイプではCRでカーソルを行頭に復帰
LFでカーソルを行送りとなり合わせて改行になる

CRだけではカーソルが行頭に復帰するだけで行は変わらない
LFだけではカーソルが次の行に送られるだけで桁位置は変わらない
こういう仕様だった
0378デフォルトの名無しさん
垢版 |
2019/03/31(日) 16:38:53.91ID:7pZaUVM7
文字コードといえばワード・パワポもエクセル連携の観点では曲者
段落区切りの改行がCR、段落内改行がVTになるからな
単純な文字列貼付でいけると思ってると見事にハマる
0381デフォルトの名無しさん
垢版 |
2019/03/31(日) 18:57:30.32ID:2QHIj7Qu
>>359
キャリッジリターン、ラインフィードの2つの単語を覚えておこう。
どういう意味かは自分で調べてね。
0382デフォルトの名無しさん
垢版 |
2019/03/31(日) 19:02:18.98
>>336
今日までか
貰ってアプリは消した   
0390デフォルトの名無しさん
垢版 |
2019/04/01(月) 11:14:26.77ID:kXJ+CJ6I
よくこんな話題で何日も盛り上がれるな
マウント取るにしても内容の程度が低すぎるでしょ
0392デフォルトの名無しさん
垢版 |
2019/04/01(月) 11:40:46.78ID:kgDolq/Y
>>391
そりゃ作られたの20年前でレガシーもいいとこだからな
だいぶ昔からdeprecatedフェーズだからどれだけ要望があろうと改善されることもない
0394デフォルトの名無しさん
垢版 |
2019/04/01(月) 15:12:27.18ID:no59bRT+
>>393
そもそもレガシーでありMS的には使ってほしくない機能なんだから、
不便すぎてユーザーが減っていくことがまさに「改善」なんだよ
気に入らないのはわかるが古いものを新しくしていくっていうのはそういうもの
0396デフォルトの名無しさん
垢版 |
2019/04/01(月) 21:40:54.00ID:gJhvzDut
それでも利益的には無視できないだろう
もし切るならとっくに切ってる
別に移行するにも何にどう移行するのか?
lotusも無くなったからそんなに恐れる必要も無いけど
free系officeも敵ではないだろうし
狙いはcloud系か何かなんだろうけど
開発の人はどうにでもなるだろうけど
excelvbaは素人系だからなぁ
0401デフォルトの名無しさん
垢版 |
2019/04/02(火) 02:17:49.89ID:GCjhH3yn
VBAで簡単な入金管理作った
経験あるんだけど
VBAでちょこちょこ
するだけでいい仕事って就けるもん?
0404デフォルトの名無しさん
垢版 |
2019/04/02(火) 09:24:24.65ID:g8jutNiy
>>403
本当だけど
それガッツリとしたVBAエンジニアだよ
多分gitかTortoiseSVN辺り使うはず

【フリーランス】Excel/Access-VBA | 開発知見がある方!システムサポート業務
仕事内容
基幹システム/部門個別システム支援(運用、問合せ、J-SOX対応等)
部門内インフラ管理支援、エンドユーザIT支援、業務用ツール開発
給与
0405デフォルトの名無しさん
垢版 |
2019/04/02(火) 21:44:59.43ID:ZGIlr/GY
>>403
別にVBAでも普通ある。
けど、面接して採用される奴は他にもスキルがあるか、それなりに出来る奴だろうな。

gitや、SVNについては必ずしもってところだろう。
もっとも、VBAのコードを管理するためにgitやSVN用のツールをVBAで組む程度はやれる或いはやってるだろう。
0406デフォルトの名無しさん
垢版 |
2019/04/02(火) 23:38:38.44ID:z8xG+23/
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年後も普通に平成だとは思わなかったわ。
0412デフォルトの名無しさん
垢版 |
2019/04/03(水) 03:03:58.76ID:SETc7Ceb
こういう思い込みをする奴が新年号対応に莫大な人工が掛かる糞システムを作るのである
0414デフォルトの名無しさん
垢版 |
2019/04/03(水) 07:43:03.53ID:4XO/CSdW
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年
0415414
垢版 |
2019/04/03(水) 07:55:00.58ID:4XO/CSdW
明治6年(1873)から正しい

それ以前は太陰太陽暦(旧暦)だから、西暦とは異なるから、日本の暦は使えない
0416デフォルトの名無しさん
垢版 |
2019/04/03(水) 12:14:49.07ID:RhgPGi2C
Excel2013以降ならこれで行けると思う

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Calendars\Japanese\Eras]
"2019 05 01"="令和_令_Reiwa_R"
0420デフォルトの名無しさん
垢版 |
2019/04/04(木) 02:37:49.53ID:2+ZabFqB

0421デフォルトの名無しさん
垢版 |
2019/04/04(木) 09:42:49.96ID:8+vU6A6d
>>416
これは、Office各バージョンで共通で使えるしExcel・Word等でも使えるね
他のアプリでも使えるんじゃない
0422デフォルトの名無しさん
垢版 |
2019/04/04(木) 10:15:48.02ID:8+vU6A6d
>>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"
0423デフォルトの名無しさん
垢版 |
2019/04/04(木) 10:47:09.88ID:2+ZabFqB
VBAでfor nextで回しているときにworksheetfunction.vlookupを使っているのですが
値が存在しないときにエラーが出て止まってしまいます。
こんなとき存在しない時は処理を回避するにはどうしたらいいですか?
On error resume nextにすると、エラーのときにも処理をしてしまいます。
0425デフォルトの名無しさん
垢版 |
2019/04/04(木) 11:06:48.53ID:8+vU6A6d
>>423
On error resume next はエラーを無視して続ける
On error go to XXXX でえあらーが出たらそっち行け
0426デフォルトの名無しさん
垢版 |
2019/04/04(木) 11:17:40.01ID:2+ZabFqB
>>425
vlookupで見つかったらA処理、見つからなかったらB処理、をそれぞれさせる場合
どうするの?
0427デフォルトの名無しさん
垢版 |
2019/04/04(木) 11:18:13.34ID:2+ZabFqB
そっち行けのあと、ちゃんとfor nextループに復帰しないといけない。
0429デフォルトの名無しさん
垢版 |
2019/04/04(木) 12:16:12.36ID:8+vU6A6d
>>427
基本的にgo toの 行先はループ内だな
で、正常の場合はそのルーチン内で飛ばす、また共通で使用できる部分はそのまま使う
それぞれ複雑になる場合は、外部呼出しで処理
0430デフォルトの名無しさん
垢版 |
2019/04/04(木) 12:40:19.97ID:aPtbQ2yh
簡易だけどこんな風でよろしいか。

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
0431デフォルトの名無しさん
垢版 |
2019/04/04(木) 13:14:42.92ID:iClvVPMc
こうじゃないの

On Error Goto err
For i=0 To lngRW
varValue=WorksheetFunction.Vlookup(〜)
'処理
err:
Next i
0432デフォルトの名無しさん
垢版 |
2019/04/04(木) 13:23:37.46ID:8+vU6A6d
>>431
一般的に書くと以下だけど、処理は複雑なら外部ファンクションで

On Error Goto err
For i=0 To lngRW
varValue=WorksheetFunction.Vlookup(〜)
[正常処理]
Goto 共通
err:
[err処理]
共通:
[共通の処理]
Next i
0433デフォルトの名無しさん
垢版 |
2019/04/04(木) 13:50:38.20ID:iClvVPMc
>>432
あぁそうか、その形だスマン

エラー番号を見たり外したりで分岐させる方法が合ったと思うけど、
あれってどうなのかな
0434デフォルトの名無しさん
垢版 |
2019/04/04(木) 14:26:57.06ID:omgcYFOR
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
0436デフォルトの名無しさん
垢版 |
2019/04/04(木) 16:56:03.91ID:iClvVPMc
このエラーって何が返ってきてるの?
Rc = Application.VLookup(1, Range("a1:b2"), 2, 0)
Rcには「エラー2042」
variant/error
となっている
エラーオブジェクト?
0440デフォルトの名無しさん
垢版 |
2019/04/04(木) 19:42:12.58ID:l+wxMf4P
on error使うのあまり良くない
vlookupの前にcountやfindで存在チェックするのをおすすめするよ
裏技的な方法だとAppllication.Vlooiup
0445デフォルトの名無しさん
垢版 |
2019/04/05(金) 09:38:24.06ID:8QX00BOt
なんでマクロを表から実行する機能がボタンしかないんですか!
ボタンだけ画像で気持ち悪い
0447デフォルトの名無しさん
垢版 |
2019/04/05(金) 10:33:41.98ID:wkkyQZMO
>>445
セルのクリックで選択が変わったイベントを取るとか
他にもできるけど、単に知らないだけだろ
0448デフォルトの名無しさん
垢版 |
2019/04/05(金) 10:44:09.79ID:wkkyQZMO
>>442
悪い奴じゃなさそうだが、残念だったな
所詮、何でも道具なんだから目的に合わせて
臨機応変に対応しないとな
0449デフォルトの名無しさん
垢版 |
2019/04/05(金) 10:53:42.85ID:wkkyQZMO
>>445
そういえば、聞き漏らしたけど
>ボタンだけ画像で気持ち悪い
これ意味が分からない
例えば表に更新ボタンがあるのが気持ち悪いか?
0453デフォルトの名無しさん
垢版 |
2019/04/05(金) 11:31:39.64ID:wkkyQZMO
>>451
例えば以下でいい、透明なボタンなんてメンテナンスしにくい
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$A$1" Then
「セルA1を選択された時の処理」
End If
End Sub
0454デフォルトの名無しさん
垢版 |
2019/04/05(金) 12:16:59.99ID:VsjxKRtT
>>445
何を言ってるんだ?
標準モジュールに以下を書いて、
セル内に=FuncNibai(2)と入れてみろ。

Public Function FuncNibai(lngNum As Long) As Long
FuncNibai=2*lngNum
End Function
0456デフォルトの名無しさん
垢版 |
2019/04/05(金) 12:31:55.05ID:VsjxKRtT
>>455
ボタンから実行していないだろ。
表を変えたいというなら、入力したセルと無関係のセルの値を変更する処理も書ける。
そんなことする奴はおらんだろうが。

そもそも>>455がどうしたいのかが無いから、どうにもならん。
個人的には、リボンから実行するように作ることが多いけど。
0459デフォルトの名無しさん
垢版 |
2019/04/05(金) 13:41:00.30ID:8QX00BOt
イベントでマクロ起動できるようになりました。ありがとうございます!
ハイパーリンクのイベント使いました。

でも
イベントはシート単位でマクロ側で呼び出し元特定する仕組みで
間違えるの怖いしシート全体でマクロ走るし
ハイパーリンクは自分のセル位置変わっちゃうし
余計気持ち悪くなりました

ハイパーリンクに直接マクロ指定したりとか
もっとスパッと間違えない仕組みがないものでしょうか
0460デフォルトの名無しさん
垢版 |
2019/04/05(金) 13:44:20.23ID:zlWiWORW
>>459
何がしたいのかもう少し具体的に言ってくれれば誰かがマクロ書くと思う
>シート全体でマクロ走るし
これも以下のような形で、特定のセルだけマクロが走るように制御することも可能

Private Sub Worksheet_Change(ByVal Target As Range)
行 = Target.Row
列 = Target.Column
If 行 < 4 And 行 > 2 And 列 = 2 Then
'処理
End If
End Sub
0462デフォルトの名無しさん
垢版 |
2019/04/05(金) 14:03:08.75ID:wkkyQZMO
>>459
そんなの選択したセルがハイパーリンクか判断すればいいだけ
要求を書かないから特定のセルで動くマクロを提示しただけ
その前に
>ボタンだけ画像で気持ち悪い
これ意味が分からない
0463デフォルトの名無しさん
垢版 |
2019/04/05(金) 14:40:23.82ID:8QX00BOt
ボタンはクリックしただけで手が滑って意図せずずれちゃったり
配置した後ろにカーソルが隠れちゃったりするから
なんか異物感があります
0464デフォルトの名無しさん
垢版 |
2019/04/05(金) 15:16:00.65ID:wkkyQZMO
>>463
そうか、理由はよくわからんがハイパーリンク化は
selection.hyperlinks.count
または
Range.hyperlinks.count
で取れるんでないの試してない
0467デフォルトの名無しさん
垢版 |
2019/04/05(金) 16:25:16.09ID:wkkyQZMO
まあ、どうやっても出来ないと書き込むんじゃなくて
何をどうしたいけど方法を聞けよ、できるだけ自分の求めることを
詳しく
0468デフォルトの名無しさん
垢版 |
2019/04/05(金) 16:38:12.77ID:33lL/zae
スライサーのボタンクリックをイベントとしてマクロを実行させたいんだけど、
ググっても探し方が悪いのか、「スライサーを作成するVBA」ばかりになってしまう。

どこか事例を解説しているWebページを紹介してもらえませんか?
0470デフォルトの名無しさん
垢版 |
2019/04/05(金) 16:50:23.23ID:n8EBNbBD
ピボットテーブルのスライサーの事じゃないの?
別にスレチでもなんでもないと思うけど
0472デフォルトの名無しさん
垢版 |
2019/04/05(金) 17:26:04.18ID:n8EBNbBD
>>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
0473デフォルトの名無しさん
垢版 |
2019/04/05(金) 17:41:45.84ID:33lL/zae
>>472
ありがとうございます。
ピボットテーブル本体まで戻れば
変更イベントハンドルがあるのですね。
この方向でやってみます。
0476459
垢版 |
2019/04/05(金) 20:52:19.13ID:CiB89diH
いろいろやってみましたが
表をいじって位置が変わっちゃうと動かなくなったり、
変なリンクできたりするので
ボタンでやります…

ボタンをセルに合わせて自動調整されるようにプロパティ設定したら
ちょっと気持ちがおちつきました

ありがとうございます
0480デフォルトの名無しさん
垢版 |
2019/04/06(土) 05:07:20.11ID:yAC/mUJI
ヒポリットテーブルってややこしい。
理解するこつあはありますか?
0481デフォルトの名無しさん
垢版 |
2019/04/06(土) 09:18:19.10ID:9IkbKopt
>>480
ピボットテーブルな
繰り返し使うしか無い
後は元データもちゃんとしたものじゃないとピボットがうまく機能しない
0483デフォルトの名無しさん
垢版 |
2019/04/06(土) 11:28:05.41ID:QwecXQyr
>>454の関数で値を計算して返すついでにどこか別のセルの値を設定しようと
Range("A1") = 1
としたって通らないだろ
そんな制約があったんじゃ>>445に対する答えにはならんね
0485デフォルトの名無しさん
垢版 |
2019/04/06(土) 13:12:45.38ID:cYL1/vjQ
>>480
いろいろやってみると面白いし、
元データをテーブルにして組み合わせると、
計算速度も速いような?

融通が利かない部分もあるけど。
4〜3月の月次推移グラフで、
ピボットテーブルには年度合計を出せるのに、
この合計もグラフに反映させる方法あるのか、ないのか・・・
日時時間フィルターのタイムラインは、使い勝手がイマイチ、
とか。

あと、縦横クロス集計のピボットテーブルを
一発でリスト表(3Dマップに使える)に変換する隠れ機能があったり。
0487デフォルトの名無しさん
垢版 |
2019/04/07(日) 11:38:35.77ID:J7v3B2LO
シート内にマクロを設定した
ボタンを1つと、複数の画像があります。

ボタンをクリックしたら以下コードを実行し画像の一括削除を行っています。
しかし、問題があってボタンまで消失してしまいます。

そこでボタンの場合には削除はしない
という風に制御を入れたいのですが、ボタンの名称はどうやって調べればよいでしょうか?


'シート無いの画像をすべて削除する。
For Each img In ActiveSheet.Shapes
img.Delete
Next
0488デフォルトの名無しさん
垢版 |
2019/04/07(日) 11:59:22.40ID:SzIL1mww
>>487
ボタンに特定の名前を付けてそれをハードコーディングすりゃいいと思うがそれじゃ不満なのかな?
0489デフォルトの名無しさん
垢版 |
2019/04/07(日) 12:06:51.57ID:oR5kGK9/
>>487
img.Nameで名前を調べることができます

If img.Name <> "ボタンの名称" Then
  img.Delete
End If

みたいに書けば、特定の画像の消去をスキップできます
0490デフォルトの名無しさん
垢版 |
2019/04/07(日) 12:40:05.22ID:z5f8NySY
>>489
名前なんて変化するのでコーディングするのはない
プロパティで有るだろ、調べてないが常識的に
0491デフォルトの名無しさん
垢版 |
2019/04/07(日) 13:13:42.16ID:dLz2IshG
削除対象の画像を予めShapeRangeにまとめるなり、削除対象の画像の名前をシートに書き出すなりしてボタンマクロで一括削除させる設計にする方が検索効率や保守効率が良いと思う
ボタン名やコントロール名でハードコーディングするのは下策
ボタンの数やコントロールの種類が増えたときにいちいち手直しする必要が出てくる
0492デフォルトの名無しさん
垢版 |
2019/04/07(日) 13:22:52.48ID:UhqEDEIh
動的にコントロールを追加するプログラムを作ってないの?
毎回追加で書いてるの?
それは面倒で下衆だわ
0493デフォルトの名無しさん
垢版 |
2019/04/07(日) 13:30:07.71ID:HG+SSO0q
>動的にコントロールを追加するプログラム
昔作ったわ
EXCELでこの設計は止めたほうが良い。エラー頻発する
0495デフォルトの名無しさん
垢版 |
2019/04/07(日) 15:13:26.49ID:zM3BxSpj
>>474
>>478
>>483

スマンな。
>>456の時点では勘違いしてた。

でも、たぶん出来るだろうなと思ってやってみたら出来るな。
それどころか入力セルに対しても出来る。
0496デフォルトの名無しさん
垢版 |
2019/04/07(日) 15:19:02.23ID:1196mB+r
>>487は差のマクロが登録されたあるひとつのボタンだけを対象に「消したくない」と言っているように思えるのだが
0497デフォルトの名無しさん
垢版 |
2019/04/07(日) 15:26:28.77ID:zM3BxSpj
>>491
別にボタン名とかコントロール名でやっても良いと思うよ。
増えようが、名前付けル−ルがデタラメなんてこと無いだろう。
画像ならimgが先頭に付くとか、ボタンならbtnが付くとか、普通そうしてるはずだろ。

>>492
それは、この質問だけ見ただけじゃ何とも言えない。
消えなければ追加する等という作業は最初から必要無い。
動的に追加するような状況とも思えないな。


>>493
それはその組み方が良くないだけだろ。
0498デフォルトの名無しさん
垢版 |
2019/04/07(日) 18:49:28.94ID:wMtd4Rq1
まあ、その時目の前の問題だけクリアーするのは筋が悪い
目的を汎用化し使い易くメンテナンスし易いように組むな普通
0499デフォルトの名無しさん
垢版 |
2019/04/07(日) 19:51:51.79ID:Eip3w86o
VBAスレで何言ってんの
そういうことを言い出すとVBAなんか使うなという結論にしかならんよ
0502デフォルトの名無しさん
垢版 |
2019/04/07(日) 21:10:44.99ID:dLz2IshG
>>497
名前比較で実現出来るかどうかという実現可能性の話をしてるわけではない
あくまで効率性の話をしてるんだが
特定のボタンを消さないようにするという目的だけのためにShapesコレクションをなめてアイテムのNameプロパティを逐一調べるという処理は筋が悪い
ワークシート上に存在する画像や図形、テキストボックス、コントロール等の数だけ名前比較することになるからな
削除対象になる画像をワークシートに追加するタイミングでShapeRangeコレクションに入れ、ボタン押下でDeleteメソッドで一括削除というやり方の方が絶対に速い
0504デフォルトの名無しさん
垢版 |
2019/04/07(日) 21:22:19.79ID:6gqi5pp/
一つも目的だけの為に作り込むのが良いのか汎用性を持たせて使い回せるようにした方が良いのかって事で俺は汎用性がある方が長持ちして良いと思う派
0505デフォルトの名無しさん
垢版 |
2019/04/07(日) 21:27:32.10ID:zM3BxSpj
>>502
あのさあ、わざわざそんなことするほどの処理かね?
俺だったら名前ではやらんと思うけど、こんなのは何でも良い話だろ。

普通に考えて、ボタン1つに後は画像だけなんじゃね―の?
正直、こんなので効率も糞も無いと思うね。
0506デフォルトの名無しさん
垢版 |
2019/04/07(日) 21:45:02.84ID:SzIL1mww
マクロに「Sub なんちゃら」って名前を付けるんだから、それを呼び出すボタンに固有の名前を付けるのは全く自然だ
0507デフォルトの名無しさん
垢版 |
2019/04/07(日) 22:33:14.85ID:dLz2IshG
>>505
コレクションの総なめや文字列比較での処理分岐は処理速度の問題に直結するだろ
それにマクロで処理しなければならないくらい画像を張り付けてあるシートに対する操作なら尚更処理が重くなる可能性が高い
数百個くらい画像が貼ってあるかもしれないし

割と現実的な設計の話だと思うんだが、まぁ君が効率も糞もないと思うなら仕方ない
0509デフォルトの名無しさん
垢版 |
2019/04/07(日) 22:38:12.36ID:AvqFg232
>>502
> 削除対象になる画像をワークシートに追加するタイミングでShapeRangeコレクションに入れ
とか言うけど、その画像がプログラムで追加されるとは限らんよ
人が適当に描画した図形を単にクリアするボタンかも知れんし
0510デフォルトの名無しさん
垢版 |
2019/04/07(日) 22:43:02.40ID:dLz2IshG
>>509
それならShapes.SelectallでShapeRangeコレクションに突っ込んで、マクロ呼び出し用のボタンだけShapeRangeから除外して一括削除だね
とにかくShapesの中でループを回す必要がない
0511デフォルトの名無しさん
垢版 |
2019/04/07(日) 22:50:29.75ID:IY2XTri8
>>507
それは数百個貼るような状況の場合の話。
そういう場合なら、その時考える話だ。

例えば、それなりに組める奴ならScreenUpdatingなんかを使っても速度が速くなることは無いだろう。
俺の場合も当然そうだ。
だからと言って、普段そんなに速度を重視して組んでいる訳じゃ無い。
しかしだ、状況により速さが必要になったら当然それ用に変わるだろう。

いつも速度を重視して組んでいるならご苦労なこった。
0513デフォルトの名無しさん
垢版 |
2019/04/08(月) 02:30:49.49ID:OEfF6P+m
オブジェクトを直接比較すれば済む話じゃね
なんでわざわざ.Name呼び出して文字列比較するのかわからん
オブジェクトの比較なら何千あっても大して遅くならんし
馬鹿ばっかかよ
0514デフォルトの名無しさん
垢版 |
2019/04/08(月) 02:33:33.22ID:OEfF6P+m
そもそもshaperangeコレクションにアイテムをremoveするメソッドがあれば済む話なのにな
やっぱVBAって糞だわ
0515デフォルトの名無しさん
垢版 |
2019/04/08(月) 06:39:30.33ID:2IBrjRoX
やっと気付いた?
0518デフォルトの名無しさん
垢版 |
2019/04/08(月) 10:38:02.22ID:20rc9alP
>>513
オブジェクトを直接比較の何を比較するんだよ
全てのオブジェクトは代入で使ってるもの以外
違うんだけど
0519デフォルトの名無しさん
垢版 |
2019/04/08(月) 10:40:14.98ID:qrhOu38P
vbaは===がない上にisで比較できないパターンがあったはず
ユニークな名前で比較するやり方は正解
0521デフォルトの名無しさん
垢版 |
2019/04/08(月) 11:00:40.34ID:20rc9alP
>>519
名前なんて好きに変えられるだろ
そんなもんでユニークって言っても筋悪いって言われるんだよ
0526デフォルトの名無しさん
垢版 |
2019/04/08(月) 11:44:28.64ID:f4XbMpJ6
ObjPtr、ポインタ、参照渡しあたりでググれカス
煽りが下手すぎて説明する気にもならん
0527デフォルトの名無しさん
垢版 |
2019/04/08(月) 11:44:45.29ID:qrhOu38P
>>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
無能の頂天っすね
0532デフォルトの名無しさん
垢版 |
2019/04/08(月) 11:56:32.80ID:20rc9alP
>>530
ボタンはフォームコントロールとActiveXコントロールがあるけど
大丈夫か? 酒飲みながら茶化してるんですまんな
0536デフォルトの名無しさん
垢版 |
2019/04/08(月) 12:04:25.33ID:cNRL9eDF
ObjPtrだろうがなんだろうが「消しちゃいけないこのオブジェクト」を最初にどうやって指定するのかと
0537デフォルトの名無しさん
垢版 |
2019/04/08(月) 12:04:58.54ID:f4XbMpJ6
酒飲んでるから!本気じゃないから!
はいノーダメ!

思考がテンプレすぎる
0539デフォルトの名無しさん
垢版 |
2019/04/08(月) 12:24:06.89ID:KL9iMO+X
>>526
そこじゃないと思うぞw
比較するためにはボタンをオブジェクトとして取得しなきゃならん。

どうやって取得する?

>>527
俺もこのやり方をするだろうね。
でも名前でも全く問題無いと思うぞ。
0540デフォルトの名無しさん
垢版 |
2019/04/08(月) 12:35:47.16ID:20rc9alP
>>537
結局、ググってもそんなコード内から泣いてるのか?
思いつきで、引きこもりのカスが書き込むよなこのスレも
0542480
垢版 |
2019/04/08(月) 13:11:52.02ID:cVIHdDyE
>>481
>>482
>>485

理解するコツを聞いているのに
いろいろ使ってみろ、みたいな回答はおかしくないか?

そんなこと承知の上で、理解するコツ、つまり心がけることやこんなことに注目したら理解がスイスイスーダラダッタスラスラスイスイスイっとできるかを聞いているのですが。
0544デフォルトの名無しさん
垢版 |
2019/04/08(月) 14:13:07.53ID:qrhOu38P
>>535
納得した
話題のループやグダグダ言う点は確かに酒の関の会話レベル
シラフで話してる奴はすげぇわ

>>539
thisかMe無いんだよな
callerでオブジェクトの取得するには、
名前を取得してforeachで名前と一致するオブジェクトを探して・・・
になると思う。超面倒くさい

>>542
ピボットに限らずEXCELは使わない機能が膨大にある
やりたいことを決めて、機能を使いこなすのが一番早い
0546デフォルトの名無しさん
垢版 |
2019/04/08(月) 16:07:16.94ID:20rc9alP
>>542
>理解するコツ
それこそ、マニュアルを読めよまたはググれよ
例えば以下でもいいけど、他にもいっぱいある
https://www.becoolusers.com/excel/pivottable.html
だけど、頭の構造によって読んでも分かんない奴も多いからな
必要な時に使うんじゃわからんバカには無理って言ってるんだよ
普段から使えよ
0548デフォルトの名無しさん
垢版 |
2019/04/08(月) 16:32:09.53ID:qrhOu38P
>>547
そう真剣になるなよ、本題についてはもうとっくに>>494で終わってる

で、
>ボタンをオブジェクトとして取得
これについて俺も知りたい
callerは他言語で言うthisみたいなもんで、通常はオブジェクトで飛んでくる。もうちょい正確に言うとオブジェクトの参照だな
これがオブジェクトで飛んでこないからめちゃくちゃ使い勝手が悪い
オブジェクトで取得する楽な方法あるの?
0549デフォルトの名無しさん
垢版 |
2019/04/08(月) 16:59:10.82ID:eHXY0QFN
お前らもしかしてわざと無能演じてんの?
だったらすげえや全然気づかなかった

set b = ActiveSeet.Shapes(Application.Caller)
For Each x in ActiveSeet.Shapes
If Not x Is b Then x.Delete
Next
0550デフォルトの名無しさん
垢版 |
2019/04/08(月) 17:02:54.81ID:cVIHdDyE
>>546
「いろいろ使ってみろ」とか「マニュアル読め」じゃないんだよ。
自分の言葉で説明してほしいということ。

具体的にはこれはデータベースを扱っているのだから
「フィールド」とか「グループ化」とか「集計」とかそういう具体的な用語を使ってだ。
0551デフォルトの名無しさん
垢版 |
2019/04/08(月) 17:08:22.50ID:9eoJzmPe
VBAの特徴
内部抗争が酷いが外敵には一致団結して退治する
0554デフォルトの名無しさん
垢版 |
2019/04/08(月) 17:15:00.42ID:lpvwS4NY
>>549
確認してないが、それ複数ボタンで動くか?
フォームコントロールとActiveXコントロール有るけど
0555デフォルトの名無しさん
垢版 |
2019/04/08(月) 17:20:52.07ID:ccKDHzfP
>>542
他人に期待しすぎ。
それが出来たら今頃は、サイト立ち上げたり、本出したり、どこかで講師やっとるがな。

MSからも含め、VBAよりもピボットテーブルの情報は少ないし、
パーツ、パーツで区切れるVBAよりも、
広範囲で漠然とした「自分のやりたいこと」に使えるかどうか、
試行してみないとなんとも言えない。
0556デフォルトの名無しさん
垢版 |
2019/04/08(月) 17:26:33.08ID:eHXY0QFN
>>554
押されたボタン以外は消える
ボタン1つと画像複数っていう質問なので削除ボタン以外のShapeを一括削除する仕様だと勝手に読み取った
少なくともNameで比較はありえねーよカスというサンプル
0557デフォルトの名無しさん
垢版 |
2019/04/08(月) 17:28:02.25ID:cVIHdDyE
こんなとき図星の決まり文句言わなきゃなんないのかぁ。
「 み ん な 理 解 で き て い な い 。」

理解できてる人なら竹を割ったようにスッキリと解説できるはず。
使いまくれとか、サイト見ろとか、試行してみないとなんとも言えないとか、全部言ってる人がピポットテーブルの本質を理解できていない決定的な証拠じゃないか。
0558デフォルトの名無しさん
垢版 |
2019/04/08(月) 17:39:46.71ID:qrhOu38P
>>557
当たってるよ。理解する必要ないからね
ピボットで作るデータの9割ぐらいは基本機能で瞬殺だから「使って覚えろ」としか言えない
複雑な事をしたければ作業列でパーっと作った方が早い、深く理解して得るものが少なすぎる

そもそも大事なことは目標の設定の仕方だから、このスレでどうこう言えない
0562デフォルトの名無しさん
垢版 |
2019/04/08(月) 20:31:30.66ID:r03ED/xX
VBAの演算子で一方だけ評価するのってありますか
i < 100 OR data[i] = x みたいに境界超えてないか先にチェックしたい
0564デフォルトの名無しさん
垢版 |
2019/04/08(月) 20:45:56.01ID:lSCOP8uB
>>562-563
> VBAの演算子で一方だけ評価するのってありますか
ない
If i < 100 Then If data(i) = x Then ...
ってやるしかない
0565デフォルトの名無しさん
垢版 |
2019/04/08(月) 21:11:16.19ID:KL9iMO+X
>>549
???
それって、固定の名前でやるのに比べてどの程度メリットが有るの?

固定の名前でやる方がまだましだと思うんだが。
0566デフォルトの名無しさん
垢版 |
2019/04/08(月) 21:11:26.99ID:AlMdksUV
>>560
文字列型プロパティの比較判定は重い処理だし、オブジェクト命名の運用に処理結果が依存してしまう
組み込みの列挙定数やオブジェクトポインタで比較判定した方が安全なのは事実
0568デフォルトの名無しさん
垢版 |
2019/04/08(月) 21:15:36.62ID:KL9iMO+X
>>566
ほう。
画像が100個あった場合、
文字列で比較と比べてどれくらい速くなるの?

まったくアホらしいと思うんだが。
0571デフォルトの名無しさん
垢版 |
2019/04/08(月) 21:48:31.68ID:besmAe1s
ぶっちゃけ1000回比較しても体感できる差は無いけど
ならどちらがいいかは完全にセンスの問題になるわけで

オブジェクトを比較したい場面でオブジェクトそのものを比較できるのにわざわざ名前みながら比べるとか

頭の中どうなってるの
0572デフォルトの名無しさん
垢版 |
2019/04/08(月) 22:07:24.49ID:4iOzxu9L
>>569
>>571
別に、名前で比較したいわけじゃ無い。
俺は最初から、こんなのどれでやっても良いだろ派だ。

最初からパフォ−マンスに大きな差が出ないと思ってたし、センスの問題はかなり気にする方だが、今回の問題ではどれでやってもセンスが悪いとも思わない。
0574デフォルトの名無しさん
垢版 |
2019/04/08(月) 22:26:49.07ID:4iOzxu9L
>>573
ハァ?
そんな初心者のわけねえだろ。

それに、
>>549って俺に言わせると名前でやってることになるんだがw

>>539で、「どうやって取得する?」って書いたのは、結局名前で取得することになるんじゃね?って意味で、名前でってのはApplication.Callerみたいに名前を取得したら結局同じじゃね?って意味なんだがw
0575デフォルトの名無しさん
垢版 |
2019/04/08(月) 22:36:44.56ID:lpvwS4NY
>>573
だから、それは対象のボタンオブジェクトが分かってる場合だろ
最初のお題と違ってボタンがいくつあるかも分からん条件で効率よくってはなし
俺はNameプロパティは変更出来るだろ
だからTypeプロパティだろって言っているだけ
0578デフォルトの名無しさん
垢版 |
2019/04/09(火) 00:44:23.79ID:cuTyECFJ
この中で一番重いのはShapes.Delete
それ以外をどんだけ工夫しても、逆にどんなタコなコーディングしても、体感できる差は出ないから
0579デフォルトの名無しさん
垢版 |
2019/04/09(火) 01:51:44.81ID:flshAmjZ
【12日まで】500円を貰える春のばらまきキャンペーン開催中です 
     
@ スマホのApp Storeから「プリン(pring)」をインストールする  
A 会員登録を済ませる     
B 下図の通りに進む  
https://pbs.twimg.com/media/D3pRtQiUwAQLMUR.jpg    
C コードを登録 [5gAYSz]  

これで五百円を貰えます  
スマホでセブンATMからお金を下ろせたり(キャッシュカード不要)便利なアプリですのでよろしければご利用下さい
0581デフォルトの名無しさん
垢版 |
2019/04/09(火) 08:39:46.28ID:mg+oftxD
マウントやめたら色々な方法見れて役に立つんだけどな
何故一番になりたがるのだろう
0582デフォルトの名無しさん
垢版 |
2019/04/09(火) 08:43:42.22ID:sTjNwrNP
そうさぼくらは世界にひとつだけの花
0583デフォルトの名無しさん
垢版 |
2019/04/09(火) 08:45:37.14ID:sTjNwrNP
小さい花や大きな花
ひとつとして同じものはないから
No1にならなくてもいい
もともと特別なonly one
0584デフォルトの名無しさん
垢版 |
2019/04/09(火) 11:49:39.06ID:4ZugEZRH
まあ、なんだな久しぶりに実際に使ってみた
ルーチンの仕様
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コントロールしか
普段は使わない
0585デフォルトの名無しさん
垢版 |
2019/04/09(火) 13:45:14.72ID:4ZugEZRH
追記しておくけど
目的・仕様をハッキリさせなきゃどんなルーチンも価値評価が難しいな
定義済み定数は定義名を使えよ普通に、ウォッチ式で確認できるから
>For Each x in ActiveSeet.Shapes
誤記スンナ ×ActiveSeet ○ActiveSheet
0586デフォルトの名無しさん
垢版 |
2019/04/09(火) 16:00:23.87ID:v/sKiq9O
>>480
俺がどうしてもexcel捨てられない理由が唯一
ピボットテーブルがあることなんだけどな
(その他のオフィス製品にも近ごろは
載っているようだが
VBAからの操作に慣れきってると
なかなか乗り換えきれない)

手放せなくなるまで使ってみてください
0588デフォルトの名無しさん
垢版 |
2019/04/10(水) 10:58:53.58ID:6J3r6J/I
全部プロシージャで集計と報告系のマクロ書いてるけどグラフ出力とか一部は指定サイトの結果取得とか機能増えすぎて9モジュール1800行とかになってる
なんちゃってプログラマの俺にはもうお辛い…
0589デフォルトの名無しさん
垢版 |
2019/04/10(水) 11:28:22.21ID:UESsnIOi
動きゃいいよ
要件がリッチになりすぎたなら、それはもう技術的に何とかしようとするより外部のSaaSを導入することを検討すべき
0590デフォルトの名無しさん
垢版 |
2019/04/10(水) 11:37:22.82ID:Y1e0LUUu
>>588
スマンが君の書いてる機能はマクロを使わずにできるものだが
>集計と報告系のマクロ書いてるけどグラフ出力とか一部は指定サイトの結果取得
集計と報告系・・・当然簡単だろ、場合によってはワードも利用する
>グラフ出力
ピボット使えよ、何が不足してるんだ?
>一部は指定サイトの結果取得
こんなのクエーリーの標準機で、起動時に読み込むとか、一定時間おきに読み込めよ

面白がってVBAにしないで、標準の機能で出来ることはExcel様に任せるよ
0591デフォルトの名無しさん
垢版 |
2019/04/10(水) 12:02:10.37ID:P1T0QVnr
そこまで作り込む能力があるなら素直にPS, Python, Ruby, node.jsあたり学んだほうが幸せになれるぞ
0592デフォルトの名無しさん
垢版 |
2019/04/10(水) 12:06:33.25ID:UESsnIOi
SIerすらメンテできないようなものを作ると後々自分の首を締めることになるよ
ずっとお守りに時間を奪われて出世は閉ざされ、そのうちシステム刷新でクビよ
0593デフォルトの名無しさん
垢版 |
2019/04/10(水) 12:13:08.23ID:Y1e0LUUu
ってか、Excelの標準機能も満足に使えないのに無理やりVBAを使うのは
やめた方が良い、標準機のでできることはコードにしないな
0595デフォルトの名無しさん
垢版 |
2019/04/10(水) 12:36:37.12ID:UESsnIOi
規模的にスケールするような作り方を理解した上でなら全然大した量ではないけど、
なんちゃってプログラマのアドホックなコーディングはだいたい1000行を超えたあたりで限界が来る
俺は絶対お守りしたくない
0596デフォルトの名無しさん
垢版 |
2019/04/10(水) 12:43:15.27ID:HiznTzOg
>>595
そういうののお守りもしたことあるよ。
いやー大変だった。

基本、デバック実行で、何の処理をしているのかを類推することになる。
0598デフォルトの名無しさん
垢版 |
2019/04/10(水) 13:43:17.52ID:Fi06WKE0
>>593
そうなのか?
自分はほぼOffice共有マクロでやっていてExcel固有の機能とかは最低限しか使ってないな
0599デフォルトの名無しさん
垢版 |
2019/04/10(水) 13:45:51.76ID:ZITKsaEc
>>592
開発者ならそうだろうけど
開発者じゃなくて業務をしてるだけ
みたいな人がついでに使うのがexcelvbaって感じだから
その人が首になる事はないんじゃないかなぁ?
それにそんな本格的なシステムを組むほど予算が無い
みたいな会社規模だとどのみちどうしようもないし
そういう界隈用って有る様で無いし
表計算
という点では予想外の使われ方だとは思うけど
なんかそういう小零細向けのアプリが有った気がしたけど
0600デフォルトの名無しさん
垢版 |
2019/04/10(水) 13:54:38.83ID:Y1e0LUUu
>>598
それが、組織内での共通認識ならいいんでないの
マクロは俺は基本的に避けるが、好みだよ
でも、「Excel固有の機能とかは最低限」じゃあExcel使う意味あるの?
0601デフォルトの名無しさん
垢版 |
2019/04/10(水) 14:02:44.70ID:Y1e0LUUu
まあ、勘違いするバカ多いんだよな
プログラムは自分で作ってるとか、俺が考えたとか(笑)
0603デフォルトの名無しさん
垢版 |
2019/04/10(水) 16:17:57.40ID:Fi06WKE0
>>600
ExcelはUIとしては優れていると思うよ。
操作するユーザーとのデータのやりとりとかグラフ出力とかね。
でもSQLでやるようなクエリーはもちろん不向きだし、途中段階のデータ加工処理にも不向きだと思うんだがね。
0604デフォルトの名無しさん
垢版 |
2019/04/10(水) 16:30:55.55ID:Y1e0LUUu
>>603
でも、そんなの君の好みだろ
不向き気なら使う必要ないな
ってか使えるとこだけうまく使うんだろ
なのに文句だけいゆうのな
0607デフォルトの名無しさん
垢版 |
2019/04/10(水) 18:36:25.41ID:Fi06WKE0
>>604
文句なんか言ってないだろ?単に不向きなことはExcelにやらせてないというだけのことじゃないか
そもそも>>593がそっちの趣味主観から始まっているわけだしな
0608デフォルトの名無しさん
垢版 |
2019/04/10(水) 18:38:22.55ID:Fi06WKE0
>>606
そっちこそ俺の書いた

「SQLでやるようなクエリーはもちろん不向きだし、途中段階のデータ加工処理にも不向きだと思う」

に具体的な反論があるなら言ってみてはどうなのか
0610デフォルトの名無しさん
垢版 |
2019/04/10(水) 22:29:11.86ID:Y1e0LUUu
>>608
>「SQLでやるようなクエリーはもちろん不向きだし、途中段階のデータ加工処理にも不向きだと思う」
>に具体的な反論
お前は不向きの内容も具体的に書き込んでないのにどのようなアドバイスが欲しいのかな?
処理速度かな?
0611デフォルトの名無しさん
垢版 |
2019/04/11(木) 00:47:10.88ID:tqqNlMCs
問題点がなにかも自覚しないから不満なだけで止まるんだよな
で、自分ではなくツールのせいにする楽なこった
0614デフォルトの名無しさん
垢版 |
2019/04/11(木) 15:17:56.46ID:t6ZqSbU2
>>603
>でもSQLでやるようなクエリーはもちろん不向きだし、途中段階のデータ加工処理にも不向きだと思うんだがね。

工夫次第で普通にできる。別に不向きじゃないと思う
そういうのはAccessのほうが向いてると言われればその通りだと思うが
0619デフォルトの名無しさん
垢版 |
2019/04/11(木) 20:16:57.24ID:v9KwxSkL
同時接続数の超えられない壁
0620デフォルトの名無しさん
垢版 |
2019/04/11(木) 20:48:03.35ID:flnPu98l
>>614
元々のVBAを使わずにExcelの機能を使うっていう話の観点で言えば、データが多くなるとExcel関数ではどうにもならないくらい遅くなるということがある。

銀行のデータ整合性チェックをしたことが有るんだが、10万以上のデータでSUMPRODUCTとか全くのアホなことやってたな。
その時はSQLじゃ無いけどVBAで組んだら一瞬になったけど。

今の仕事でも50カラムぐらいで40万件ぐらいのレコードをExcelに吐き出してるのを扱ってるがVBA使わずに関数とか正気の沙汰とは思えない。
0622デフォルトの名無しさん
垢版 |
2019/04/11(木) 21:12:19.70ID:2g6t5Llw
数値だけなら楽勝だけど文字列のfindとかは結構キツイ
>10万以上のデータでSUMPRODUCT
これ列全体指定してたら多分計算終わらん
0623デフォルトの名無しさん
垢版 |
2019/04/11(木) 21:33:34.25ID:7m5ZQ9KZ
ワークシート関数は使い捨てならいいんだけど残して運用し続けるのはつらい
0624デフォルトの名無しさん
垢版 |
2019/04/11(木) 22:23:07.59ID:+qS75l5K
データベース的に使ってるエクセルテーブルで関数従属関係をワークシート関数で実現するのやめてほしいよな
0625デフォルトの名無しさん
垢版 |
2019/04/12(金) 01:26:49.44ID:L59U/aC1
Excelっていうか表計算ソフトは
ゼロから設計し直したほうが良いと思う

セルごとに個別の計算式が入っていて
どれか一つが間違っていても
簡単に気づくことが出来ないとか
一つのセルだけ修正し忘れとか
メンテナンス性が悪すぎる
0626731
垢版 |
2019/04/12(金) 01:40:03.71ID:7vLuIMdD
>>625
え?
少なくとも後者は教えてくれるぞ?

前者は数式表示モードにするか、横にformulatextで表示しとけば?
0627デフォルトの名無しさん
垢版 |
2019/04/12(金) 05:49:04.40ID:V1CbV9zt
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
0630デフォルトの名無しさん
垢版 |
2019/04/12(金) 08:24:36.34ID:LhXUTlO1
>>629
SUMPRODUCTは所詮O(N)だから実質的な計算量はたかが知れてる
遅けりゃSUMPRODUCT使わないで一時セル使った単純な式に展開してもいい
0631デフォルトの名無しさん
垢版 |
2019/04/12(金) 08:49:24.60ID:wLs4Sov9
>所詮O(N)だから実質的な計算量はたかが知れてる
O(n2)以上だよ
めちゃくちゃ多い
0632デフォルトの名無しさん
垢版 |
2019/04/12(金) 09:00:04.80ID:xRzutCJ1
>>631
O(N^2)となる根拠は?
実装がヘボいのかもしれないけど、仮に手計算でやったとしたら基本的に計算量は行数に比例するだろう
それなら一時セル使えば確実にO(N)で済むよ
0634デフォルトの名無しさん
垢版 |
2019/04/12(金) 10:47:24.57ID:cY6WK7UC
絶対参照の範囲と相対参照の範囲をSUMOTODUCTする場合は平気でO(n^2)になるよ
Excelでシミュレーションとかしてるとよく出てくる
0637デフォルトの名無しさん
垢版 |
2019/04/12(金) 12:22:33.93ID:cAaoTUDS
元々無理矢理VBA使うのはって話から始まってるが、もはや無理矢理関数使うことになってる件w
0638デフォルトの名無しさん
垢版 |
2019/04/12(金) 13:20:22.74ID:L59U/aC1
>>625
> 前者は数式表示モードにするか、横にformulatextで表示しとけば?

それぞれが微妙に違ってる(セル座標のこと)画面からはみ出るぐらいの
長い数式が何十個も表示されていて、それがワークシートを
コピーするたびに量産されていくという状態で
全部見て間違いがないことを確認できるわけ無いだろ
0639デフォルトの名無しさん
垢版 |
2019/04/12(金) 13:41:42.81ID:cY6WK7UC
>>638
全然本質的な解決にはならないけどR1C1形式にすればセル参照含め同じ数式になって多少は見やすいぞ
0641デフォルトの名無しさん
垢版 |
2019/04/12(金) 20:04:10.53ID:kdt5VzkQ
>>640
何を言ってるんだ?
一見してフォーマットが統一されているように見えていながら
誰かがミスして数式が壊れたり、修正が必要な時に漏れたりするから
問題だって言ってるんだろ。

フォーマットを統一するのに「人間がミスをしなければ」という
不可能な条件があるから、だめなんだよ
0644デフォルトの名無しさん
垢版 |
2019/04/12(金) 20:24:13.41ID:kdt5VzkQ
そうそう。エクセルというか表計算は
データと処理(セルに入れる関数)と見た目(色等)が
一つに結合してしまっているという大きな欠点があったな。

分離されてないので、何かを修正する時に
別の何かまで変更してしまって、それに気づかない。
0645デフォルトの名無しさん
垢版 |
2019/04/12(金) 20:27:00.42ID:BpmudOIO
行でデータを作ったら
列には必ず同じ数式しか入れない
バカなことしてたら何時までも進歩しない
0646デフォルトの名無しさん
垢版 |
2019/04/12(金) 20:29:31.50ID:kdt5VzkQ
> 列には必ず同じ数式しか入れない

列には同じ数式入れるとかアホやろwww

DRYじゃない。同じ物は一つだけでいい
0647デフォルトの名無しさん
垢版 |
2019/04/12(金) 20:30:26.99ID:kdt5VzkQ
あ、DRYっていうのは同じことを何度も繰り返すなってことねw
わかりやすく言えば、コピペするなってこと。
0649デフォルトの名無しさん
垢版 |
2019/04/12(金) 20:39:29.55ID:kdt5VzkQ
「式をロック」したいだけなのに
そうすると今度はセルの幅などが変えられなくなる。

細かく設定すれば可能だが、面倒くさい。
メンテナンスする人はいちいち解除しないといけない

そして、どのセルがロックされているかわからない
頑張ればできるが・・・

どんどん無駄な頑張りが必要になる。
0652デフォルトの名無しさん
垢版 |
2019/04/13(土) 11:19:08.13ID:D8o23bai
>>649
それ、単に考えが雑なだけだろなんにしても
計画性もなく適当に増殖させるから自分でも制御できなくなる
0653デフォルトの名無しさん
垢版 |
2019/04/13(土) 11:37:11.36ID:R4ZFT5Jg
セルロックは色々面倒くさくなるのは同意。ほぼ変更なしまで完成されてれば別だが。
なので、自分用とか、可能であれば、式セルに薄い色つけてる。
0654デフォルトの名無しさん
垢版 |
2019/04/13(土) 11:40:20.37ID:D8o23bai
まあ、ある程度データが大きくなったら、データーはテーブル&数式で処理して
表示、印刷はピボットを使うかフォーマットを定義したシートでまとめろよ
目的も、機能も行き当たりばったりってExcelのシートもVBAも負担なだけ
0655デフォルトの名無しさん
垢版 |
2019/04/13(土) 11:50:25.55ID:D8o23bai
>>653
コメント入れればいいんだよ、印刷しなければ問題ない
面倒くさいって、管理できればそんな必要はないけどな
0656デフォルトの名無しさん
垢版 |
2019/04/13(土) 12:09:21.02ID:6byp94bf
その管理が面倒くさいって話

修正でシート変更したとして、
今度から新しいシート使ってくださいとか言っても
間違えて古いシート使ってきて、でも見た上違いわかんねとかさ

エクセルファイルをコピーした分だけ
プログラム(セルに入れる関数のこと)が複製されるから管理不能。
一つのエクセルファイルを共有して使うとか

何人も人がいればやらんだろ?
それぞれ個別のエクセルファイル修正して提出とかだろ?
0657デフォルトの名無しさん
垢版 |
2019/04/13(土) 12:41:36.98ID:DFBgdaK8
削除や挿入でセルがずれない設定があればねぇ
今のところindirectしかない。indirect使うと数式が読みづらくて死ぬ
0661デフォルトの名無しさん
垢版 |
2019/04/14(日) 09:40:00.62ID:C6oAesku
VBAの一番の欠点は情報が圧倒的に少ない
多言語の1億分の一くらいの情報量
質問してもアンサーが遅い
0662デフォルトの名無しさん
垢版 |
2019/04/14(日) 09:47:43.05ID:Q3MA08tK
Webで有用な情報を発信できるレベルの人間ならそもそもVBAなんて使いたがらないからね
0665デフォルトの名無しさん
垢版 |
2019/04/14(日) 11:25:05.41ID:C6oAesku
少しはみ出した使い方とかも出ないし想定内の情報のみ
0666デフォルトの名無しさん
垢版 |
2019/04/14(日) 11:29:14.13ID:CXJ+kocl
まあね、最近のスマホの使い方みたいに
「見ればわかるよ」ってのが長々と書いてあるね
0668デフォルトの名無しさん
垢版 |
2019/04/14(日) 12:23:51.23ID:TZDtV4Z3
Excel VBAは玉石混淆だけどまぁまぁ情報はネット上に転がってる
Access、OutlookのVBAも最低限の情報ならば探せる
これがPowerPoint、Word、Publisherとかになると途端に情報量が減る
0670デフォルトの名無しさん
垢版 |
2019/04/14(日) 15:06:27.05ID:v38VY+Mw
検索力の問題とかじゃなくて情報量が圧倒的に少ないのは事実
VBAプレイヤーの絶対人数が違うんだから当然だけど天才的な人もいない
0672デフォルトの名無しさん
垢版 |
2019/04/14(日) 15:11:39.40ID:XgRuwrtZ
VBAの情報量と言われても、EXCEL操作できればそれでいいんだからそれ以上何かいるんけ?
0673デフォルトの名無しさん
垢版 |
2019/04/14(日) 20:42:13.83ID:ta3d6Ir8
単純なExcel操作の範疇ならそこそこ有能そうな人の記事もあるよね
能力の低い人ほどそれ以上のことをVBAでやろうとするからな
0674デフォルトの名無しさん
垢版 |
2019/04/15(月) 08:13:02.92ID:ZEg6Csuk
VBAしか見ないから少ないと感じる。
普通のExcel操作なんて皆知ってることばかりだろう。
0675デフォルトの名無しさん
垢版 |
2019/04/15(月) 08:13:28.72ID:ZEg6Csuk
VBAしか見ないから少ないと感じる。
普通のExcel操作なんて皆知ってることばかりだろう。
0676デフォルトの名無しさん
垢版 |
2019/04/15(月) 09:47:45.91ID:HgdD6hHz
パワーポイントとワードは同じVBAでしょはよ作ってね
たかがvbaだし期間なんて要らないよねよろしくー
みたいなん多くてうげーてなる
0679デフォルトの名無しさん
垢版 |
2019/04/15(月) 12:40:48.29ID:Es8LFln/
>>677
こういうことだろ

上司A 「パワーポイントとワードは同じVBAでしょ、はよ作ってね」
同僚B 「たかがvbaだし期間なんて要らないよね、よろしくー」
俺 「うげー」
0680デフォルトの名無しさん
垢版 |
2019/04/15(月) 17:13:58.76ID:IzRYxIuW
恥を忍んできくが

WordのVBAって、なんか使い道あんの?

オレは全角半角統一とか
余白ほかレイアウト調整とか
定型文挿入とか
そんな簡単なのは自作して使ってるけど
「高度な使い方」ってのが思いつかない

文章中心のデータに
定型処理って需要があんのかね
0681デフォルトの名無しさん
垢版 |
2019/04/15(月) 17:23:54.84ID:Es8LFln/
>>680
そんだけ活用できてれば十分じゃん
言語仕様を制限する方が余計な手間がかかるから、そのままなんでも使えるようにしてあるだけだろ

高度かどうかは置いといて、Word VBAの使いみちとしては、印刷物の寸法をちゃんと合わせたいとき
Word文書にVBAで罫線なりシェイプを書き込めばいいんじゃない?
0682デフォルトの名無しさん
垢版 |
2019/04/15(月) 17:36:56.85ID:OAOOS1Vr
>>679
すごいな、読む気がなかったかもしれん
>>680
俺は、使ってっるリストボックスで選択した文字で
文書を変更して印刷している
高度である必要あるの?便利であればいいんでないの
0683デフォルトの名無しさん
垢版 |
2019/04/15(月) 17:41:14.99ID:UiI6zhV3
>>681
>>682
ああなんか救われた気がする
スレチ気味の質問だったが
ありがとう

素朴でも便利な小道具つくって行くわ
0684デフォルトの名無しさん
垢版 |
2019/04/15(月) 17:41:23.11ID:Es8LFln/
【1 OSの種類         .】 Windows10 Pro 64bit
【2 Excelのバージョン   】 Excel 2019
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可
Visual Studio Community 2019を入れたら、Excelの設定があちこち勝手に書き換わってしまいました
そのうちの一つとしてVBEでスニペットが表示されなくなったのですが、直し方を教えてください
0686デフォルトの名無しさん
垢版 |
2019/04/15(月) 19:14:26.59ID:32DOVlq8
>>680
昔作って、超低頻度だが役に立ってるのが、Windows乗り換えたときに全フォントのサンプル表示と印刷。

各種プログラムソースに色付け、A3縦二段組印刷。(最近はイチから解析しなくなったな〜…)
0689デフォルトの名無しさん
垢版 |
2019/04/15(月) 19:39:30.60ID:ZEg6Csuk
>>686
VBAのキ−ワードの色付けは誰かがやってたからそれを貰って、コメントの色付けを追加して使ってる。
0695デフォルトの名無しさん
垢版 |
2019/04/16(火) 18:45:28.10ID:e8yfqTUa
フォルダ内に存在するファイルが以下のように構成されています

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が採用されてしまいます
この問題を解決するにはどのようなアプローチで行えばよろしいでしょうか?
なお、日付の次は必ずしも「修正」ではなく別のコメントの場合もあります

ヒントなど頂けますと幸いです
0696デフォルトの名無しさん
垢版 |
2019/04/16(火) 18:48:04.20ID:e8yfqTUa
すみません訂正です

1-1と1-1*で比較をしようとすると、狙いとしては”1-1修正”がある場合その比較だったのですが1-1と1-11の比較、1-11と1-12の比較...1-19(あるいはその修正版)が選ばれてしまいます
0697デフォルトの名無しさん
垢版 |
2019/04/16(火) 19:02:23.87ID:g+D3y3HH
>>695
"修正"の文字列が凶悪過ぎて無理だな
"修正"がなければsplit()で分けて、日付データにしてしまうのが一番手っ取り早いんだけど
2019-1-2-修正1
なんてあったらお手上げ
0698デフォルトの名無しさん
垢版 |
2019/04/16(火) 20:00:26.84ID:dymnkria
>>695
ファイル名ではなくファイル自体の更新日で比較は?
可能ならファイル名の付け方を考え直した方がいいと思うが
0699デフォルトの名無しさん
垢版 |
2019/04/16(火) 20:24:24.92ID:dymnkria
すまん>>696読んでなかった
Dir("1-1*")で"1-1修正"も読み込まれるはず
ファイル名が"1-1 修正"になってるってことはないか?
それとDirはファイル名昇順で返すから比較せず最後に読み込んだファイル名を使えばいいと思う
0700デフォルトの名無しさん
垢版 |
2019/04/16(火) 20:48:56.77ID:akR/dKKk
>>699
1-1修正
1-1最新
なんてのがあると、タイムスタンプ無視して修正が最後になるぞ
コメントが不定なら、数字とそれ以外の文字を判定して切り分けるしかない
0701デフォルトの名無しさん
垢版 |
2019/04/16(火) 20:53:51.23ID:g+D3y3HH
1-1修正
1-12回めの修正(「1-1 2回めの修正」のつもり)
ってパターンもあってもうこれ絶対にヤバイ処理
0702デフォルトの名無しさん
垢版 |
2019/04/16(火) 21:09:05.64ID:dymnkria
>>696
すまん更に勘違いしてた
"1-1修正"が出て来ず他のが出てくると言ってるのかと勘違いしてた
>>698が無理ならファイル名をsplitで"-"で切って、3つ目の文字列から左2文字のうち数字だけ取得する
ただし>>701の言うようにコメントの最初に数字が来ることがあるならどうしようもない
0703デフォルトの名無しさん
垢版 |
2019/04/16(火) 21:16:48.22ID:nc1CJru4
postfix扱いの「コメント」に規則性がないのならそもそも最新版を特定する術がない
運用の方を変えるべきだろう
0704デフォルトの名無しさん
垢版 |
2019/04/16(火) 21:43:33.41ID:g+D3y3HH
最新版以外はoldフォルダ作ってそこにほおりこんでおく
そうすれば超簡単に出来る
0705デフォルトの名無しさん
垢版 |
2019/04/16(火) 22:27:43.62ID:XA2NKST4
>>それぞれの日のファイルのうち最も新しい物
新しいとする基準は何?
ファイル名で修正1修正2ってあったら修正2が最も新しい?
日付部分のyyyy-mm-dd(ただしmmとddは一桁もあり得る)が固定なら
毎回癖のあるdirとワイルドカードなんて使わないでファイルリストすべて取得してから処理したら?
0706デフォルトの名無しさん
垢版 |
2019/04/17(水) 05:30:44.38ID:pTGno1t2
新たにVBAライブラリを作ったりする人が全く出ないのが取り残された言語の欠点
他の言語は次から次へとライブラリが追加されてより便利に快適にそして簡単になるのに
終わってるVBAには将来性も可能性もないから仕方ないけどね
0707デフォルトの名無しさん
垢版 |
2019/04/17(水) 05:35:40.84ID:JxFBTN19
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
0709デフォルトの名無しさん
垢版 |
2019/04/17(水) 08:09:13.25ID:pTGno1t2
フォームにしてももう少しグラフィカルだったりアニメーションだったりするだけでイメージが全然違うんだけど
頭の良い誰がライブラリを作ってくれんかね
0710デフォルトの名無しさん
垢版 |
2019/04/17(水) 08:31:50.49ID:WtvpNXmt
多くの人にとって有用なライブラリを作れるほどの能力のある人なら、
VBAを便利にすることはVBAの延命や利用人口の増加を招き、それは即ち社会正義に反する行為であると理解しているからね
0711デフォルトの名無しさん
垢版 |
2019/04/17(水) 08:45:03.90ID:H1v/4DiF
>>706
vbaにライブラリって何か必要?
中途半端なの出てきてもそれ覚えるの面倒なんだよね
jQueryぐら便利で誰もが使ってるようなのならいいんだけど
0713デフォルトの名無しさん
垢版 |
2019/04/17(水) 08:50:05.84ID:W5uIlXM9
VBAのライブラリ作るよりCOMにしちまうんじゃないの?
VBA以外にも使えるし。

そしてCOMのライブラリなんて腐る程有るんだが何を言ってるんだ?
0715デフォルトの名無しさん
垢版 |
2019/04/17(水) 09:15:11.32ID:YsMOLNBK
>>714
二つ質問

それってCreateObject でインスタンス作って使うの?

どういうジャンル/用途のもの?
0716デフォルトの名無しさん
垢版 |
2019/04/17(水) 09:30:09.47ID:vaRlkwxk
フォームUIのライブラリを希望
0717デフォルトの名無しさん
垢版 |
2019/04/17(水) 11:17:15.83ID:SIKwKn9k
>>711
> vbaにライブラリって何か必要?

こういう文脈のライブラリなら
アルゴリズム系のライブラリだろ?

ソートとか配列に対する処理(合計求める)とか
VBAの言語の範囲内で実装できるアルゴリズム

あと大きめのやつならCSV読み書きとか
テンプレートエンジンとか
0718デフォルトの名無しさん
垢版 |
2019/04/17(水) 11:18:11.01ID:SIKwKn9k
>>711
> 中途半端なの出てきてもそれ覚えるの面倒なんだよね

ライブラリの関数名はどの言語にも有るような名前にするので
一般的なプログラマなら覚えるまでもない
0720デフォルトの名無しさん
垢版 |
2019/04/17(水) 11:36:17.09ID:H1v/4DiF
CSVの読み込みほしいな
住所の番地"1-1-1"を読み込むと日付になって超めんどい
幾つか試したけどどれやっても日付型になってしまった
今思えば頭にピリオドでも付ければ良かったのかもしれん
0721デフォルトの名無しさん
垢版 |
2019/04/17(水) 11:59:21.48ID:o6t++Kqu
>>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"
0723デフォルトの名無しさん
垢版 |
2019/04/17(水) 12:23:13.47ID:vaRlkwxk
ルビーバカシネ
0724デフォルトの名無しさん
垢版 |
2019/04/17(水) 12:27:00.37ID:MK1B34x/
ライブラリで有効なのは作るのが面倒なUIだろ
グラフィク系にこそライブラリの有り難みがある
0725デフォルトの名無しさん
垢版 |
2019/04/17(水) 12:39:27.60ID:epFgj98z
そもそもVBAに固執するのは他のものを覚えたくないからであって、
いくら便利なものがあろうと誰もそれを探そうとしないし覚えようともしない
それができる人ならとっくにVBAなんか卒業してるよ
0726デフォルトの名無しさん
垢版 |
2019/04/17(水) 12:41:31.12ID:H1v/4DiF
>>725
卒業てw適材適所だよ。EXCEL関連の時はvba、webはphp+js、ゲームはC#
これぐらい使い分けときゃだいたいok
0727デフォルトの名無しさん
垢版 |
2019/04/17(水) 12:44:56.01ID:epFgj98z
>>726
VBA使う人には他のものが使えないから使ってる人と単に選択肢の一つとして使ってる人がいて、君は後者であるというだけだ
大多数は前者なわけだし、後者の人はVBAでやりづらいことを無理にVBAでやろうとはしないからライブラリ云々は問題にならないだろう
0728デフォルトの名無しさん
垢版 |
2019/04/17(水) 13:11:34.01ID:bcLxo1zC
>他のものが使えない
は他のものを覚えたくないだけでなく
他のものを使わせてもらえないというのもある
0729デフォルトの名無しさん
垢版 |
2019/04/17(水) 13:16:11.24ID:epFgj98z
>>728
仕事を選べないor技術的裁量を持てない立場に甘んじているならその程度の能力ってことだ
本質的には大差ない
0730デフォルトの名無しさん
垢版 |
2019/04/17(水) 14:04:48.27ID:bcLxo1zC
使わせてもらえないのはごく一部の相手なんですけどね
ほかは普通にいろいろ使ってる
0732デフォルトの名無しさん
垢版 |
2019/04/17(水) 18:24:57.64ID:nv4avm/j
自治体だと、テキストエディタすらウインドウズ標準のものしか使えない。インターネットから切り離されてる不自由な環境なので、VBAとかVBSは重宝される、らしい。
0733デフォルトの名無しさん
垢版 |
2019/04/17(水) 18:30:47.49ID:SIKwKn9k
>>732
そういう馬鹿なところのために、
マイク・スピーカー端子経由でデータのやりとりをする
ツール作ったら便利なのだろうかね?
0734デフォルトの名無しさん
垢版 |
2019/04/17(水) 18:35:35.55ID:nv4avm/j
>>733
頼む、作ってくれ!、とのこと
0735デフォルトの名無しさん
垢版 |
2019/04/17(水) 18:36:55.93ID:W5uIlXM9
個人的には申請出せば色々使えるけど、それが面倒くさいというのもある。

どうせ、VBAでどうとでもなる。
よっぽどどうにもならない場合は申請出すけど。

最近流行りのRPAとか全く必要無い。
簡単にソース作成する個人ライブラリが既にある。
0736デフォルトの名無しさん
垢版 |
2019/04/17(水) 22:16:54.35ID:JxFBTN19
PC-8001ではカセットテープにプログラムを保存したんだよな
それを最近のPCで録音して、音声ファイルからプログラムデータを復元するWindowsアプリがフリーで公開されてる
0738デフォルトの名無しさん
垢版 |
2019/04/17(水) 23:42:32.81ID:yDlOAXUg
下手なの作ってフリーズしたり過去のデータが消えたら責任とれるの?って話になるからな
0740デフォルトの名無しさん
垢版 |
2019/04/18(木) 05:33:25.25ID:nRTUz+FV
ライプラリってそんな知る人ぞ知るってマイナーな使い方じゃなく簡単に情報入手出来るようになって価値があるよね
汎用性があり改変もしやすくオープンなのが増えると良い。
そんなのVBAじゃなくともって言う人もいるけどそれでもVBAが存在して使用されてるんだから有用なライプラリはあった方が良い
0741デフォルトの名無しさん
垢版 |
2019/04/18(木) 07:22:37.37ID:hrv1qdCF
GithubでVBAっていれて検索すると3000以上のリポリトジがあるけど、
どうすれば有用なものが見つけられるか
まるでわからん
0743デフォルトの名無しさん
垢版 |
2019/04/18(木) 09:32:20.75ID:bMzi6GVd
なんとなくvba利用しているような運用職なんですがモノは良いのでもっと横展開出来て再利用性高いものが作れたら作って欲しいと言われました

再利用性が高いとはつまりどういうことでしょうか…
モジュールをそのままコピペして全く別のものでも動くように…?
0744デフォルトの名無しさん
垢版 |
2019/04/18(木) 09:40:51.83ID:Mwr+qk/V
>>743
決め打ちとしてない?
データ全部を処理する時にfor i = 1 tto 100000とかテキトーな数値にしたり
そうじゃなく、最終行をちゃんと取るとか
0745デフォルトの名無しさん
垢版 |
2019/04/18(木) 09:44:43.23ID:PeuY0IP9
>>743
言ってるやつに聞け。

まあどうせ無理だろ?
どうせそいつが言ってるのは、他の部署でも使えるようにしろってことだろうから
業務内容を統一したものに "変更" しないと無理ですとか言っとけw
0746デフォルトの名無しさん
垢版 |
2019/04/18(木) 09:47:38.84ID:PeuY0IP9
> 横展開出来て再利用性高いものが作れたら作って

↑これ無理なんだよ。

今あるものを再利用性が高いものにすることはできない。
ただし「再利用性が高いもの」を使うことはできる。

どういうことかというと「今あるもの」は再利用できるものと
再利用できないものが合体してる形。

そこから再利用できるものを分離することはできるが
どうしても再利用できないものは残る。
0747デフォルトの名無しさん
垢版 |
2019/04/18(木) 10:15:32.81ID:66UDqgKZ
そうやって責務を分離して再利用性の高いライブラリを構築することは可能。
しかし使いこなすのが難しくなる。
依存関係や凝集度をちゃんと考えた良質なライブラリは玄人受けはするだろうけど、
機能が細分化し抽象性も増すから一般人には豚に真珠状態。
0748デフォルトの名無しさん
垢版 |
2019/04/18(木) 11:53:10.58ID:sbpDgPak
まずはモジュール化
その会社の業務内容に合わせて、部署が違っても共通で使える部分をライブラリとして整備する
まあ言うのは簡単だけど、実際に作るのは死ぬほど大変なんで、理想の高さに比例した地獄が待ってるんだけどな
0749デフォルトの名無しさん
垢版 |
2019/04/18(木) 13:21:10.78ID:PeuY0IP9
> その会社の「業務内容」に合わせて、「部署が違っても共通で使える部分」

そんなものは存在しない。

業務内容から生み出されている時点で、業務にべったり依存してる。
再利用性の高いライブラリっていうのは、業務内容を切り離している。
業務内容と関係ないから、共通で使える。
0750デフォルトの名無しさん
垢版 |
2019/04/18(木) 13:36:25.79ID:/sUch5Kf
自分の理解で合ってるか確認したいんだけど再利用性高いてのは決め打ち無くして例えば引数とかで使えるようにしてモジュールなりを使い回せる状態
だけども再利用性ない部分(呼び出し元?main?)を作らないといけない限りこれ1つあればどの業務、案件でも使える!てことにはならない
ライブラリ化?とか再利用性を高めることは出来るけど中々難しく初心者には険しい
て感じでおけ?
0751デフォルトの名無しさん
垢版 |
2019/04/18(木) 15:07:10.61ID:66UDqgKZ
>>750
ライブラリと業務寄りアプリの難しさは別種のもので初心者にはどっちも難しい。
とはいえライブラリは小さな便利ツールをピンポイントで一個一個作っていくことができる点で
ハードルが低い面はある。
0752デフォルトの名無しさん
垢版 |
2019/04/18(木) 15:19:41.42ID:YY/ze1GU
無理だと言うやつには無理のんだろう
汎用性の高いのは別に問題ないのでは?エクセル自体はどの部署でも使ってるんだから追加でどこまで機能を絞るか縛りを緩くするかの問題でしょ
0753デフォルトの名無しさん
垢版 |
2019/04/18(木) 16:05:19.35ID:FYzqO+ri
プログラム板の他スレじゃ相手にされない半端者がここならドヤ顔で語れるだろうって調子に乗ってて草
0754デフォルトの名無しさん
垢版 |
2019/04/18(木) 17:34:24.27ID:Mwk0+ScA
他プログラムはサンプルや情報が多いからVBAより簡単に現象を獲得できる
0755デフォルトの名無しさん
垢版 |
2019/04/18(木) 17:41:24.05ID:Mwk0+ScA
そもそも他言語はシンプルだしVSならガッツリとインテリセンスが効くから簡単に書けて工数も少なくて済む
文法もVBAは難しい部類
0756デフォルトの名無しさん
垢版 |
2019/04/18(木) 21:55:37.18ID:CoHPfDW+
難しいというか不合理なんだよな
内包表記やヌル安全やモナドみたいに別に難しい概念があるわけでは無い
0760デフォルトの名無しさん
垢版 |
2019/04/18(木) 23:02:30.65ID:ZviCYbcp
マクロでブック開くと、データ量が多いブックの場合開き終わるまで拘束されてしまう。
開き終わってセルに書き込みできるまでに他の処理をさせたい

if application.Ready=False then
(その間にやる処理)
endif

こんな感じに、開くまでの間になにか処理をさせたいのです。
なにかできる方法があったら教えてください
その重いブックは自分で作ったものじゃなくてすぐに改善はできない状況です
よろしくお願いします
0761デフォルトの名無しさん
垢版 |
2019/04/18(木) 23:26:59.03ID:1fisAtwZ
一瞬、マクロを実行するファイルそのものを開く時の待ち時間かと思ったわ。
VBAじゃなくて、VBSで開かせるなら出来なくもなさそうだけど。
0762デフォルトの名無しさん
垢版 |
2019/04/18(木) 23:32:51.10ID:RfIDmYfE
VBAやUWSCのプログラムちょっとできる程度なんだが組み込みのソフトウェア部に転身しろと先輩から言われる。
ちなみに今は製造部の使えないやつ扱いをうけている模様。
これは辞めろってことか
0763デフォルトの名無しさん
垢版 |
2019/04/18(木) 23:38:14.35ID:rY75T8tq
>>762
現場が分かるシステムが欲しいんだろう
かなり必要とされてるように見える。行ってみたら良いだろう
いずれ製造なんて自動化でなくなる部門何だしている
0764デフォルトの名無しさん
垢版 |
2019/04/18(木) 23:39:24.29ID:ycswSyUn
>>760
他の処理ってのがExcel操作だったら無理
ExcelはSTAのCOMなので複数のスレッドからアクセスしても常にタスクを直列にシリアライズして逐次処理する
一個の処理で詰まると後が渋滞するだけ
Officeの他のアプリのVBAとかPowerShellとかJSとかVBSとか、別の言語のプログラムをキックして他のエンジンで処理を実行させることは可能
後でウィンドウなりファイルなりにアクセスすれば処理結果も取れるし
0765デフォルトの名無しさん
垢版 |
2019/04/18(木) 23:42:06.58ID:RfIDmYfE
>>763
ありがとう。
その自動化するための機械作ってるのがうちの会社なんだよね。
機械のソフトウェアだからCとかパイソンになるのかな?
一応情報卒なんだけど自信ないよ
0767デフォルトの名無しさん
垢版 |
2019/04/18(木) 23:47:45.92ID:rY75T8tq
>>765
そうなのか
言語は多分C辺り、pythonは無いと思う
一度面談受けたら?分からない事がさすがに多すぎる
0769デフォルトの名無しさん
垢版 |
2019/04/18(木) 23:51:11.62ID:RfIDmYfE
>>767
Cだよなぁ、ポインタで挫折しちゃったけいけんがあるんだよなぁ。数字の羅列はやってても楽しくないんだよなぁ。グラフィックに実行結果出ないとつまらないんだよなぁ。
でも一生製造で終わりたくはないし…話ししてみようかなサンクス
0770デフォルトの名無しさん
垢版 |
2019/04/18(木) 23:51:26.61ID:RfIDmYfE
>>768
ええんやで
0772デフォルトの名無しさん
垢版 |
2019/04/19(金) 05:04:11.19ID:F+IfR3tb
accessのテーブルに接続するデータテーブルをVBAでrefreshallした時に、
読み込み完了前に次の処理に進むのを止めることできますか?
stopで一時的に止めればいけるけれど、読み込み完了後に次処理に自動的に
進めたいです。
0774デフォルトの名無しさん
垢版 |
2019/04/19(金) 10:27:04.15ID:L5evqwYE
>>773
Excel2010までは簡単だったがExcel2013から複数インスタンスの起動は難しくなったようだな
ただ、所詮重い処理をそのままにして複数起動してももっと重くなるよな

そもそも、重い原因を確認しないと、自動計算を止めれば早くなる可能性もあるが
それをやっていいかもわからん
0778デフォルトの名無しさん
垢版 |
2019/04/19(金) 14:22:48.38ID:L5evqwYE
漠然とした話から連想ゲームして、自分語りを始める
で、好きな事違うから無駄な話が続くんでない
0779デフォルトの名無しさん
垢版 |
2019/04/19(金) 15:58:50.09ID:k3MrA8ng
VBA界には有名人がいないから、いじる対象がないってのもある
他言語だとコミュニティの顔みたいな存在がちらほらいるけどVBAは活動自体ないからな
0780デフォルトの名無しさん
垢版 |
2019/04/19(金) 18:35:20.89ID:bifIXaiQ
ないねぇ
オープンマインドじゃないし自分の考えが正論だと信じ込んでるから新しい発想は受け入れないもん
全部排除
0782デフォルトの名無しさん
垢版 |
2019/04/19(金) 21:09:28.46ID:+TCHgQUv
書道家にWord使ったほうが早いのにとか言っても仕方ないだろ?
VBAは伝統芸能なんだよ
0786デフォルトの名無しさん
垢版 |
2019/04/20(土) 00:10:38.45ID:xcWVlBQQ
昇順で並べたデータ(日付など)の変わり目に一行挿入を繰り返すマクロは作れるかな?
セルの差分の列を作って0でないところに行挿入を考えてるんだが、他に何かないでしょうか先生方
0790デフォルトの名無しさん
垢版 |
2019/04/20(土) 01:43:17.46ID:ojpyozsg
このスレだとプログラマではないひとの質問が書かれるか。
0792デフォルトの名無しさん
垢版 |
2019/04/20(土) 02:37:10.84ID:lNRl64h3
>>790
そりゃそうだろう
vba使う層って事務のにーちゃんねーちゃん+できる営業マンが片手間に使うぐらい
0793デフォルトの名無しさん
垢版 |
2019/04/20(土) 06:25:29.61ID:X4+f+v7V
VBAをプログラムだと思ってる人はいない
0794デフォルトの名無しさん
垢版 |
2019/04/20(土) 07:10:53.95ID:ZcIJD8m+
きみの勝手な思い込みだよ、
と思われたくないなら客観的な根拠をあげた方がいいね
0795デフォルトの名無しさん
垢版 |
2019/04/20(土) 08:13:49.91ID:tWWHyzwg
エクセルの画面が右上に飛んで行って、
画面に「どこいくね〜ん!」って表示させるのはどうでしょう?
0797デフォルトの名無しさん
垢版 |
2019/04/20(土) 09:01:22.69ID:Khb9FcyX
>>796
例えば誰?
0799デフォルトの名無しさん
垢版 |
2019/04/20(土) 11:00:20.54ID:hWWI2xiJ
どうせtwitterのキーワード検索にVBAって入れて出てきたやつとt.tanakaぐらいだろうよ
0800デフォルトの名無しさん
垢版 |
2019/04/20(土) 11:38:03.85ID:9HZyCDJw
Office田中さんはその内の1人だね。
あとはA○○○さん、k○○○○○○さん、魔○○○○○○さん、じ○○○○○○さん、熊○○○さん、K○○さん、き○○○さん、s○○○○さん、y○○○○○○さん、Y○○○○○○さんとか。

き○○○さんは今も活躍されてるけど今は見かけなくなった人が多いけどね。
.netの方へ移動された人もいるし。
ここ数年でVBAやりはじめた人じゃ知らないのも無理無いが。
0804デフォルトの名無しさん
垢版 |
2019/04/20(土) 11:50:13.86ID:lNRl64h3
Office田中はサイトの修正点を送っても反映してくれないのがネック
後続のためにも直してくれ〜
0805デフォルトの名無しさん
垢版 |
2019/04/20(土) 12:06:15.09ID:hWWI2xiJ
解説系とライブラリ提供系に分けられるがそれなりに有用
しかしコミュニティを形成してるかと言うとちょっと
0806デフォルトの名無しさん
垢版 |
2019/04/20(土) 12:20:16.39ID:9HZyCDJw
>>802
I○○○○さんは想像つく。
けど、俺がいた所じゃ見かけたことが無い。
そういやtwitterで発言されてるらしいけど、俺VBA関連はtwitter見て無いんでな。
T○○○さんは想像つかないな。

田中さんは有名人だけどあの人のサイトでは教わることは無いな。
基本的に全て知ってることだから。
でも>>800で挙げた人達は全員俺よりかなりレベルが上だ。
0807デフォルトの名無しさん
垢版 |
2019/04/20(土) 12:22:08.90ID:n0GthIX7
VBAのworksheetfunction.vlookup関数で
該当の値がないときエラーを回避してそこの処理は無視させるにはどんなコードを書けばいいですか?
該当なしだと問答無用でエラーが出て止まってしまう。
0809デフォルトの名無しさん
垢版 |
2019/04/20(土) 12:29:15.35ID:lNRl64h3
>>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
0810デフォルトの名無しさん
垢版 |
2019/04/20(土) 12:43:34.58ID:50ElbllH
>>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
0815807
垢版 |
2019/04/20(土) 15:39:14.34ID:J0kjNxAu
on errorはセンスがないように感じるのですが。
わたしのセンスがon errorを使うことを許しません。
どうしたらいいですか?
こんなとき定番のような方法はないですか?
0816デフォルトの名無しさん
垢版 |
2019/04/20(土) 15:49:30.44ID:Khb9FcyX
on errorで問題ないならそれで良いじゃん
そんな瑣末な事に時間を使わずにもっと生産性のある事に時間を使って組織や社会に貢献して下さい
0817デフォルトの名無しさん
垢版 |
2019/04/20(土) 15:56:13.97ID:9HZyCDJw
On Errorを使うのがセンス無い?
何処の初心者だ?

想定された動作なのに一緒くたにするのが嫌というならOn Errorの使い方を知らないだけだろ。
0821デフォルトの名無しさん
垢版 |
2019/04/20(土) 16:44:47.04ID:lNRl64h3
vbaにtrycatchが無い以上、onerrorで分岐するしかない
ただ今回に限って言えば、ワークシートにvlookup()を入れてその結果で分岐させることは可能
0822デフォルトの名無しさん
垢版 |
2019/04/20(土) 17:45:57.42ID:V7SrR6WW
こんな方法もある

Range("Z1") = WorksheetFunction.VLookup( 略 )

結果をどこか空いてるセルに入れてしまえば、エラーでも止まらずに結果を判定することができる
もうひとつ、試したことはないけど

WorksheetFunction.Iferror( WorksheetFunction.Vlookup ( 略

みたいな方法でもエラーで停止するのを回避できそうな気がするけど、Vlookupで止まるかなあ
0827デフォルトの名無しさん
垢版 |
2019/04/20(土) 19:43:05.64ID:qwsd80fG
>>807
・VlookupじゃなくてFindを使う
・事前にcountifとかエラー値が返らないもので存在確認してから使う
・worksheetfunctionの代わりにApplication.VLookupを使うと見つからなかった場合N/Aが返るが、旧バージョンの命令だからあまりおすすめしない
0828デフォルトの名無しさん
垢版 |
2019/04/21(日) 10:03:39.80ID:fPscZosh
質問者は、もっと具体的に書くべきだな、対応方法は多種多様にあるから
質問に対するベストな回答が、質問者の意図するベストの回答とは限らん
0830デフォルトの名無しさん
垢版 |
2019/04/21(日) 15:59:22.44ID:IGJB+uLA
んて訳の分からん面倒なコードを書くとかキチってるよね
0835デフォルトの名無しさん
垢版 |
2019/04/21(日) 17:37:30.55ID:VJZKP3mE
>>831
お前の言ってることは結局、コ−ド書かないと動かないって酷くないですかってのと同じ。
0836デフォルトの名無しさん
垢版 |
2019/04/21(日) 17:51:22.14ID:fXlSQHRa
>>834
アスペか?
配列の次元を取得するのにOn Errorを使うなどという事自体は酷い。これは事実だ。
それに対して「何も分かってない」とdisる以上、On Errorを使わない真っ当な方法があると解釈するのが当然のこと。
0842デフォルトの名無しさん
垢版 |
2019/04/21(日) 18:19:22.95ID:VJZKP3mE
>>840
それはVBAに無いものをあげつらっているだけ。
VB.netやC#に無いものをあげつらうことも出来るだろ。

そもそも何が酷いのかサッパリ分からん。
0843デフォルトの名無しさん
垢版 |
2019/04/21(日) 18:26:29.16ID:fXlSQHRa
On Error とか例外機構っていうのは、メモリ不足とかファイルの不在なんかのソフトウェア的には想定しづらい
例外的な事象に使うものなんだよ。
例えば「関数引数に対する事前条件がもし守られていなかったら」なんていう
ソフトウェア的に想定できるような事には例外を使うのべきじゃない。
ましてや配列の次元の取得なんてことに使うのは「ひどい」としか言いようがない。
それはセンスとかの問題じゃなくて常識だと思うよ。
0848デフォルトの名無しさん
垢版 |
2019/04/21(日) 18:47:06.02ID:VJZKP3mE
例えば昔仕事で扱ったWin32APIのGetPrinterでは取得するPinterInfo2構造体のサイズを0にして渡して敢えて失敗させることによって正しい構造体のサイズを取得するなんてのがある。
再度正しいサイズで実行するやり方が想定されていて、そして失敗時はdllエラーも当然発生するなんてのが有るわけなんだが。

確かDevmode構造体を取得するする時に使うDocumentPropertiesも同じような使い方してたと思う。
0850デフォルトの名無しさん
垢版 |
2019/04/21(日) 18:48:56.55ID:fXlSQHRa
>>844
まず次元の取得方が標準で用意されていない点が少しひどい。
さらにそのワークアラウンドがOn Error利用である点が一層酷い。
わかる?
これでキミもバッチリだ。
0853デフォルトの名無しさん
垢版 |
2019/04/21(日) 19:11:57.22ID:jEVddS48
>>841
実質同じ事って言い出すと何でもアリになってしまう
onerrorしかないと可読性が大きく下がる

ところでEXCELで次元数を取得する機会って一度も無いんだけど、
よく使う計算なのか
0855デフォルトの名無しさん
垢版 |
2019/04/21(日) 19:17:57.47ID:sGJaU8ZR
>>853
多分、配列を初期化したかしてないかの話じゃないかと思うね。
UBoundでエラーが出る話だろう。
で、Sgnが嫌なんだろう。
0856デフォルトの名無しさん
垢版 |
2019/04/21(日) 19:35:22.79ID:uW2zy1zl
>>848
それはちゃんとドキュメント化されてるだろ
On Errorで次元を取得するのとはレベルが違うよ
動けばいいと言うレベルのコーダーならいいのかも知れないけど
0857デフォルトの名無しさん
垢版 |
2019/04/21(日) 19:54:31.81ID:sGJaU8ZR
>>856
何言ってるの?
On Errorしかないのが正式なら同じだし、
On Error以外に正式なものがあれば問題ないし、
同じことじゃねーかw
しかも後出ジャンケンかよw

結局言い掛かりもいいところだ。
0858デフォルトの名無しさん
垢版 |
2019/04/21(日) 20:04:00.06ID:fXlSQHRa
On Error 以外に配列の次元取得方法がないと決まった訳じゃなくて、よく知られてる方法がOn Error利用だってだけだが、
割り切ってAPIを呼んでいる人もいる。
0859デフォルトの名無しさん
垢版 |
2019/04/21(日) 20:08:00.46ID:x8017e7/
>>749
え、お前の会社って稟議書や経費精算の業務って全部署共通じゃないの?
その会社固有の業務だけど、部署間で使い回しの効く部分のことを言ってるんでしょ?
0860デフォルトの名無しさん
垢版 |
2019/04/21(日) 20:13:12.66ID:xKbBXXRb
>>843
とりあえず構造化例外処理すらない時代の言語にいってもしょうがない話
常識は時代で変わるんだよ
結局はVBAは古い時代の言語ってだけ

あと、配列の次元が知りたいとか設計が悪いとしか思えん
0862デフォルトの名無しさん
垢版 |
2019/04/21(日) 20:28:15.67ID:uW2zy1zl
>>860
> あと、配列の次元が知りたいとか設計が悪いとしか思えん
君には不要というだけの話
他の言語では普通に多次元配列用のライブラリとかある
0866デフォルトの名無しさん
垢版 |
2019/04/21(日) 21:27:51.81ID:4kO5c1T5
じゃあどうしてもOn Errorが嫌だとして、
他の方法が幾つか出てるんだから、それ試しなよ。
0867デフォルトの名無しさん
垢版 |
2019/04/21(日) 21:47:12.89ID:jEVddS48
trycatheなら関数に封じ込める事ができるけど、
onerrrorはグローバルだから全体に影響してしまうのが最高に糞なんだ
正直、グローバルじゃなければ別にonerrorだろうとなんだろうと構わんのだよ
0868デフォルトの名無しさん
垢版 |
2019/04/21(日) 22:30:28.20ID:lDsGwf3y
on errror が糞とかどうとかお前の趣味に合わせて出来てる訳じゃ無いんだよアホウ
0869デフォルトの名無しさん
垢版 |
2019/04/21(日) 22:32:03.89ID:fXlSQHRa
>>866
君の言う通りだ
反発を受けてるのは「文句言わずにonerror使え」とか言い出した奴ですよ

ただ次元数をライブラリに渡せっていうのはナシだ
0871デフォルトの名無しさん
垢版 |
2019/04/21(日) 22:57:54.67ID:sGJaU8ZR
>>861
大いなる自己矛盾の中にいることに気付かないとはね。
論理的思考能力が無いならプログラムを組むのなんか辞めることだな。
0872デフォルトの名無しさん
垢版 |
2019/04/21(日) 23:18:19.59ID:FIa/C0XL
ついに公務員の副業が解禁される時代が到来した
https://hybridstyle.net/side-job065/
フリーランス市場規模が20兆円を突破 -副業は8兆円-
https://hybridstyle.net/work-style020/
時代は週休3日制へ【週休3日制導入企業まとめ】
https://hybridstyle.net/work-style016/
会社員の副業が急増、副業フリーランス4年で3倍、経済規模は約8兆円??副業収入は平均74万円
https://www.businessinsider.jp/post-165077#cxrecs_s
本業のストレス解消、副業で月70万、転職のお試し…会社に内緒で副業する人たちの本音
https://www.businessinsider.jp/post-176835#cxrecs_s
どんな仕事でいくら稼いでいる? 副業をしている13人に聞いたそのリアル
https://www.businessinsider.jp/post-180772#cxrecs_s
会社が個人を縛り付ける時代は終わった。これからは、個人が仕事を求めて、チャンネルのように会社を切り替えていく。
https://www.wantedly.com/companies/newpeace/post_articles/65530
誰も教えてくれなかった「フリーランスは厳しい」ではなく「甘い」という真実。
https://www.wantedly.com/companies/newpeace/post_articles/54124
【特集】年収1000万円以上「フリーランスの流儀」vol.2
https://tabi-labo.com/286733/journey-six-figure-freelance-nathan
「排出物ゼロ、廃棄物ゼロ、貧困ゼロ」究極のエコ・リゾートがフィリピンに
https://tabi-labo.com/284193/nautilus-eco-resort
仕事は9割外注すれば売り上げが爆増する
https://headlines.yahoo.co.jp/article?a=20190416-00028392-president-bus_all
0873デフォルトの名無しさん
垢版 |
2019/04/22(月) 04:52:26.38ID:PMsDbBhF
>>871
何を言いたいのさっぱりかわからんw
低能が反論できずに有耶無耶にしたいときによくやる方法だな
0875デフォルトの名無しさん
垢版 |
2019/04/22(月) 08:55:19.16ID:aI1C8h9/
>>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
0876デフォルトの名無しさん
垢版 |
2019/04/22(月) 09:24:57.57ID:J7q/uljF
>>873
やっぱり分からんかw
お前はドキュメント化されていれば正式だと言ってる。
しかしそれは結局MSの判断ということだ。

お前はOn Errorが正式では無いという回答そ貰ったのか?
そうでなければお前の「正式な方法がないって話だぞ」というのはお前の決め付けだ。

結局お前の中には矛盾した2通りの正式が存在することになる。
0877デフォルトの名無しさん
垢版 |
2019/04/22(月) 11:15:47.81ID:5Mb1x8/S
local付けると局所だと思ってたけど、配下に有効みたい。
つまり、付けても動作に変わりはない(?、詳細は試してない)
0878デフォルトの名無しさん
垢版 |
2019/04/22(月) 11:20:03.08ID:5Mb1x8/S
昔試したときに、local有無で動作違ってたはずなんだけどな…
まあ、配下に有効だから、goto 0で無効にしてから callすれば局所化は可能かと
0879デフォルトの名無しさん
垢版 |
2019/04/22(月) 11:24:44.90ID:aI1C8h9/
>>877
呼び出し先で親要素のon erroの状態が有効なのはもともとなので、使ってもあまり意味は無い気がする

on local もう廃止されたっぽい?MSDNにも無い
https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/on-error-statement#see-also

互換性のためにあるってブログ記事見つけたけど、かなり古い
https://www.papy.in/bbs/vb2/200401/04010015.html

なんやろね
0880デフォルトの名無しさん
垢版 |
2019/04/22(月) 12:01:35.50ID:16RvV/Xe
俺も On error Goto でtry Catchと同程度のことができると思ってた
要するに書き方かなと思ったが1回目のエラーはいいがそれ以降が使えないじゃん?
ネストするにも無理があるな、複数の場所(例えば2重ループで)でのやり方があるかもしれんが
無理じゃない?
俺は「On error Goto」で出来ると思ってた、やり方があれば申し訳ないが教えてほしい
0881デフォルトの名無しさん
垢版 |
2019/04/22(月) 12:11:57.97ID:iJf9Bl/o
エクセルで、複数ブックの特定文字列だけ一気に変えるマクロってどこかで紹介されてますか?

例えば2018年4月21→2019年4月23日に変える感じです

日付が入力されているセルがそれぞれのブックでバラバラなので、セル指定置換はできないようです
0882デフォルトの名無しさん
垢版 |
2019/04/22(月) 12:22:36.94ID:CZHT0AcU
>>876
よほど多用されてるとかでない限りいちいち〇〇は正式じゃないなんて言う回答なんてするわけ無いだろ
レスが馬鹿すぎるw
0883880
垢版 |
2019/04/22(月) 12:24:36.91ID:16RvV/Xe
例えば
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回目のエラーでメッセージボックスが出る
回避方法を教えてほしい
0884デフォルトの名無しさん
垢版 |
2019/04/22(月) 12:30:37.21ID:16RvV/Xe
赤っ恥
On Error Resume Next
はこれなら大丈夫だが
On Error GoTo Nosheet
はNGって話です でもそれじゃあ書いてる意味がないので
結局
On Error Resume Next で次を考えるなかななの、一番使いたくないんだが
0885デフォルトの名無しさん
垢版 |
2019/04/22(月) 12:39:43.58ID:aI1C8h9/
On Errorは全体に作用しすぎるから、isError的な感じでfunction分けた方が良いんじゃないか
0886デフォルトの名無しさん
垢版 |
2019/04/22(月) 14:10:46.51ID:5Mb1x8/S
>>884
onerrorgotoをメインの処理の流れ制御には使わない方がいいと思う。

On Error Resume Nextは、次行にエラーがあると想定されるときに使い、If Err.Numberで判定して、その値によって処理を変える。

On Error GoTo は、どちらかというと、一つの処理(subやfunct…)の頭で宣言し、想定外のエラーを検知してエラーを出すのに使う。
0887デフォルトの名無しさん
垢版 |
2019/04/22(月) 15:22:43.51ID:16RvV/Xe
>>886
ありがとう、他の言語も使ってるから勘違いしていた
対応することはもちろんできるし、Excelの環境を利用しながらの
プログラムは有効なので、仕方ないのであれば考えるは
考えてなかったのが、お恥ずかしい
0888デフォルトの名無しさん
垢版 |
2019/04/22(月) 15:50:34.25ID:NGsjV6Cl
なんかアプデ来てからwebクエリのバグが起こって実行エラー 1004で読み込めないんだけど
俺だけ?
0890デフォルトの名無しさん
垢版 |
2019/04/22(月) 16:30:51.55ID:NGsjV6Cl
>>889
「Webクエリによって返されるデータがありません」とか言われるけど
読み込み先のWebページみても仕様の変更とかURLの変更とか見られないし明らかにExcelアプデが原因っぽいんよなー
0893デフォルトの名無しさん
垢版 |
2019/04/22(月) 20:20:53.32ID:TdnLJYYl
>>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
0894デフォルトの名無しさん
垢版 |
2019/04/22(月) 20:57:12.59ID:J7q/uljF
>>882
何言ってんの?
回答するかしないかはどうでもいい。
お前が回答を貰って無い以上、不明ということだ。
つまり、「正式な方法が無い」などという発言は明らかに矛盾している。

もはや、「正式」という言葉をどう解釈するかという問題になって全くアホらしいが
、MSに方法が無いのかと問えば、何らかの回答をするだろう。
それを正式な方法と考えれば、日本語の解釈に固執するバカ以外は問題無いわけだ。
0895デフォルトの名無しさん
垢版 |
2019/04/22(月) 21:03:25.39ID:J7q/uljF
>>886
基本的に同じ考え。
1つ付け加えると、On Error Resume Nextはエラー処理終わったらエラーをクリアしてすぐにOn Error Goto 〜とかに戻す。
0896デフォルトの名無しさん
垢版 |
2019/04/22(月) 21:10:24.20ID:aI1C8h9/
>>895
vbaでエラー処理の状態って取得できる?
目視確認無しで、エラー処理の方法てすぐに戻せる?
よく考えたらこれ出来ない気がする
0900デフォルトの名無しさん
垢版 |
2019/04/23(火) 02:07:57.42ID:0gP7mQx4
Excel VBAの例外をあてにしたロジックは危険だよな。
0901デフォルトの名無しさん
垢版 |
2019/04/23(火) 02:16:09.43ID:0gP7mQx4
On Error Resume Next

↑この構文そのものがわかりにくいんだよ。
0903デフォルトの名無しさん
垢版 |
2019/04/23(火) 02:22:13.18ID:0gP7mQx4
オブジェクト操作でなんだかわからないがエラーが発生しても処理を続行するというのは独特。いかにもVBAの適当さが出ている。
0904デフォルトの名無しさん
垢版 |
2019/04/23(火) 02:26:37.40ID:0gP7mQx4
VBAと関係ないがT-SQLも例外の事前定義がないから、トライ、キャッチ構文が役に立たない。
0905デフォルトの名無しさん
垢版 |
2019/04/23(火) 03:09:34.52ID:EzLBs57R
>>903
Excel VBAのOn Errorは、これから出るエラーの種類や原因がわかった上で使う場合がほとんどだと思うぞ
事前に回避する処理を書くより、事後にエラー処理をした方が簡単な場合があるから
0907デフォルトの名無しさん
垢版 |
2019/04/23(火) 08:14:21.83ID:5pALgJfd
>>897
完全に論理崩壊w
どうしてこんなバカがここにいるんだ?
正式な方法が無いなどと決めつけてるんだからお前がその根拠を示すべきだろ。

俺は何らかの正式な方法がある「だろう」と言ってる。
MSが出来ないなんて回答する筈が無いからな。
実際少なくともOn Error使って出来るわけだ。
MSが出来ないと回答しなければそれが正式な方法だ。
0908デフォルトの名無しさん
垢版 |
2019/04/23(火) 08:21:09.21ID:fXkN/03K
>>895
便乗で付け加えると、局所的に onerrorgoto使って、エラーリカバリーしてresumeで処理継続できる。
これ知ったときめちゃ便利やんと思ったし、出番もあったはずだが、ほとんど使ったことない。
0909デフォルトの名無しさん
垢版 |
2019/04/23(火) 12:25:16.87ID:on29KSlM
>>907
そんなこと言うならPinterInfo2構造体のサイズを取得するのはGetPrinter()しかないことをMSに確認したのか?
って>>848に言ってやれよw
0910デフォルトの名無しさん
垢版 |
2019/04/23(火) 12:34:34.45ID:5pALgJfd
>>909
???
エラーを起こすことを想定した処理をMS自身が提示していて、しかも一般的に普通に使われていて(俺のまわり And Web等)、それに対して問題だなどと思わんから確認する必要など全く無いわけだが。

論理って知ってますかw
0915デフォルトの名無しさん
垢版 |
2019/04/23(火) 15:25:33.99ID:TO9xpynT
明日からVBAエキスパートの試験が変わるっていうから、今日駆け込みで受けてきた
……資格スレどこ行ったんですか?
0916デフォルトの名無しさん
垢版 |
2019/04/23(火) 15:26:45.52ID:mws1yUQf
なんだかよくわからんがPinterInfo2構造体とやらのサイズ取得にエラーを利用する方法をMSがサンプルとして(?)あげているけど
配列の次元取得に対してはそういうものがないって話なのか?

で、どうした?
0917デフォルトの名無しさん
垢版 |
2019/04/23(火) 16:17:47.24ID:wF2jTWiQ
>>891
もう一度最初から新しいクエリを作成したらいけた
んー原因不明のまま更新するの怖いなー
0920デフォルトの名無しさん
垢版 |
2019/04/23(火) 17:42:29.14ID:bpSzJrYS
質問スレで聞けば教えてくれるかもよ?
MSにきけば教えてくれるかもよ?
何もしなくても問題ないかもよ?
0922デフォルトの名無しさん
垢版 |
2019/04/23(火) 18:23:31.46ID:y9L+A8C2
結果が同じなら中身なんて気にするな
そんなに突き詰める程の言語じゃないだろ
サッサと次の仕事しろ
0923デフォルトの名無しさん
垢版 |
2019/04/23(火) 20:31:07.64ID:5pALgJfd
>>911
論理が分からないからそういう反応するわけだw

あのね、俺はOn Error使って問題無いの。
A1セルに1を入れるのにRange("A1").Value=1よりもっと良い方法があるかMSに確認するバカとは違う。
0928デフォルトの名無しさん
垢版 |
2019/04/23(火) 21:41:15.46ID:0gP7mQx4
Excel VBAには定義エラーが明示されていないから仕方ないね。

仕様が明確に公表されていないから、全体としてはエラーハンドリングは何かエラーが発生したら、止めるような方針になってしまうのはあたりまえ。
0929デフォルトの名無しさん
垢版 |
2019/04/23(火) 22:04:24.18ID:zhMneqp1
お前らまだ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などで判定してリカバリ処理を行う

そんだけだろうが
0930デフォルトの名無しさん
垢版 |
2019/04/24(水) 08:06:50.84ID:XjMFaq8o
>>924
俺はそんな暇人じゃ無いんでね。
もっと有意義な探求をしてる。

お前は一生Range("A1").Value=1よりもっと良い方法を探求してくれwww
0931デフォルトの名無しさん
垢版 |
2019/04/24(水) 08:15:59.12ID:fPgUISCk
>>930
> 俺はそんな暇人じゃ無いんでね。
そうなんだ、5chでバカを晒す暇はあるのにねw

> お前は一生Range("A1").Value=1よりもっと良い方法を探求してくれwww
まさかと思うけど
> もっといい方法があるかもよ?
が皮肉だと言うことに気づいてないのか?
0932デフォルトの名無しさん
垢版 |
2019/04/24(水) 08:40:38.65ID:XjMFaq8o
>>931
ほう、お前はコード書く以外のことはしないというわけかw
俺は完全に手遅れを晒すバカとは違う。

皮肉?
日本語も分からないようだw
0933デフォルトの名無しさん
垢版 |
2019/04/24(水) 08:43:32.78ID:jAXSwib1
vbaに向上心も何もないだろう
EXCELの追加機能なんだから全体のルーチン見直したほうがよほど生産性たかまる
0934デフォルトの名無しさん
垢版 |
2019/04/24(水) 08:45:38.52ID:fPgUISCk
>>932
> ほう、お前はコード書く以外のことはしないというわけかw
お前は一日中コードしか書かないバカコーダーかよw

> 日本語も分からないようだw
皮肉すらわかってないのか…
向上心がないとこうなるんだな、ちょっと可哀想
0935デフォルトの名無しさん
垢版 |
2019/04/24(水) 08:49:07.09ID:XjMFaq8o
自己矛盾という指摘に対して反論出来なくて悔しいのかもしれんが、本論からずれた発言を繰り返してもバカを晒すだけだぞw
0936デフォルトの名無しさん
垢版 |
2019/04/24(水) 08:51:56.98ID:XjMFaq8o
>>934
www
そうだねえw
つまりアホな探求する程暇人じゃ無いけど5chに書き込む暇はあるよねえ。

バカ以外はそんなこと最初から分かる筈なんだがw
0937デフォルトの名無しさん
垢版 |
2019/04/24(水) 08:59:28.69ID:4FmAPp0L
「 ほう、お前はコード書く以外のことはしないというわけかw」
←こういうのが皮肉なんだがw
0939デフォルトの名無しさん
垢版 |
2019/04/24(水) 09:18:52.68ID:2kOBrVmZ
本人が何を言おうと草が多いほど知能が低いってみんな知ってるんだよねwwwww
行末wはNG設定しとけwwwwwww
0940デフォルトの名無しさん
垢版 |
2019/04/24(水) 10:54:38.05ID:xjn5dw9t
>>929
そんな事は当然知っとるわ
今更そんな当たり前の事を知ったかで出しゃばるな
ダセー奴だな
0941デフォルトの名無しさん
垢版 |
2019/04/24(水) 12:24:55.92ID:AiHhhuXg
>>935
> 反論出来なくて悔しいのかもしれんが、本論からずれた発言を繰り返してもバカを晒すだけだぞw
なんだ自分のことはよくわかってるじゃないかw
あと一日中コード書くとか言い出したアホは>>932
皮肉とか言い出してるけど、皮肉にしても頓珍漢すぎる
0942デフォルトの名無しさん
垢版 |
2019/04/24(水) 12:48:12.72ID:4FmAPp0L
>>941
悪かったわw
論理が分からないアホには丁寧に説明しなきゃならんのだな。

俺は1日中コードを書く人じゃないんで
5chに書き込む時間は有るけど、>>930を受けて「5chでバカを晒す暇はあるのにねw」等と書く君は俺が5chに書き込む時間があると想像すらできないような人、つまり君自身は1日中コードを書いているような人なのかい?という問い掛けが>>932なわけだがw

>>932でどうして君じゃなくて俺が1日中コードを書く人になるのか全く理解に苦しむねw
0945デフォルトの名無しさん
垢版 |
2019/04/24(水) 15:35:02.84ID:AiHhhuXg
そもそもドキュメントとか仕様についてMSに確認する話がいつの間にか一日中コード書くとかの話になってる
って言うのが頓珍漢だって言うのに>>942みたいな的外れの解説を必死にされてもどんだけ暇なんだよ?
としか思わんよww
0946デフォルトの名無しさん
垢版 |
2019/04/24(水) 15:37:00.60ID:4mp6v/QI
コード書く仕事したいがどこも雇ってくれん。
国立の数学の院卒でもね。
歳喰ってから出たやつは価値なしとか。
同期の若い奴らは日立、富士通…のSE待遇で雇用。
0948デフォルトの名無しさん
垢版 |
2019/04/24(水) 16:05:56.23ID:7SMJ1lAg
>>946
院まで出てコード書きたいのが優先というのがまずおかしい
院出て SEなんて、せっかくの知識を活かせるとこは殆どないと思う
(たまたま数学を活かせるとこ担当するかもだが)

日立なら中央研究所(今呼び方違うかもしれん)に行け。内容によっては実証コードも書く
数学の知識使って、世の中にないものを生み出せ
0949デフォルトの名無しさん
垢版 |
2019/04/24(水) 17:26:40.04ID:Hk6Djwjj
エリートがコードを書くようにならないといけないと思うよ
ただし受託開発じゃダメだけど
0952デフォルトの名無しさん
垢版 |
2019/04/24(水) 20:20:45.69ID:4FmAPp0L
>>945
???
MSに確認する話は>>923に対して君が反論出来ない状態にあるから、もう終わったものという認識だが。

君にとっては君の主張である「On Errorは正式では無い」はMSに確認していないから不明ということで自己矛盾。

俺にとってはOn Errorが正式なものでは無いとしても、どっちにしろ正式な方法はあるだろうだろうから「VBAには正式な方法が無い」という君の主張は根拠がないという俺の主張は何ら覆されていない。

そして、俺にとってはOn Errorが正式なものだろうがそうで無かろうが問題とは思っていないのでMSに確認する必要は全く無い。

しかし、君にとっては自らの主張を通すためには君がMSに確認して、しかも「方法は無い。」という回答を引き出す必要がある。
0953デフォルトの名無しさん
垢版 |
2019/04/24(水) 20:56:08.64ID:AiHhhuXg
まだやるのかよw
ならお前はまず
>>857
> On Errorしかないのが正式なら同じだし、
> On Error以外に正式なものがあれば問題ないし、
のいずれかが正しいこと示せ
もちろんMSの正式な回答付きでな
0954デフォルトの名無しさん
垢版 |
2019/04/24(水) 21:04:13.97ID:4FmAPp0L
>>953
www
ここまでバカかよ。

俺は示す必要無いの。
確認する必要もない。

君は示す必要が有るの。
確認する必要もある。

主張する立場の違いと、対偶と逆は違うということを勉強しておいでw
0955デフォルトの名無しさん
垢版 |
2019/04/24(水) 21:12:12.35ID:4FmAPp0L
ついでに言っとくと、君の「正式な方法が無い」なんて主張には全く説得力が無いが、エラーを想定した処理を例に挙げたのもそうだし、どう見てもバグとしか思えない挙動を仕様とするMSが「方法が無い」などと回答するとは思えないというのは、説得力が有ると思うがねw
0958デフォルトの名無しさん
垢版 |
2019/04/24(水) 21:48:10.11ID:4FmAPp0L
ああ、バカはやっぱりバカなんだなあw

今の議論は以下の図式と同じなんだよw
君「これからサイコロをふると必ず6が出る」
俺「君の主張はおかしい」

君は必ず6が出るということを理論的に示さない限り君の主張は通らない。
一方、俺は仮に必ず6が出るということが理論的に示されても問題ない。
理論的に示せていない君の最初の主張をおかしいと言っているのだから。

君がMSから「方法は無い」という回答を勝ち取っても君が自己矛盾に陥っていたという事実は変わらん。
が、そのときはVBAには正式な方法が無いというのを認めてやろう。
これが1点目。

2点目は、確かに俺は少なくとも何らかの方法があるだろうと言っている。
しかし「だろう」だし、その根拠も示している。
それに対して君は何ら反論出来ない状態だ。
つまり、君は反論するための行動を取る必要がある。
俺は君の反論待ちだ。
0959デフォルトの名無しさん
垢版 |
2019/04/24(水) 21:52:08.42ID:4FmAPp0L
相手の主張を否定する立場は、自らの何かを正しいとか調べる必要は無い。
相手の主張の問題点を指摘するだけで良いんだね。

これが主張する立場の違いだ。
0962デフォルトの名無しさん
垢版 |
2019/04/24(水) 22:48:06.43ID:fyMS/8EK
>>950
だよね〜。
日本企業のSEなんて、羨むような仕事にありつけることは稀だと思うし、何十年もやりたいことを続けられることはまずない
実力あるなら、googleとかも候補だよね。MSは微妙か…
英語いけるなら
0963デフォルトの名無しさん
垢版 |
2019/04/24(水) 23:02:08.32ID:gVrMWpFh
>>959
人に主張の根拠を要求するならお前も指摘の根拠を出せって話な
否定だからいいとか頭湧いてるのかよw
0968デフォルトの名無しさん
垢版 |
2019/04/25(木) 08:11:46.50ID:pQMWPhoY
>>966
> だから根拠は出してるし、君の反論待ちなんだがw
> 根拠は2つも出してるぞ。
具体的にレス番示して引用してみw

>>967
言ったはなから連投ww
0969デフォルトの名無しさん
垢版 |
2019/04/25(木) 08:19:58.06ID:dOIT7JQu
>>968
何でバカにそんな親切なことをしなきゃならんのか分からねえが、以下2つが根拠だ。

>>848
>>894

これに対してのお前の反論は全く意味の無い反論だ。
0970デフォルトの名無しさん
垢版 |
2019/04/25(木) 08:21:47.33ID:dOIT7JQu
あと、お前が自己矛盾に陥っている点についても、お前の反論待ちなw

確定してないのに根拠もなく正式な方法が無いなどと言ってたんだからなw
0971デフォルトの名無しさん
垢版 |
2019/04/25(木) 09:31:53.90ID:pQMWPhoY
>>969
なんの根拠を書いてるんだよ…
お前が書くのは
> On Errorしかないのが正式なら同じだし、
> On Error以外に正式なものがあれば問題ないし、
のいずれかが正しいことの根拠な
>>848は次元数の取得の話じゃないし>>894に至ってはお前の妄想じゃねーかw

念の為にもう一度書いとく
>> 人に主張の根拠を要求するならお前も指摘の根拠を出せって話な
できないなら黙っとけ

>>970
確定してないという根拠を出せよw
0973デフォルトの名無しさん
垢版 |
2019/04/25(木) 12:42:06.81ID:dOIT7JQu
>>971
バーカw

問題が分かってねーみたいだから君の自己矛盾の話からいこう。

君は「正式な方法が無い」と言っているが確認していないので実際は正式な方法があるか無いか分からないという状態だ。
従って「正式な方法が無い」は間違い。
つまり確認するまでもなく君は間違ってる。

俺の主張は君の理論には間違いがあるというものだから確認する必要はない。
自己矛盾の話においては俺は正式な方法が有るなどとさえ言っていない。

自己矛盾の話とは別に「正式な方法が有るだろう」とは言ってるが、まずは自己矛盾の話を解決してからだ。
本当は一度に解決したいがアホが問題点をきちんと把握してないからしようがない。
0974デフォルトの名無しさん
垢版 |
2019/04/25(木) 12:50:41.21ID:dOIT7JQu
確定してないという根拠w

確定した根拠を示さなければ確定してないということだろw
何言ってんだ?

逆の立場だったらどうなる?

「On Errorが正式な方法だ」
「その根拠は?」
「正式ではない根拠は?」

これでOn Errorが正式な方法だという結論になると思ってるなら笑えるわw
0975デフォルトの名無しさん
垢版 |
2019/04/25(木) 12:54:24.13ID:QfWIraMG
ifで#N/Aのエラーが入っていなければ処理したいのですが、どう書いたらいいですか?
0977デフォルトの名無しさん
垢版 |
2019/04/25(木) 15:23:40.14ID:LEVSkzzI
質問です。
あるセルに表示は日付設定で日付を入力すると
その範囲でSQLを呼んでデータを抽出するのですが
一台の端末だけ日付を例えば2019/04/25と入れると
値が2019/04/25(木)と変換されてしまいます。
50台以上ある端末で1台だけの現象ですが原因がわかりません。どのような原因がありえますか?
0978デフォルトの名無しさん
垢版 |
2019/04/25(木) 15:35:21.42ID:ziGJbyMZ
>>977
最初からセルの書式設定が入力されている。全体ではなく一行目だけどかも見たほうが夜い
ロケールも影響するかもしれない
0981デフォルトの名無しさん
垢版 |
2019/04/25(木) 18:46:43.13ID:vKKospK1
>>977
一般的に、表示(書式)に影響されてはいけない
値を取得して、都合いいように変換して使う
Text(だっけ?)ではなくValueを使う
0985デフォルトの名無しさん
垢版 |
2019/04/25(木) 21:12:34.41ID:jFTtrwgp
>>977
そのPCのExcelの設定だろうな。

何を考えてやっているか知らないけど、Excelのセルの書式は文字列にしておいた方が無難。

だいたい見た目を気にしている理由を聞きたい。
0986デフォルトの名無しさん
垢版 |
2019/04/25(木) 21:20:54.83ID:8JRUryOU
>Excelのセルの書式は文字列にしておいた方が無難。
さすがにそれはないw
標準で良い
0987デフォルトの名無しさん
垢版 |
2019/04/25(木) 21:29:32.34ID:jFTtrwgp
>>986
それはあなたが想定している使い方の場合でしょ。

質問しているひとはSQLにも触れている。Excelを中心に考えると面倒なことになるよ。
0989デフォルトの名無しさん
垢版 |
2019/04/25(木) 21:45:13.02ID:dOIT7JQu
>>979
ごちゃごちゃwwwwwwwwwwwwwww
ワロタwww

反論出来なくて顔真っ赤ってか?

お前が根拠を示せないことが俺の根拠なんだよw
0990 ◆QZaw55cn4c
垢版 |
2019/04/25(木) 21:50:10.00ID:6xUIrXDu
on error goto とか N-BASIC にもあったくらいだし、何をいまさら、という感じがします
0991デフォルトの名無しさん
垢版 |
2019/04/25(木) 21:59:43.27ID:jqthfa4A
>>990
そのエラーがなんなのかチェックせずに、ひとくくりにして処理を続行させる構文が存在するから議論になっている。
0993デフォルトの名無しさん
垢版 |
2019/04/25(木) 22:09:01.00ID:dOIT7JQu
>>991
違うよ。
そのエラーが何なのか調べないなんて論外。
だけどエラー処理を通常処理に使うのはダメだっつう主張だったからMSだって正式な処理としてやってる話を突っ込んだら、おかしなことを言い出して、ここまで続いてる。
0994デフォルトの名無しさん
垢版 |
2019/04/25(木) 22:15:06.85ID:jqthfa4A
>>993
それは違う。マイクロソフトの説明では特定の操作時はこのエラーしか発生しないと決めつてエラー構文を使えと言ってしまっている。
0995デフォルトの名無しさん
垢版 |
2019/04/25(木) 22:17:18.85ID:JpEf0ZAX
>>987
具体的なことが書いてなくてよくわからない

>あなたが想定している使い方
どんな使い方だと考えてる?

SQLで使うとき、標準ではなく文字列にする理由は?

>面倒なことになる
どんな面倒なことになるのでしょう?
0996デフォルトの名無しさん
垢版 |
2019/04/25(木) 22:19:53.24ID:jqthfa4A
Excel VBAのスレでは話が噛み合わないと思う。
0997デフォルトの名無しさん
垢版 |
2019/04/25(木) 23:00:39.46ID:TOmG9Zzp
アホくさいけど、エラーが出ないようにVLOOKUPする簡単なやり方がある。
最初に、検索値をそのまま検索される方のシートにコピペしちゃうの。
本当にアホ臭いけど。
0998デフォルトの名無しさん
垢版 |
2019/04/25(木) 23:15:13.01ID:AISkc2sG
>>997
おっさん、それじゃ値が二つできてしまう
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 40日 2時間 42分 25秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。

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