Excel VBA 質問スレ Part61
at TECH
[前50を表示]
350:デフォルトの名無しさん
19/05/27 10:37:56.08 6csejWaN0.net
おだてるの意味間違えてるよ。
351:デフォルトの名無しさん
19/05/27 10:41:41.92 W0zr6KdF0.net
>>350
いや〜そうでもないよ
理解力は両方とも0.1%〜0.01%程度と思ってたから
352:デフォルトの名無しさん
19/05/27 11:25:38.71 bVlhmZqp0.net
てか、みんなが
>>345←この説明で全容を理解できてるのがすごいとおもったけど
いろんな意味に解釈できそうで、おれにはそのうちの一つには絞りきれないんだけど
353:デフォルトの名無しさん
19/05/27 11:44:36.09 dknccbkiM.net
>>352
教えたい人種の大半は問題の表層を自分の得意分野に転換して持論を得意気に展開してるだけ。
質問者の問題の背景に寄り添って解決を計ろうとする者は僅か。
354:デフォルトの名無しさん
19/05/27 13:50:33.03 6csejWaN0.net
>>352
どういうパターンであれ、大体ロクでも無い物だという判定ぐらいなら可能
355:デフォルトの名無しさん
19/05/27 14:00:43.29 zUYqf9yC0.net
>>345
ここの人達はマウント取りたいだけで実際はあまりスキルが無い人が大半なので程々に聞いていた方が良い。
あなたの要望については疑問が1つ、可能だけどあなたのスキルから考えて技術的に難しい点が1つある。
疑問は、AutoOpenで開いて、閉じるボタンで保存終了するのならExcelで作る必要は無いのでは?という疑問。
普通にC#辺りで作った方が適してると思う。この後に述べるけど、カレンダーの件もC#等の方が簡単。
技術的に難しいのはカレンダーの実現。
サブクラスとWin32の知識が無いと難しい。
後々を考えると汎用的にクラス作った方が良いからそういう技術も必要。
もっとも、ファイル追加とか自作するとかで良ければスキルが無くても出来るともいえる。
356:デフォルトの名無しさん
19/05/27 14:36:42.16 dknccbkiM.net
>>355
この人はマウント取りたいだけで実際はあまりスキルが無い人なので程々に聞いていた方が良い。
357:デフォルトの名無しさん
19/05/27 14:38:46.48 YnNlAtYud.net
>>356
そうくると思ったw
358:デフォルトの名無しさん
19/05/27 14:55:28.65 W0zr6KdF0.net
>>355
具体的に簡単にできる方法を説明してやれよ
359:デフォルトの名無しさん
19/05/27 14:59:26.84 6csejWaN0.net
>>358
まだ出せない
要件定義ができていないので、そもそもどういう設計が最適かも分からない
現状のまま作るのはめんどくさすぎる
具体的に言うとデイトピッカー、お前だ
360:デフォルトの名無しさん
19/05/27 15:11:18.55 W0zr6KdF0.net
>>359
要件定義・・?この理解力だと
当然仕事に対する理解力もないってことだよ
361:デフォルトの名無しさん
19/05/27 15:14:09.75 6csejWaN0.net
>>360
そこを何とかするのが面白いんじゃないの
マウント取りたいならハエやカエル相手にしてればいいだけだしね
362:デフォルトの名無しさん
19/05/27 15:29:12.90 W0zr6KdF0.net
>>361
だったら適当にすれば(笑)
出来ることを安易に提案することの影響を考えろよ
例えば、自動計算を止める
こんなのそのままにされたら困るほかの人いるだろ
でも単にONとOFFじゃあだめなんだよ、直前を記録して戻す
また、エラーや中止でも戻さないとな
363:デフォルトの名無しさん
19/05/27 15:39:29.96 W0zr6KdF0.net
>>361
きみはハエやカエル相手にして面白がってる
引きこもりさんってことね
364:デフォルトの名無しさん
19/05/27 15:42:22.97 6csejWaN0.net
>>362>>363
韓国人?
365:デフォルトの名無しさん
19/05/27 15:42:59.47 6csejWaN0.net
おだてるの意味もわかってないみたいだし、韓国の方でしたか
そりゃ話も合わないな
366:デフォルトの名無しさん
19/05/27 15:44:13.29 W0zr6KdF0.net
>>364
きみはハエかカエル?
367:デフォルトの名無しさん
19/05/27 15:45:54.11 W0zr6KdF0.net
>>365
ハエかカエル?
しかたないな
368:デフォルトの名無しさん
19/05/27 15:53:54.48 6csejWaN0.net
おだてる・・・w
369:デフォルトの名無しさん
19/05/27 16:04:29.34 6csejWaN0.net
これ以外の高速化ってありますか?
URLリンク(15g.jp)
370:デフォルトの名無しさん
19/05/27 16:27:23.36 aE9KPqY2M.net
>>369
これで問題ある場合はループしてるロジックが悪いか
ネットアクセスではありませんか?
371:デフォルトの名無しさん
19/05/27 16:42:48.59 6csejWaN0.net
>>370
運用方法が急に変わりまして・・
毎日 100ループ→毎時間 20000ループ
他の高速化が無いものかな、と
特になければ諦めてロジック組み直します
372:デフォルトの名無しさん
19/05/27 16:43:14.09 2J++TcAHM.net
再描画を止めるのは好かんな
373:デフォルトの名無しさん
19/05/27 17:19:36.20 aE9KPqY2M.net
>>371
セルへのアクセスを減らし
変数テーブルで処理をするぐらいかな簡単なのは
374:デフォルトの名無しさん
19/05/27 17:53:10.57 aE9KPqY2M.net
変更のないセルはかきかえない
変数の型をこていするかな
375:デフォルトの名無しさん
19/05/27 20:18:12.39 28fQIolrF.net
>>369
完全に嘘。
そもそも、それなりに書ける奴ならこの手法では速くならない。
376:デフォルトの名無しさん
19/05/27 20:19:14.57 28fQIolrF.net
逆に、これで格段に速くなったら恥ずかしいと思うべきだ。
377:デフォルトの名無しさん
19/05/27 20:29:10.36 eWpgS1rnF.net
高速化については下記が参考になる。
URLリンク(excel-ubara.com)
378:デフォルトの名無しさん
19/05/27 21:03:48.67 TIEuQB3m0.net
>>345
できるけど、一番最後の処理が事故を起こしそうだから1クッション置いた方がいいかも
379:デフォルトの名無しさん
19/05/27 21:13:42.01 Soi68xiZ0.net
セルというかシートは使わない
データ保存には外部バイナリファイルを読み書きする
380:デフォルトの名無しさん
19/05/27 21:16:23.22 TIEuQB3m0.net
>>369
これは描画を抑制するからその分の時間がかからなくなるというだけなので、表示に因らない処理の速度アップはまた別だよ
381:デフォルトの名無しさん
19/05/27 22:07:18.66 9GzIJnKt0.net
何でユーザーフォームを使うのかって?
シートに書くより格好いいからに決まってるじゃんwwwww
いや、わりとマジでそんなもんだと思いますけど。
だって、ユーザーフォームじゃなきゃ再現できないようなものって、
普通の事務処理でそんなに無いでしょ。
382:デフォルトの名無しさん
19/05/28 01:04:45.98 Rr62XR8Vx.net
ワークシートのイベントに重めの処理を書いている場合、シート側のイベントを避けるためユーザーフォームで出入力制御や演算を処理させることはある
383:デフォルトの名無しさん
19/05/28 08:43:02.61 8P1bQTIM0.net
入力のしやすさとかフォームの方が良い場合もあるし、ユーザーインターフェイスとしてはフォームの方が優れている。
Excel使わずにメモ帳とCSVで事足りるってのと同じような考えの人がいるな。
384:デフォルトの名無しさん
19/05/28 09:44:28.89 CE2aKfrCH.net
初心者レベルの知識で長いことVBAいじってる者なんだが、
functionプロシージャって使わなくない?
普通のsubしか使ったことない
どんな時に便利なの?
385:デフォルトの名無しさん
19/05/28 09:47:42.25 rhAlx8Ij0.net
>>384
値を返す時。便利というか必須。=sum()で値が返らなかった時の事を考えてみると良い
むしろfunctionが普通なのだ
vbaの場合、ワークシート変更しておしまいってパターンが多いから恩恵を得にくいけどね
386:デフォルトの名無しさん
19/05/28 09:55:56.33 JWvhlEsx0.net
Findを利用したコードについて教えて下さい。
書籍、サイトで掲載されていたコードを利用し、少し変えたものです。
Findメソッドを使ってC列の”たろう”を検索します。
探し出したら、A〜C列の文字列をE列に結果を返すように作り替えてみましたが、結果がE1〜G1に上書きされてしまいます。
Cells(Rows,count を理解しきれていない、11行目のCells(i,”E”)の部分も理解していないと感じます。
どのように違うのか、ご指導お願いします。
ワークシートはこんなかんじ E列からG列は実行後の結果をイメージしたものです
A B C D E F G
1 日付 売上 担当者 000 AAA たろう
2 000 AAA たろう 333 DDD たろう
3 111 BBB はなこ
4 222 CCC たかし
5 333 DDD たろう
6 444 EEE はなこ
7 555 FFF くみこ
387:デフォルトの名無しさん
19/05/28 09:56:25.54 JWvhlEsx0.net
386のつづき
Sub Find()
Dim temp As Range, tempAddress As String, i As Long
With Range("A1").CurrentRegion.Resize(, 1).Offset(, 2)
Set temp = .Find(what:=“たろう”)
If Not temp Is Nothing Then
tempAddress = temp.Address
i = Cells(Rows.Count, "E").End(xlUp).Row
Do
temp.Offset(columnoffset:=-2).Resize(, 3).copy Cells(i, "E")
Set temp = .FindNext(temp)
Loop While temp.Address <> tempAddress
End If
End With
End Sub
Sub copy()
Range("A:G").Clear
Worksheets("template").Range("A1:C7").copy Destination:=Worksheets("Sheet1").Range("A1")
End Sub
388:デフォルトの名無しさん
19/05/28 10:10:54.71 CE2aKfrCH.net
>>385
うーん、値を返すのは分かるんだけど、わざわざsubから取り出す意味が分からんのよ
subの中に入れちゃえば良くない?
コードが長くなる時とか、他のプロシージャにも流用したい場合なんかにfunctionで別プロシージャにしとくと分かりやすいってこと?
そういやfunctionを関数みたいに使う場合もあると聞いたな
389:デフォルトの名無しさん
19/05/28 10:32:00.95 P/fMeUQp0.net
>>384
>>385意見に賛成だが少し付け加えます。
基本的にsubにしろfunctionにしろ長くだらだら作らない
出来るだけ意味のある汎用性のある処理はそのルーチンを呼び出すようにする
その時に値を返せるfunctionの方が圧倒的に有利
初心者は同じようなルーチンをコピペで増殖させるが、後々メンテナンスに困る
それらをライブラリーとして持つと自分の資産になるんだけどね、それが重要なんだよ
390:デフォルトの名無しさん
19/05/28 11:24:47.87 aRCJr/ZnM.net
>>384
ネタでしょ?
モドリッチがない方が便利だなんて、そんな訳ないじゃん
391:デフォルトの名無しさん
19/05/28 11:26:30.05 CE2aKfrCH.net
>>389
あーその説明で分かった ありがとう
たしかに今までは、動けばいいやで作ってたからコードが長くなってた
顧客コードから各データを検索する時なんか、
Cells(i,2).value=Range(Z:Z).Find(Cells(i,1)).Offset(0,5).Value
みたいなコードを10行とか書いてたわ
392:デフォルトの名無しさん
19/05/28 12:23:13.41 1q3vxt7ga.net
OutlookのVBAもここで可でしょうか?
違ったら誘導お願いします
上司へ「承認お願いします」と言った趣旨のメールを送った際、上司がボタン1つで承認する旨のメールが送れるようにしたいです
しかし複数いる上司全員にマクロの設定方法を教えるのは面倒です
私から送信するメール本文にマクロを組み込み、上司が受け取った際に本文にあるリンクを押せば(マクロを自分で設定していなくても)返信メールが自動作成されるような手法が取れればベストなのですが、そういったことは可能なのでしょうか?
393:デフォルトの名無しさん
19/05/28 12:47:38.41 i1bbppKtM.net
>>392
ウィルスメールの作成方法きいてる様なもんだなw
394:デフォルトの名無しさん
19/05/28 12:51:48.37 Z4r31YmpM.net
>>392
まずは社内でOLのセキュリティ設定がどうなのか。
ザルならやりようはいくつもあるが、ガチガチなら選択肢は少ない
395:デフォルトの名無しさん
19/05/28 13:44:15.47 P/fMeUQp0.net
>>392
まあ、バカ上司をサポートするのと
バカ上司の影響をサポートするのと
どちっがしたいんだ?
396:デフォルトの名無しさん
19/05/28 13:45:21.90 8P1bQTIM0.net
>>388
VBA初心者にありがちな意見だね。
プログラムを組む時の考え方が全く違う。
組める奴なら最初から構造的に考える。
動きゃ良いなどと考える奴はいない。
397:デフォルトの名無しさん
19/05/28 13:48:09.91 8P1bQTIM0.net
>>392
マクロでやらなくても承認ボタンを追加する機能があった筈だが。
398:デフォルトの名無しさん
19/05/28 13:50:35.37 i1bbppKtM.net
> VBA初心者にありがちな意見だね。
はい、きょうもマウント取りたい人が来ましたよ
399:デフォルトの名無しさん
19/05/28 14:01:27.19 8P1bQTIM0.net
>>391
>>389の言ってることは全くその通りなんだが、FunctionにしろSubにしろ、内容が汎用的なものをまとめる、同じような処理を纏める考え方をするようになると最初から構造的に組むようになる。
その方が圧倒的に楽だから。
あと、例に挙げてるコードは良くない。
ブックやシートの省略はバグの元。
400:デフォルトの名無しさん
19/05/28 14:03:33.28 8P1bQTIM0.net
>>398
マウントも何も、明らかに初心者なんだから仕方ないだろ
401:デフォルトの名無しさん
19/05/28 14:18:44.11 rhAlx8Ij0.net
> VBA初心者にありがちな意見だね。
この部分は必要なかったんだよなぁ
402:デフォルトの名無しさん
19/05/28 14:34:43.00 8P1bQTIM0.net
>>401
必要なんだが。
403:デフォルトの名無しさん
19/05/28 15:27:43.49 m2eXkVaQM.net
初心者お断りな質問スレが存在した…?
404:デフォルトの名無しさん
19/05/28 15:33:18.00 rhAlx8Ij0.net
>>402
君はそう書かないと回答できないのか、なるほど
興味深い
405:デフォルトの名無しさん
19/05/28 15:57:40.29 JWvhlEsx0.net
>>386
>>387
話題を気にせずに、切り込んだ形で質問をしてしまいました。
ホントに困ってしまったのでココで質問をしてみましたが、割り込んだ形でご迷惑をおかけしました。
VBAなんでも質問スレで聞いてみます。
お邪魔しましたm( _ _ )m
406:デフォルトの名無しさん
19/05/28 15:58:05.43 8ZgSX7bEF.net
>>404
構造的に考えるべきという意味付けの為に必要。
初心者にありがちだということで、初心者からレベルアップした方が良いということになる。
407:デフォルトの名無しさん
19/05/28 16:01:17.83 8ZgSX7bEF.net
>>405
別に迷惑でも何でも無い。
元々、初心者の質問に難癖を付けた奴が悪いと思ったから>>355を書いたんだが、内容を見ずに変に絡んでくる奴が出てきただけのこと。
408:デフォルトの名無しさん
19/05/28 18:23:49.73 PIv3udRAr.net
i=の行をloopの中に入れる
409:デフォルトの名無しさん
19/05/28 18:25:13.81 PIv3udRAr.net
その上のtempaddressも
410:デフォルトの名無しさん
19/05/28 18:29:24.54 Bg5LHkgbH.net
マウントしてると誤解を招くような
会話しかできない奴は能力低い奴多い
他人の意見も聞かないしね。
傲慢が後に返り討ちにあう
411:デフォルトの名無しさん
19/05/28 18:33:26.76 C7Ijh9EKa.net
>>397
こんなんあったんですね!
自分で作るなら他にも機能足してたかもしれないけど、これなら簡単で皆で使えるからこれでいきます
ウイルスメールの作成方法……確かに……
412:デフォルトの名無しさん
19/05/28 19:06:09.82 +01nmcZGF.net
>>410
誤解を招く前に、プライドに触ったのか碌に内容読まずに絡む奴の方がよっぽど問題だと思うが。
413:デフォルトの名無しさん
19/05/28 19:42:52.66 ID0apHa80.net
ところでここは「Exce VBA」の質問スレ
414:デフォルトの名無しさん
19/05/28 19:55:29.19 P/fMeUQp0.net
>>410
マウントしたい奴と思ったら絡むなよ
意味もなく伸びrだけ
415:デフォルトの名無しさん
19/05/28 22:28:38.54 6NK7Ep/b0.net
>>384
functionなら1行で書ける!
と思ったけど、よく見たらどっちも2行かかるな。
Dim A
A = function()
Dim A
sub(ByRef A)
functionのメリットって何だろ?
1個しか返せないし。
416:デフォルトの名無しさん
19/05/28 22:45:21.26 g3Ue34fJ0.net
>>415
馬鹿はいい加減黙れよ
417:デフォルトの名無しさん
19/05/28 22:46:58.82 exe6lUi60.net
>>415
教えてほしいなら教えてくれと言えば良い
君以外全員わかってるぞ
418:デフォルトの名無しさん
19/05/28 23:03:25.05 sz8y6/Um0.net
>>416
容赦なくてワロタw
>>415
If func(x) Then
とか
func1(func2(a), func3(b))
とか
419:デフォルトの名無しさん
19/05/28 23:15:31.12 MN8nEIAEd.net
>>415
1個しか返せないといっても工夫の問題。
配列で返せば実質何個でも返せるし、Collectionで返すこともできる。
クラスインスタンスを返すなんてことも出来る。
どれも普通にやることだよ。
何を返せば使いやすいかを構造的に考えて人間にとってピンと来るように組めばメンテナンスも楽だし、プロシージャの内容も理解しやすい。
初心者のコードは何をする処理なのか全く分からないことも多いが上級者のコードは考えて組まれてるので理解しやすいんだ。
>>416
>>417
罵倒するだけで内容を書かないんじゃ君らのレベルも押して知るべしだな。
420:デフォルトの名無しさん
19/05/28 23:18:36.46 MN8nEIAEd.net
>>418
むしろ
Function Hoge(Arg() As String) As String()
の方が適切かな。
或いは
Function Hoge(Arg() As String) As Collection
とか。
421:デフォルトの名無しさん
19/05/28 23:45:10.83 sz8y6/Um0.net
>>419
AddressOf で関数を返すことすら出来るのだ
422:デフォルトの名無しさん
19/05/28 23:58:45.95 0rD99vo/0.net
IF Func() Then
とか
Loop Until Func()
なんてのがSubでは代用しにくい使い方だな (できないとは言わないが)
むしろ普通の数式で
A = Func1() + Func2() + Func3()
みたいに書きたい時の方が、Subに置き換えた時の無駄が多くなりそう
423:デフォルトの名無しさん
19/05/29 00:02:34.60 S0wmSPvZ0.net
2年ぐらい前にもSubとFunctionに違いなんかないと言い張る粘着がいたのを思い出した
424:デフォルトの名無しさん
19/05/29 00:03:33.14 6UUzdaAE0.net
BASICなんだからGOTOだけで十分
425:デフォルトの名無しさん
19/05/29 00:47:16.25 aQ2xiGWFd.net
>>421
おう、ここで初めて高度な話を見た。
426:デフォルトの名無しさん
19/05/29 03:04:42.46 1woLKBVkM.net
・Sub
・返り値のないFunction
この違いは何ですか?
427:デフォルトの名無しさん
19/05/29 04:29:34.43 WducifPVa.net
subじゃ1個も値返せないじゃん
428:デフォルトの名無しさん
19/05/29 05:02:37.42 E4T3mNp50.net
戻り値ないならsubでいいじゃんって話だと思うんだけど俺も一応はそう思う
昔はsubばかりで書いてた
subは単体で実行できるけどfunctionは単体では実行できないという違いがある
functionは他から呼び出さないと実行できないという意味でね。
ここからは俺の好みみたいなもんだけど、
ボタンに直結してるようなエントリーポイント的なものは
subで書いて、それ以外、特に引数を受けとって処理するものは
単体では実行できないことを明確にする意味で全てfunctionにしてる
そう論理的で整合性のある区分というわけではないんだけど。
429:デフォルトの名無しさん
19/05/29 08:46:31.68 WZbm0MMEM.net
>>428
単体で実行できるかどうかはSub/Function の差じゃなくて、引数を取る/取らないの差じゃなかったっけ?
430:デフォルトの名無しさん
19/05/29 08:57:09.71 dT9QfEjx0.net
>>429
正解
Sub foo() '単体実行可能
End Sub
Sub bar(baz) '単体実行は出来ない
End Sub
431:デフォルトの名無しさん
19/05/29 08:58:24.42 dT9QfEjx0.net
あと、実行可能かどうかはpublic/privateで切り分けるべきだろう
432:デフォルトの名無しさん
19/05/29 09:10:25.71 QQeifizk0.net
セルに式として関数を入力して呼べるFunctionと呼べないSub
433:デフォルトの名無しさん
19/05/29 09:17:16.17 dT9QfEjx0.net
>>432
あれ、じゃあ何のためにsubって存在するんだ
return 0しなくていいってだけ?
434:デフォルトの名無しさん
19/05/29 09:30:42.49 dT9QfEjx0.net
基本はfunction
スクリプトとして何かをさせたい時にだけsubで定義する。C言語で言うint main(){}
戻り値や引数のありなしでは切り分けない
と考えると自然と思うんだけど、どうだろう
この考えだと、private subは使うべきじゃないって事になる
435:デフォルトの名無しさん
19/05/29 10:59:47.52 bJuQUiqr0.net
別に良いんだよ何を使おうと、まあ好きにすればって程度
まあ、ただ論理的に考えずごみを量産するやつはいるな
436:デフォルトの名無しさん
19/05/29 11:30:55.13 zbMbGE8SM.net
>>426
戻り値のないFunctionは存在しない
戻ってきた値を無視することができるだけ
つまり戻り値を格納するためにメモリを必ず使うから、Subと比較して速度とメモリ効率の2点で不利になる
437:デフォルトの名無しさん
19/05/29 11:31:54.96 WZbm0MMEM.net
Excel長老の話って知ってる?
438:デフォルトの名無しさん
19/05/29 11:32:51.36 WZbm0MMEM.net
>>436
メモリ効率ってネタだよね?
439:デフォルトの名無しさん
19/05/29 11:39:17.00 zbMbGE8SM.net
>>433
今から40年以上前、それまでのシーケンシャルなプログラムでは能率が悪いから構造化しようという話しが出て、その時に提唱されたのが「手続き(Sub)」と「関数(Function)」という概念
しかし、教育用として作られたPascalという言語では忠実に実装されたけど、C言語には関数しか用意されなかったし、その後に登場したJavaも関数しかない
結局は言語を設計した人のリテラシーというか、単なる好みで決まったようなもん
今でもたくさんの言語が乱立してるのは、結局はみんな「ぼくの考えたさいきょうのげんご」が作りたいだけと思って、あながち間違いじゃない
440:デフォルトの名無しさん
19/05/29 11:41:11.71 zbMbGE8SM.net
>>438
ネタじゃないよ
リカーシブなプログラムを書いてみればすぐわかる
VBAでもFunctionは呼び出すたびにヒープを最低4バイトずつ消費するから、再帰の最大回数が少ないのは簡単な実験ですぐに確認できる
441:デフォルトの名無しさん
19/05/29 11:48:47.33 WZbm0MMEM.net
>>440
「ヒープ」ってネタだよね?
442:デフォルトの名無しさん
19/05/29 11:53:59.73 dT9QfEjx0.net
>>439
ありがとう!そういう事か
sub便利だけど、便利過ぎてかなり変な事になってるね
subから呼び出すのはfunctionと決めていれば良いんだろうけど、
でもsubからsub呼び出す事もあるから・・・
結局subって意味なくね?
C言語のsub無しが正解のような気がする。
>>441
なんでネタと思うんだ?
443:デフォルトの名無しさん
19/05/29 11:58:48.77 zbMbGE8SM.net
簡単な実験
Funcの方がメモリをたくさん消費するから繰り返せる回数が少ない
データキャッシュも有限なリソースだから、どちらでもいい時はFuncの方が不利
Sub sub_test()
test_sub (1)
End Sub
Sub func_test()
test_func (1)
End Sub
Sub test_sub(n)
n = n + 1
Debug.Print n;
test_sub (n)
End Sub
Function test_func(n)
n = n + 1
Debug.Print n;
test_func (n)
End Function
444:デフォルトの名無しさん
19/05/29 13:23:20.90 AfH1iVf/M.net
Selenium+vbaを使って
ChromeでWebページをPDF保存することは可能でしょうか?
445:デフォルトの名無しさん
19/05/29 13:29:26.76 dT9QfEjx0.net
>>444
vbaは不要っぽい
URLリンク(takuya-1st.hatenablog.jp)
記事が古いから一度試したほうが良いと思う
446:デフォルトの名無しさん
19/05/29 13:43:28.26 aQ2xiGWFd.net
>>442
だから構造的に考えて意味的にFunctionが適するかSubが適するかを選択するんだ。
意味的にというのは人間の感覚にとって合った方を採用すべきということ。
Cだってvoidがあるじゃねーの。
無理矢理1を返すとかすれば戻り値が絶対に必要な言語設計だってできた筈。
なんでvoidがあるかといえば、やっぱり意味的に戻り値無しが人間にとってピッタリ来ることがあるからだと思うが。
447:デフォルトの名無しさん
19/05/29 15:03:19.55 eVQzoh+sa.net
処理結果をpublicで判断するよりは
値を返すほうが使いやすい
448:デフォルトの名無しさん
19/05/29 17:40:58.36 S0wmSPvZ0.net
プログラムを一人で作って自分だけが永遠に保守するなら好きなように作ればいい
大規模なアプリをチームで作ったり、他人が修正したりする時には間違いを起こさないようにルールを決める必要があって、
経験上、カプセル化した方が結果的に安全で能率がいいということになっている
そのための手法の一つが変数のスコープを狭くすること、グローバル変数は使わないこと、なんだな
だから結果はどこかの変数に入れるんじゃなくてFunctionで返すんだよ
複数の値を返したいなら設計を見直すべきで、構造体を使うか、1つずつFunctionを分けるか考える
449:デフォルトの名無しさん
19/05/29 18:50:10.49 b/xKBA/BM.net
>>445
SeleniumではなくSeleniumBasic
の間違えでした。
ごめんなさい。
450:デフォルトの名無しさん
19/05/29 18:57:16.16 dT9QfEjx0.net
グローバル汚染はマジでエグいからな
「name」「mail」この変使われてたら超めんどい
>>449
Selenium使えばいいんじゃない
451:デフォルトの名無しさん
19/05/29 19:33:05.85 gbtQDfh8M.net
seleniumってもう使い物にならなくなってなかったっけ
452:デフォルトの名無しさん
19/05/30 00:50:17.75 oM5Ks3kV0.net
>>440
ヒープとスタックの違い理解してる?
453:デフォルトの名無しさん
19/05/30 03:19:10.04 1qsenVBka.net
byref もあるしな
454:デフォルトの名無しさん
19/05/30 08:21:00.17 oyMl0bcF0.net
>>452
それって日本昔話に載ってる?
今も気にすること?
455:デフォルトの名無しさん
19/05/30 12:02:16.59 fCKFoHR/M.net
使うスタック量によって再帰での有利不利って理屈の上ではあるだろうけど
現実的な意味ってあるの?
条件によってスタックオーバーフローする「かもしれない」プログラムに対して
引数や返り値を考慮とか再帰深度に気を使うとか、ちょっとVBAで考えられないんですけど
456:デフォルトの名無しさん
19/05/30 12:25:00.74 0nKLhIYFr.net
>>454
SubとFunctionでメモリ効率の違い考慮するレベルなら
457:デフォルトの名無しさん
19/05/30 12:31:21.82 NTWA4E5yM.net
>>454
別に気にしなくてもいいけど>>440みたいなツッコミ入れるならちゃんと理解してないと恥をかく
458:デフォルトの名無しさん
19/05/30 15:33:21.51 oyMl0bcF0.net
>>457
おれも、昔話書きたくなったレベル
z80とか8080とかな8086なんて凄いよな
459:デフォルトの名無しさん
19/05/30 18:56:24.47 86kk1xI3a.net
ここできいていいのか分かりませんがマクロの組み方で教えてください
「=5月シートA1」
「=5月シートA2」
みたいに引っ張っているセルを
「=6月シートA1」
「=6月シートA2」
みたいに変えるマクロを組みたいんですが
それを毎月自動で7月、8月、と月に合わせて変えるのはどうやるのですか?
理想としては、5月と書いてあるセルを6月と入力し、そのセルをコピペしていくマクロを組みたいのですが、その流れを作っても元の5月だけがコピペされてしまう状態です。
説明が下手ですみません。
460:デフォルトの名無しさん
19/05/30 19:04:11.68 1nLCMVmfr.net
今月=month(date)
activesheet.range("a1").resize(5).formula="="&今月&"!a1"
461:デフォルトの名無しさん
19/05/30 19:12:37.62 3bWSKYGBM.net
>>459
5月シートをコピーして6月シートにする。
5月を6月に文字列全置換え
処理日によって月を自動判定でもいいが、フォームで値を確認、修正後に実行の方がいいんじゃないかな
462:デフォルトの名無しさん
19/05/30 19:18:06.10 86kk1xI3a.net
>>460
すみません初心者なので詳しくは分かりませんが、今の月を参照するセルを作り、それをコピペするように組めばいい感じでしょうか。
間違ってたらすみません。
>>461
今まではそうやっていたのですが、それ以外にも、不要な場所を削除して、一番下の数値を一番上に持っていってみたいな作業があるので、その置き換えも合わせてマクロにしたいと思いまして。
463:デフォルトの名無しさん
19/05/30 19:37:14.94 /EJeltR2r.net
>>462
今月の月を取得して、a1からa5までの数式を置き換えるイメージです。
携帯からなので試せていませんが・・・
464:デフォルトの名無しさん
19/05/30 19:38:13.64 86kk1xI3a.net
>>463
ありがとうございます。
試してみます
465:デフォルトの名無しさん
19/05/30 19:41:48.72 S1ohEoHj0.net
>>464
文字列の検索や置換は数式にも有効
5月を6月に置換すればいい
VBAは必要ない
466:デフォルトの名無しさん
19/05/30 19:49:45.60 vA8HeCKe0.net
>>459
他の処理はともかく数式に関してはマクロいらない
=INDIRECT(MONTH(NOW())&"月!A1")
467:デフォルトの名無しさん
19/05/30 19:55:45.24 vA8HeCKe0.net
間違えたわ、こうだわ
=INDIRECT(MONTH(NOW())&"月!A"&ROW(A1))
468:デフォルトの名無しさん
19/05/31 10:21:23.92 iXFRocgY0.net
なんか、今月にこだわる人多いが説明だと選んだ月のシートからデーターを
持ってきたいだけだろ、勿論INDIRECTを使うことでマクロを使う必要はない
例えば、値を参照するシートとのA1セルに入力規制で1月〜12月を選択して
=INDIRECT($A$1 & "!A" & ROW(A1))
でいいだろ
469:デフォルトの名無しさん
19/05/31 10:48:51.98 xVkqny4q0.net
>>468
> それを毎月自動で7月、8月、と月に合わせて変えるのはどうやるのですか?
470:デフォルトの名無しさん
19/05/31 11:09:05.87 iXFRocgY0.net
>>469
自動だったらA1セルをNow()にして表示形式を
月だけにすればいいだけだろ
各セルに設定する関数は簡素に共通化する
471:デフォルトの名無しさん
19/05/31 11:20:16.63 xVkqny4q0.net
>>470
> なんか、今月にこだわる人多いが
472:デフォルトの名無しさん
19/05/31 11:34:43.20 iXFRocgY0.net
>>471
今月か選択なんてExcelをちょろって知ってればどっちでもいいんだよ
1っか所変えただけで要は1っか所を変えただけでその月に対応すればよいだけ
こんなのマクロなんか書いたら笑えるレベル
473:デフォルトの名無しさん
19/05/31 11:36:26.16 iXFRocgY0.net
あら〜ダブって入ったわ すまぬの
474:デフォルトの名無しさん
19/05/31 11:48:24.92 fWZN/ECyM.net
なんかVBA使わずにワークシート関数使えっていうコンセンサスでもあるの?
思い込みと違う?
475:デフォルトの名無しさん
19/05/31 11:53:29.26 iXFRocgY0.net
>>459
お題は
>理想としては、5月と書いてあるセルを6月と入力し、そのセルをコピペしていくマクロを組みたいのですが、その流れを作っても元の5月だけがコピペされてしまう状態です。
だけどな、マクロを使わないと気が済まないやつっているのかな
476:デフォルトの名無しさん
19/05/31 11:57:27.72 iXFRocgY0.net
>>474
これでマクロを作るやつのマクロを参考にしたいな
ぜひ作ってね
477:デフォルトの名無しさん
19/05/31 12:02:31.59 kMeHCJPt0.net
>>474
数式だけならファイル形式をxlsxのままにできて安全
同じ機能なら数式で済ませた方が良いだろう
家計簿ならどっちでも良いのは間違いない
478:デフォルトの名無しさん
19/05/31 12:17:34.40 iXFRocgY0.net
まあなんだな、$A$1この書き方って絶対参照だが良くないんだよな
普通はそのセルに名前を付けてその名前で参照する
例えば「設定月」みたいな名前ね
479:デフォルトの名無しさん
19/05/31 12:21:40.48 UKwhkiwBr.net
VBAのスレでマクロつかうなとか(笑)
480:デフォルトの名無しさん
19/05/31 12:23:22.93 xVkqny4q0.net
>>472
>>462 > それ以外にも、不要な場所を削除して、一番下の数値を一番上に持っていってみたいな作業があるので、その置き換えも合わせてマクロにしたいと思いまして。
481:デフォルトの名無しさん
19/05/31 12:27:21.46 wdWzuIo7p.net
シートを左のものからきっちり順に印刷する(印刷指示を出す)vbaありませんか?
スプール云々はプリンターの詳細設定弄れなくなってるのでvbaでどうにかなればしたいのですが・・
482:デフォルトの名無しさん
19/05/31 12:27:47.02 iXFRocgY0.net
Excelの関数や機能も知らん奴がVBAでマクロを作るか
少しは勉強しろよ、ってか
運転できないやつが、自動運転を作るみたいなもんか?
ってか参照で十分なものを何でマクロ(笑)
483:デフォルトの名無しさん
19/05/31 12:31:43.08 xVkqny4q0.net
>>482
>>459 > 毎月自動で7月、8月、と月に合わせて変える
>>468 > 今月にこだわる人多いが
>>462 > その置き換えも合わせてマクロにしたい
>>472 > こんなのマクロなんか書いたら笑えるレベル
一部読み飛ばして回答してしまうのはなんなのネタなの
484:デフォルトの名無しさん
19/05/31 12:32:47.94 iXFRocgY0.net
>>480
すまないが、そんなのどうして関数でできないと思うんだ?
ちゃんと説明すれば?、今まで書いているのはあまりにも簡単な質問で
関数で十分なんだが
485:デフォルトの名無しさん
19/05/31 12:37:34.60 iXFRocgY0.net
>>483
別に、マクロで提案してみたら
486:デフォルトの名無しさん
19/05/31 12:54:17.71 jiw85AG60.net
自動車つくれなくても、つくってもらって乗ればいいじゃん
487:デフォルトの名無しさん
19/05/31 13:01:15.44 iXFRocgY0.net
>>486
でも、企画があってな わけなわからん奴の作った自転車に
乗れるか?
責任は運転者だよ、関数は規格通りだな
その自転車がすごきゃいいよ、単に危ないだけじゃな
488:デフォルトの名無しさん
19/05/31 13:10:48.90 iXFRocgY0.net
>>483
で、お前は何ができるんだ?
何が気に障った?(笑)
489:デフォルトの名無しさん
19/05/31 13:26:58.37 iXFRocgY0.net
>>483
VBAで提案できないやつが・・・・
ネタだよな・・関数なら即座なのに
490:デフォルトの名無しさん
19/05/31 13:43:20.27 xVkqny4q0.net
>>489
今月にこだわっててもおかしくないし
一連の流れをマクロにしてその一部の質問してるわけでしょ
だから>>468も>>472も的外れって話
訂正するわけでもないのに再アンカをしかも連投するってせっかちすぎない?
491:デフォルトの名無しさん
19/05/31 13:55:19.86 iXFRocgY0.net
>>490
今月とかどうでもいいんだよ
単に参照すればいいだけ、それで質問者の意図に対応できないか?
自分の主張じゃなく、何が正しいかで提案するんだよ
VBAで作れば何でもできるさ、でも単に絶対参照でいいものをこねくり回すなよ
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
2370日前に更新/181 KB
担当:undef