Excel VBA 質問スレ P ..
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で作れば何でもできるさ、でも単に絶対参照でいいものをこねくり回すなよ
492:デフォルトの名無しさん
19/05/31 14:07:14.86 xVkqny4q0.net
>>491
次は話ループさせんの?
「毎月自動、VBA」という質問の前提をこねくり回してるのはそっちでは?
493:デフォルトの名無しさん
19/05/31 14:14:55.01 kMeHCJPt0.net
普通のExcelスレはあんなに紳士的なのに・・・
494:デフォルトの名無しさん
19/05/31 14:31:03.11 iXFRocgY0.net
何だろうな、普通に絶対参照すればいいものをVBA・VBAって叫ぶの
怖いは
495:デフォルトの名無しさん
19/05/31 14:48:52.06 2f7ZWXQQ0.net
>>494
>>459>>462でマクロでやりたいと言ってるし、
マクロ以外の回答に対してノーリアクション
数式での回答を求めてないのだろう。結果を求めるだけじゃなく、マクロ自体を書きたいという質問者もいるわけだしな
あまり押し付けるのもどうかと思う
もちろん一般的な場合は君のやり方が正しいのは明らか
さすがにそれが分かってない人はいないだろう
496:デフォルトの名無しさん
19/05/31 15:04:15.42 jiw85AG60.net
>>462
削除等はマクロで、他シート参照は数式でいいんでないの
497:デフォルトの名無しさん
19/05/31 15:50:07.97 xVkqny4q0.net
元の前提無視して絶対参照・絶対参照って叫ぶの
怖いは
って言えばいいのかな
498:デフォルトの名無しさん
19/05/31 16:21:11.81 iXFRocgY0.net
>>496
削除が必要って単なる思い込みではないのかな
Excelの使い方もわからないのってVBAって魔法の玉手箱じゃないの
でなければ、質問者に対する最適の解をさっさとVBAで示せばいいんだよ
499:デフォルトの名無しさん
19/05/31 16:31:39.12 Q8fJ9KqCF.net
元々の質問を見る限り、詳細が無いのでVBAで解決すべきか数式で解決すべきか判断できん。
逆に言えばこれだけの情報でVBAを必要無いとか言ってしまえる人って初心者とまでは言わないけど大したスキルは無いんだろうなと思ってしまう。
500:デフォルトの名無しさん
19/05/31 16:43:05.14 agbDawORM.net
>>499
そうか 君はプロなんだね(笑)
501:デフォルトの名無しさん
19/05/31 17:06:59.36 Q8fJ9KqCF.net
>>500
初心者は自分の状況を上手く説明出来ないし、それはしようが無い。
一方回答する方も、初心者は自分の狭い土俵で回答しようとするんだよね。
502:デフォルトの名無しさん
19/05/31 17:12:13.76 agbDawORM.net
>>501
いまだにVBAでの回答すらないけどね
503:デフォルトの名無しさん
19/05/31 17:17:59.31 Q8fJ9KqCF.net
>>502
俺はこんな質問に回答しないよ。
何処の掲示板でもそうだけと面白いテーマじゃなきゃ回答しない。
俺が回答する必要も無いだろう。
>>460とかを見てどうにか頑張れば良いんじゃね?と思ってる。
504:デフォルトの名無しさん
19/05/31 17:21:09.14 Q8fJ9KqCF.net
技術レベルは大したことない問題だけど最近回答したのは>>284だな。
テーマとしては面白いから。
505:デフォルトの名無しさん
19/05/31 17:33:03.28 NquLpIx1r.net
てか>>464で終わっとるやろ…
506:デフォルトの名無しさん
19/05/31 17:36:44.72 xVkqny4q0.net
>>498
むしろ思い込み(というか自分の都合のいいように解釈)してるのはそっちなんだよなぁ
507:デフォルトの名無しさん
19/05/31 17:42:42.79 agbDawORM.net
>>503
君に、回答を求めてないよ
俺も、VBA の回答は基本的に出さない
まあヒントだけだな
いや〜これのマクロを作る奴見てみたい(笑)
508:デフォルトの名無しさん
19/05/31 17:43:17.34 2P/bRCUed.net
というか>>499に書いた通り、状況を判断する材料が少ない。
例えば月のシートが沢山あって、それぞれのシートの集計結果を集計シートで閲覧したいという状況なら数式の方が良さそうだ。(それでも情報が足りないから「良さそう」としか言えん。)
509:デフォルトの名無しさん
19/05/31 17:44:39.75 2P/bRCUed.net
>>507
じゃあ、俺に>>502のレスするんじゃね―よw
510:デフォルトの名無しさん
19/05/31 17:46:18.67 a67Z5WHaM.net
>>499
ほんそれ
ど真っ赤で力説してるのが滑稽やなw
511:デフォルトの名無しさん
19/05/31 18:08:13.80 agbDawORM.net
>>509
意識過剰だろ(笑)事実を書いただけ
512:デフォルトの名無しさん
19/05/31 19:20:39.09 frxzLdPfr.net
VBAでやるか数式でやるかの判断はこのスレでやる話じゃないだろ
ここはVBAのスレだぜ
513:デフォルトの名無しさん
19/05/31 19:22:19.42 2P/bRCUed.net
>>511
???
">>501"を付けるなと言ってる。
514:デフォルトの名無しさん
19/05/31 20:32:30.11 XAbM3vU30.net
>>481
dim ws as worksheet
for each ws as thisworkbook.worksheets
ws.printout 〜
next
515:デフォルトの名無しさん
19/05/31 20:58:10.12 wdWzuIo7p.net
>>514
大荒れの中レスありがとう
来週試してみます
516:デフォルトの名無しさん
19/05/31 22:18:19.39 XAbM3vU30.net
>>515
ごめん for each ws in の書き間違い
517:デフォルトの名無しさん
19/05/31 22:31:58.82 aMsRRK9D0.net
ん?
全シート印刷じゃダメだったの?
518:デフォルトの名無しさん
19/05/31 22:40:38.73 agbDawORM.net
>>513
ふん、おれ500 お前が笑えるレスつけただけだろ
519:デフォルトの名無しさん
19/06/01 00:10:30.70 Re37ayj0p.net
>>517
もちろん全シート一括で印刷かけてるんですけど、スプール設定?の関係で重いシートの印刷が後回しになるので10ページ1ページ2ページの3シートのファイル印刷すると10ページのシートが一番最後に印刷されちゃって不便なんです
520:デフォルトの名無しさん
19/06/01 02:54:17.07 48zxZgqm0.net
ListBox使ってるんですけど、たまに表示がバグります
薄い横線がListBox内の全ての行間に表示されちゃうんです
行のフォーカスを動かすと、動かした範囲ではこの変な横線は一旦消えるんだけど、
何かをするとまた横線があらわれる
こういうのって何が原因かわかりますか?
再現性がそう高くないので、対策しづらいです
表示がおかしいだけでプログラム自体は問題なく動きます
521:デフォルトの名無しさん
19/06/01 03:41:24.97 48zxZgqm0.net
>>520ですけどもしかしたら直ったかもしれないです
multiSelectをfmMultiSelectExtendedに設定してるんですけど、
UserForm Initialize内で設定するのではなく
プロパティウィンドウで選択して設定するようにしたら今の所出ないです
再現性があれなんで確実とは言えないんですけど
522:デフォルトの名無しさん
19/06/01 07:48:48.81 FEI28S1s0.net
>>520
ListBoxに限らず、Excelのオブジェクトは変だよ。
そんなもんだと思う。
俺もこんな現象に遭遇した。
・印刷プレビュー直後に、リストボックスを操作できなくなる。(シートを切り替えると直る。)
・MSクエリやADOを使うと、ボタンやテキストボックスの位置が、見た目と合わなくなる。
[コマンドボタン] 何もない部分
↑ ↑
ここにボタンがあるのに ここを押さないと反応しない
523:デフォルトの名無しさん
19/06/01 07:53:01.65 FEI28S1s0.net
あと、なんじゃそりゃ!???? と思ったのが、
[コマンドボタン]
↑
押すと・・
→→→ [コマンドボタン]
↑
ボタンが逃げる
多分、押す前のボタン画像が左にあって、
押した後の(凹んだ状態の)画像が右にあるんだと思う。
524:デフォルトの名無しさん
19/06/01 08:43:23.59 48zxZgqm0.net
>>523
論理的に解決できる方法がないから山勘に頼っていじってみて
運良く解決できたらもうけもんってことですかね
表示がぶれると、使ってる人が、このプログラム大丈夫かと心配し始めちゃうんで
できるだけ避けたいところです
525:デフォルトの名無しさん
19/06/01 10:54:28.04 /THuLu8v0.net
>>518
???
バカなの?
お前が500なのもお前に俺がレスしたのも誰でも分かるわ。
>>502のレスにおいて">>501"を付けるから俺に回答を求めてると判断されても仕方ないだろが。
526:デフォルトの名無しさん
19/06/01 15:58:14.75 Vz6e2VkK0.net
>>525
笑えるな、答えられないやつに答えを求めないって(笑)
527:デフォルトの名無しさん
19/06/01 16:00:03.94 Vz6e2VkK0.net
まあ、プロさんのようだから答えられないの恥ずかしいのか(笑)
あげとくは
528:デフォルトの名無しさん
19/06/01 17:24:08.45 /THuLu8v0.net
>>527
煽ってもお前のレベルが低いのは変わらんぞw
相手のレベルを推しはかれないのは相手よりスキルがかなり低いからなんだが。
529:デフォルトの名無しさん
19/06/01 17:41:52.05 FFwlyzcq0.net
まだやってんの
最近多い無関係の人が巻き込まれるような事件起こしそう
530:デフォルトの名無しさん
19/06/01 17:42:25.49 ZZxkmLZAM.net
>>528
あら、単に引きこもりのカスでろくなの作れんて思ってるよ(笑)
531:デフォルトの名無しさん
19/06/01 17:47:36.35 /THuLu8v0.net
>>530
そりゃスキルの無い奴は人を評価出来ないからなw
532:デフォルトの名無しさん
19/06/01 20:32:00.88 XF0/4x+50.net
データベースでエクセルのフィールド(3)を下に読み取っていって、入ってる型が文字列以外の物が入っているかチェックしたいんですけど何かないですか?
533:デフォルトの名無しさん
19/06/01 20:51:09.32 fYRCWk9w0.net
>>532
vartypeがvbStringかどうか
typenameが"String"かどうか
など
534:デフォルトの名無しさん
19/06/01 22:43:59.23 g0N7gK6Z0.net
>>532
わざとやってみてどうなるか確認してみよう
先頭何レコードで判断するんだっけ?
535:デフォルトの名無しさん
19/06/01 22:55:52.58 g0N7gK6Z0.net
>>532
早速やってみたけど、逆のパターンである
「先頭に数値が入っていて途中から文字列に変化した」場合は判定できた。
具体的には数値部分だけ読み込んで文字列の部分はNULLになった。
「先頭に文字列が入っていて途中から数値に変化した」場合は全部文字列扱いになったので厳密には判定不能。
536:デフォルトの名無しさん
19/06/02 18:41:53.51 3MovPWtK0.net
初心者なので意味がわかりづらかったらすみません
まず、やりたいことは
1.ユーザーにB2〜E2あたりに文字を入力してもらう
2.それを5行前後繰り返す
3.この後にボタンを押してもらう
(以降マクロ処理)
4.入力して貰った行の各左セル(A列)に営業日(月初)を入力する
入力内容を下の行にコピペして、A列日付だけ翌営業日にする
それを月末日まで繰り返す
これを実現したい場合、営業日付をどう表示し、どう繰り返せばよいか検討がつきません
アドバイス頂けませんでしょうか
日付に関してyyyymmのみユーザーに手入力して貰う予定で、それを利用できるかなと思っています
537:デフォルトの名無しさん
19/06/02 19:17:16.23 wosufaXU0.net
>>536
Sub foo()
コピー元_行数 = Cells(Rows.Count, 2).End(xlUp).Row - 1
Range(Cells(2, 2), Cells(コピー元_行数 + 1, 5)).Copy
処理年 = InputBox("処理する年を四桁で入力してください", "", Format(Date, "yyyy"))
処理月 = InputBox("処理する月を1桁で入力してください", "", Format(Date, "m"))
'ここに上記が数値以外なら終了させる分岐をかます。めんどいのでしてない
For i = 1 To Day(DateSerial(処理年, 処理月 + 1, 0))
Cells(コピー元_行数 * (i - 1) + 2, 2).PasteSpecial
Range(Cells(コピー元_行数 * (i - 1) + 2, 1), Cells(コピー元_行数 * i + 1, 1)).Value = _
DateSerial(処理年, 処理月, i)
Next
End Sub
538:デフォルトの名無しさん
19/06/03 23:29:52.65 +V4WoVbB0.net
>>535
上にあるようにvartypeだとだめかね?
539:デフォルトの名無しさん
19/06/04 00:44:40.62 Vr0YkSWUa.net
教えてください。
ActiveCell.EntireRow.Copy Destination
これで「任意のセル選択中で1行コピー」になりますが、
改造して「任意の複数セル選択中の複数行をコピー」に変えたいんですがわかりますか?
540:デフォルトの名無しさん
19/06/04 01:01:51.67 sjSsEz0E0.net
仮面ライダー本郷猛は改造人間である。彼を改造したショッカーは世界制覇を企む悪の秘密結社である。仮面ライダーは人間の自由のためにショッカーと戦うのだ!
541:デフォルトの名無しさん
19/06/04 07:28:25.36 CwYFwdXYa.net
>>539
Selection で自己解決したんですが、
ThisWorkbook.Worksheets("sheetA").Activate
Selection.EntireRow.Copy Destination:=ThisWorkbook.Worksheets("SheetB").Range("A57:A62")
ThisWorkbook.Worksheets("SheetB").Activate
Range("A3:I4").Select
End Sub
で所定の6行のスペースにペーストするんですが、選択セルが5以下だと重複して貼り付けられます。
重複しない方法を教えてください。
542:デフォルトの名無しさん
19/06/04 07:51:19.62 kIR0GcUMx.net
コピー先のセルのアドレスをシンプルに"A57"に変えるだけでいいと思う
543:デフォルトの名無しさん
19/06/04 08:26:51.88 0SaUhvTtM.net
>>538
それだと対象のブックを開かなきゃダメじゃん
544:デフォルトの名無しさん
19/06/04 11:03:51.11 ABA6WeJwH.net
【速報】金券五百円分とすかいらーく優侍券をすぐもらえる
URLリンク(pbs.twimg.com)
@ スマホでたいむばんくを入手
A 会員登録を済ませる
B マイページへ移動する
C 招待コード→招待コードを入力する [Rirz Tu](スペース抜き)
今なら更に4日18時までの登録で2倍の600円の紹介金を入手
クオカードとすかいらーく優待券を両方ゲットできます。
数分の作業でできますのでご利用下さい。
545:デフォルトの名無しさん
19/06/04 11:40:41.30 ClB/ngZb0.net
ここにも来たかフィッシング詐欺
546:デフォルトの名無しさん
19/06/04 13:24:40.51 g1r7g3uN0.net
>>544
TVCM見た後に入れた
547:デフォルトの名無しさん
19/06/04 18:55:29.74 w6NTuaQma.net
>>542
できました。ありがとうございます。
548:デフォルトの名無しさん
19/06/04 22:55:20.87 JKzLDG9lp.net
直前に開いたファイルのキャッシュ的なものを参照して情報を取得することってできますか?
例えば直前に開いて印刷して閉じて消去したファイルのA1セルに記載の値を別ファイルのB1セルに転記する、みたいな
549:デフォルトの名無しさん
19/06/04 23:07:17.09 e2Nk6zam0.net
>>548
そんなの知るか
550:デフォルトの名無しさん
19/06/04 23:20:09.51 GvHzI0140.net
>>548
必ずバックアップしてから開くようにバッチファイル作ればいいだけじゃね
551:デフォルトの名無しさん
19/06/05 00:02:17.80 b19uQdIQp.net
>>549
知らないならわざわざ書き込まなくていいよw
552:デフォルトの名無しさん
19/06/05 09:28:21.10 d6kiH4sy0.net
印刷時には転記先のファイルが必ず開いてる状態なの?
それならWorkbook_BeforeCloseで閉じる直前に転記は?
553:デフォルトの名無しさん
19/06/05 14:54:24.90 1kcRpkSq0.net
これはそんなの知るかという気持ちもよく分かる。
工夫次第でどうとでもなるけど、そういう問題かどうかをはっきりさせるべき。
そういう仕組みを作ることなくできるかと言われれば、できないと答えるだろう。
工夫でそういう仕組みを作りたいというなら、それについて自分の考えを述べるべきだ。
VBAの問題じゃなくて考え方を考える問題なんだから単純なスキルの問題ではない。
554:デフォルトの名無しさん
19/06/05 15:52:32.95 bp5RZsKU0.net
事前に、ファイルを閉じる前や消す前に準備しておけばどうともできる
他人が使ったパソコンをこっそりのぞき見したいなら、それはかなり難しい
不可能じゃないけど、現時点では動機が不明で教えるべきじゃないと思われるので書かない
555:デフォルトの名無しさん
19/06/05 17:22:15.93 b19uQdIQp.net
>>
556:デフォルトの名無しさん
19/06/05 19:30:41.08 5zNRcsxz8
日・時・分が漢字で入力されたエクセルの文字列データを、時間データに変換したいです。
どのようにすればよいでしょうか?出来れば、マクロでお願いします。
よろしくお願いします。
例)
--
2日8時間 → 56:00
2時間30分 → 2:30
5分 → 0:05
4時間 → 4:00
557:デフォルトの名無しさん
19/06/05 19:31:41.43 5zNRcsxz8
ユーザ関数で……
標準モジュールに下記のコードを入れ、適当なセルに =fTimestamp(A1) の様に式を入れて下さい。
式を入れたセルの書式はユーザ書式で [h]:mm としてください。
Function fTimestamp(sData As String) As Date
For i = 1 To Len(sData)
sOne = Mid(sData, i, 1)
If IsNumeric(sOne) Then
sNum = sNum & sOne
ElseIf sOne = "日" Then
fTimestamp = fTimestamp + Int(sNum)
sNum = ""
ElseIf sOne = "時" Then
fTimestamp = fTimestamp + Int(sNum) / 24
sNum = ""
ElseIf sOne = "分" Then
fTimestamp = fTimestamp + Int(sNum) / (24 * 60)
sNum = ""
End If
Next i
End Function
558:デフォルトの名無しさん
19/06/05 19:38:17.24 5zNRcsxz8
>>556です。
>>557を試したところ、
2日8時間 → 56:00
2時間30分 → 2:30
5分 → 0:05
4時間 → 4:00
は上手くいきましたが、秒変換がうまくいきません。
例)
5分4秒
>>557
に単純に、
ElseIf sOne = "分" Then
fTimestamp = fTimestamp + Int(sNum) / (24 * 60 * 60)
sNum = ""
を追加しての結果です(^^;)
何がいけないのでしょう?
559:デフォルトの名無しさん
19/06/05 19:41:46.35 5zNRcsxz8
>>558
間違えました。追加したのは
ElseIf sOne = "秒" Then
fTimestamp = fTimestamp + Int(sNum) / (24 * 60 * 60)
sNum = ""
です。お手数をおかけしますが何方かご助力いただけると助かります(^^:
560:デフォルトの名無しさん
19/06/05 19:45:36.22 UgnFbYyua.net
ファイルの履歴とか拾うのかな?
561:デフォルトの名無しさん
19/06/05 20:56:36.68 5zNRcsxz8
>>560
よくわかりませんが、単純にエクセルのセルに文字列で
◯時間〇分●秒単位で入力されていて
その列の合計と平均を求める感じです。
562:デフォルトの名無しさん
19/06/05 20:58:28.96 5zNRcsxz8
文字列形式で入力されているので先ずは数値に変換しないとどうにもなりません。
563:デフォルトの名無しさん
19/06/05 21:22:31.39 5zNRcsxz8
>>556
~
>>559
です。わかりにくいので、再度まとめ直させていただきますと(_ _)
以下の通りです。
日・時・分が漢字で入力されたエクセルの文字列データを、時間データに変換したいです。
どのようにすればよいでしょうか?
例)
2日8時間 → 56:00
2時間30分 → 2:30
5分 → 0:05
4時間 → 4:00
以下のマクロを参考にしたところし分までは成功しました。
564:デフォルトの名無しさん
19/06/05 21:29:26.90 5zNRcsxz8
>>563 の続きです。
ユーザ関数で……
標準モジュールに下記のコードを入れ、適当なセルに =fTimestamp(A1) の様に式を入力。
式を入れたセルの書式は [h]:mm
565:デフォルトの名無しさん
19/06/05 21:34:37.94 5zNRcsxz8
>>564の続きです。
Function fTimestamp(sData As String) As Date
For i = 1 To Len(sData)
sOne = Mid(sData, i, 1)
If IsNumeric(sOne) Then
sNum = sNum & sOne
ElseIf sOne = "日" Then
fTimestamp = fTimestamp + Int(sNum)
sNum = ""
ElseIf sOne = "時" Then
fTimestamp = fTimestamp + Int(sNum) / 24
sNum = ""
ElseIf sOne = "分" Then
fTimestamp = fTimestamp + Int(sNum) / (24 * 60)
sNum = ""
End If
Next i
End Function
566:デフォルトの名無しさん
19/06/05 21:35:38.04 5zNRcsxz8
>>565の続きです。
次に分まで(例 5分2秒)実現するために
以下を感で追加してみたところ失敗しました。
ElseIf sOne = "秒" Then
fTimestamp = fTimestamp + Int(sNum) / (24 * 60 * 60)
sNum = ""
無理を言って申し訳ありませんが、何が悪いのかアドバイス
いただけると幸いです。何卒よろしくお願いします。
567:デフォルトの名無しさん
19/06/05 21:41:19.12 5zNRcsxz8
>>566
次に秒までの間違いでした(_ _)
568:デフォルトの名無しさん
19/06/05 22:34:22.55 5zNRcsxz8
>>566
なぜか
(24 * 60 * 60)
の代わりに
86400
にするとうまくいく感じです。。。
なぜ???
569:デフォルトの名無しさん
19/06/05 20:51:53.11 zo8mZEUL0.net
>>560
> 消去したファイルのA1セルに記載の値
なので履歴じゃダメだろうな
マジでなんのためにそんなことをしたいのがさっぱりわからん…
570:デフォルトの名無しさん
19/06/05 22:41:29.46 4nGxoieG0.net
>>537
遅くなりましたがありがとうございました!とても参考になりました
おかげさまでメイン処理はひとまず形になりました
ツール完成させられるよう頑張ります
571:デフォルトの名無しさん
19/06/05 23:22:07.87 Uovi79l30.net
>>570
こんなこともわからんような馬鹿が作ったものを使わされるとか
572:デフォルトの名無しさん
19/06/05 23:37:24.78 PwgeLPYz0.net
>>571
人間性に問題のある君と同じ職場よりは大分マシだろう
573:デフォルトの名無しさん
19/06/05 23:48:39.29 70FqVZZPd.net
いやいや
ここは御大層に「ツール」とか書かれて吹き出す場面だろ
574:デフォルトの名無しさん
19/06/06 00:27:01.25 vR0zkRe5M.net
ここは、あれだ。プークスクス、マジ受けるんですけど!というやつだ。
575:デフォルトの名無しさん
19/06/06 06:36:27.46 ME671i1fx.net
Use after free攻撃のやり方を聞かれてるのと一緒だよなこれ
576:デフォルトの名無しさん
19/06/06 12:05:19.65 vG+mGYiZ0.net
まあな、Excelの標準機能で出来ることも知らん奴が、作りたいものを考えて質問するんだよな
だけど、ちょっと知ったかぶってどんなプログラムを作りたいとか書くけど
普通にExcelの機能で出来ることも、質問してるんだよな
動作仕様をかける奴は普通VBAのマクロも作れる
作れないやつの動作仕様ってごみなんだよな、何がしたいかだけ書けよと思う
577:デフォルトの名無しさん
19/06/06 12:22:02.47 GuX8oFrp0.net
>>576
日本語でおk
578:デフォルトの名無しさん
19/06/06 12:59:11.37 vG+mGYiZ0.net
>>577
すみません、日本語難しいどこですか?
579:デフォルトの名無しさん
19/06/06 15:41:00.01 GuX8oFrp0.net
>>578
天丼やめろw
580:デフォルトの名無しさん
19/06/06 20:23:11.53 ulk3mDRi0.net
日本人の俺でもわからんw
581:デフォルトの名無しさん
19/06/06 22:44:54.22 17p7tBKQ0.net
標準機能が嫌いなんだろう。
あとは、VLOOKUPでも出来るけど、
遅いし面倒くさいからADO+SQLでやるとかさ。
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
2370日前に更新/181 KB
担当:undef