[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2ch.scのread.cgiへ]
Update time : 12/29 06:14 / Filesize : 265 KB / Number-of Response : 993
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Excel VBA 質問スレ Part77



1 名前:デフォルトの名無しさん mailto:sage [2022/07/17(日) 07:07:35.59 ID:tS4zKdphH.net]
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑同じ内容を3行貼り付けること

ExcelのVBAに関する質問スレ
コード書き込みや作成依頼もOK

次スレは>>980が立てること
無理なら細かく安価指定

※前スレ
Excel VBA 質問スレ Part76
https://mevius.5ch.net/test/read.cgi/tech/1651339421/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured

520 名前:デフォルトの名無しさん [2022/09/07(水) 09:01:28.19 ID:l5y/t4MDM.net]
個人的信条を議論するのは無意味

521 名前:デフォルトの名無しさん (アウアウクー MMbb-2Jzk) mailto:sage [[ここ壊れてます] .net]
変数はImmutableにするのが最近の言語でしょ
こうなるもうどこで宣言しようが関係ない

522 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 19:33:33.73 ID:nObPwJJb0.net]
>>519
まあ>>520に同意しつつ、一番の理由は、
VBAでの一般的なスタイルに反するからなんだが

ブロックスコープがないのに直前で変数宣言するのは、
違うブロックで宣言された変数と宣言が被るリスクが上がるだけなんだが
むしろ直前宣言が優れている点ってどこだよ?

523 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 19:40:46.55 ID:qgePcMk7a.net]
>>519
同意する
まあ>>516は理由を書いてない時点であまり信用できないと思ってる

524 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 19:45:10.64 ID:qgePcMk7a.net]
>>522
> 違うブロックで宣言された変数と宣言が被るリスクが上がるだけなんだが
そんなものどこで宣言しても同じだろ

> むしろ直前宣言が優れている点ってどこだよ?
コードを追う時に見える範囲に宣言あれば型とかも分かるだろ

525 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 19:47:45.63 ID:URQHgzNh0.net]
>>522
・別functionにしない
・設計が出来ない
・順番がコロコロ変わる

こういう場合は直前の宣言がいいんだろうな

526 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 19:48:48.00 ID:ie60y+bR0.net]
インデックスとはいえ変数を使い回すのはNGなのです!
VBAだとしても許されません!ロボコン0点

527 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 20:14:29.57 ID:lr2lUZXda.net]
質問でもなく他人のコードの変数をどこに書こうがどうでもいいのに書き方に熱くなる人はバカなんだろうね
まあそういう技術的な部分に関係ないところしか語れない程度が集まるスレなんだろうけどw

528 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 20:36:38.49 ID:pBpkzzj3a.net]
>>527
そんなに熱くなるなよw



529 名前:デフォルトの名無しさん (スッップ Sd7f-VPUc) [[ここ壊れてます] .net]
>>517
で、答えられずに逃げたのかよ

530 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 20:55:49.52 ID:qYDBMpOU0.net]
>>529
マジでアホなの?
PowerShellって書いてあるだろw

531 名前:デフォルトの名無しさん [2022/09/07(水) 21:25:08.49 ID:dOhAzb3IM.net]
>>530
へー、shellコマンドと言語の違いがわからない人か
納得

532 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 21:50:42.41 ID:qYDBMpOU0.net]
>>531
PowerShellって結構リッチなプログラム言語ですけど?
頭大丈夫?

533 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 22:25:03.60 ID:GXE70sRqM.net]
シェルとシェルスクリプトは間違えてませんですわー

534 名前:デフォルトの名無しさん [2022/09/07(水) 22:55:46.20 ID:N0bzWtYO0.net]
>>524
そうね。ブロックスコープは確かに便利。
ただ、匙加減の問題にもなるけど
ブロックスコープに慣れるとついつい
単一責任原則の考え方がおざなりになりがちで
密結合なものを作ってしまい易くなる。

なので、あくまで俺はだけど
EXCELのVBAに関してはメソッドや関数の
頭に変数定義を行うようにしている。
それでコードが読み辛くなるようであれば
その時点でリファクタリングの対象になるという考え。

535 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 23:29:34.28 ID:N0PmJDO50.net]
でも誰も読まないんだよなー

536 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 23:46:23.08 ID:QgSPv1dJ0.net]
ここの回答者は上級者なんだからVBAの事端から端まで知っていると思っていたんですけど??
なんでこんなに荒れているのですか?

537 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 23:51:19.61 ID:oCHm3LOdM.net]
VBAで単一責任て
そもそも表計算ソフトで画面やDBモドキ作ってる時点でおかしいと思わないのか

538 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 00:18:03.89 ID:GEpvz+Yp0.net]
知識と人間性には何も関係がないからじゃね



539 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 01:29:45.47 ID:ih3U5PTX0.net]
だって回答者に回れるって事は知り尽くしてるって事なんでしょ?
ちょっと詳しいだけじゃ回答できるはずないもんね?

540 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 01:40:01.52 ID:eb3KVsRH0.net]
>>539
ソースは?
誰の発言?

541 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 04:43:57.30 ID:dSUuwrfW0.net]
>>534
なので、の前後の関係がよくわからん
> EXCELのVBAに関してはメソッドや関数の頭に変数定義を行うようにしている。
それこそ余計蜜結合になるかと

542 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 06:11:23.79 ID:vw1M88UR0.net]
誰が上級者と認定したん?
ここのカキコに資格試験なんかあるかいな・・・

回答が使えるかどうか、正しいかどうかが全てじゃ。

543 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 06:33:16.02 ID:13BgqVgC0.net]
どこで宣言するか問題って、画面上部をスクロールせず固定出来るようになれば解決するんだろうな。
エクセルは出来るんだから、VBAの画面も出来るようにして欲しいものだ。

544 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 06:54:06.36 ID:9KZ4CtoQa.net]
>>543
VBEは昔ながらのUIなので垂直スクロールバーの上部を下にドラッグすると同一オブジェクトコードの水平分割表示ができるけれど

545 名前:デフォルトの名無しさん [2022/09/08(木) 08:07:26.88 ID:YfOXyicz0.net]
>>541
分かり辛かったかな?
平たく言うと変数が何に使っているか分かり辛くなるような長いコードをひとつの関数やメソッドに書くなということ。

そもそもひとつの関数やメソッドにはひとつの役割だけ持たせるべきで、そうした場合、変数が何に使ってるか分からないくらい長くなること自体あまりないし、
それで長くなるようであればそもそもの作りがおかしいのでリファクタリングの対象とする、ってことなんだけどね。

546 名前:デフォルトの名無しさん (アウアウウー Sa8b-Ro21) [[ここ壊れてます] .net]
VB/VBA/ExcelもAccessもOfficeごと窓からポイッ

547 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 10:06:01.26 ID:dSUuwrfW0.net]
>>545
> 平たく言うと変数が何に使っているか分かり辛くなるような長いコードをひとつの関数やメソッドに書くなということ。
それ変数の宣言位置とは違う話だろ
まあ先頭に変数宣言するメリットを説明できないならいいや、バイバイ

548 名前:デフォルトの名無しさん (ワッチョイ 5f4f-ozIc) [[ここ壊れてます] .net]
>>547
なんで?
どうせ同じ関数内で同じ名称の変数なんて作れないんだから
全部纏めて同じ位置にあった方が「この変数はこのシチュエーションのときにこう言った意味で使う」とか命名し易いじゃん。

使ってる変数名を再宣言しようとして「あ」となることもないし、
同じ変数をバカみたいに使い回して本当は値変えると不味かったのに変えちゃったりとかアホなことも減るよ。



549 名前:デフォルトの名無しさん (ワッチョイ 5f4f-ozIc) [[ここ壊れてます] .net]
ま、そもそもそんなこと気にするくらい長いコード書いちゃいけないんだけどね。
そちらのレベルに合わせて話してもそれだけのメリットはあるよ。

550 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 13:19:53.66 ID:E2yDW5TJ0.net]
Wordがどうしようもなく使いにくいので、
Excel VBAで代わりのツールを作りたいと思います。
こんな考え方は邪道でしょうか?

551 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 13:50:27.43 ID:N6XG++JQ0.net]
WordVBAを何故つかわない?
マウロ記録がないOutlookVBAやPowerpointVBAなら一瞬気持ちがわかるが

552 名前:デフォルトの名無しさん [2022/09/08(木) 14:17:07.18 ID:Sm7a3fWy0.net]
loopのカウンタを使用後に消さないと
順番入れ替えたらバグるとか気にする初心者にはvba向いてないと思う

553 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 16:06:28.64 ID:e4Jhfn6X0.net]
ワードにできることはエクセルでほぼ出来るからワードの使いかた忘れてしもた
しかし困ったことはない

554 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 17:02:48.44 ID:dSUuwrfW0.net]
>>548
> 全部纏めて同じ位置にあった方が「この変数はこのシチュエーションのときにこう言った意味で使う」とか命名し易いじゃん。
コボル臭が... w
まあ使ってる近くにあれば宣言なども簡単に確認できるメリットより命名のメリットを重視する人もいるんだね

> 使ってる変数名を再宣言しようとして「あ」となる
んだから
> 同じ変数をバカみたいに使い回して本当は値変えると不味かったのに変えちゃったりとかアホなことも減るよ。
なんてなるわけないと思うけど?

555 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 19:47:18.35 ID:wUuMBq/Ad.net]
Excel → Markdown → Word アウトライン変換のマクロを作れば大分マトモになる予感
Excelの列で見出しを識別する感じで

556 名前:デフォルトの名無しさん mailto:sage [2022/09/10(土) 00:50:29.07 ID:yQKHhevv0.net]
intersect( activecell.ListObject.HeaderRowRange,activecell.EntireColumn).Address

テーブル上にアクティブセルがあり、そのセルの列ラベルのアドレスを調べたく
こんなのを書いたのですが、もっと他にイケてる書き方はないでしょうか

557 名前:デフォルトの名無しさん mailto:sage [2022/09/10(土) 10:48:25.59 ID:+u60WJ7w0.net]
activeCell.End(xlUp).Address は?
上に隣接する別のテーブルがないことが条件だけど

558 名前:デフォルトの名無しさん [2022/09/10(土) 15:51:20.36 ID:qRafw5tCp.net]
>>557
それだとテーブルが1行目開始でなくて
テーブルの項目名の部分にアクティブセルがあった場合は
テーブルから離れた位置にカーソルが行ってしまうな



559 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 01:14:19.08 ID:W9G67fQJ0.net]
バイナリデータの書き込みについて質問です。
hello という文字列をいったんバイナリにしてファイル書き込みするような
プログラムを書いているのですが、書き込みすると
h e l l o
というように変なゴミが入ってきます。
vbaではバイナリデータの書き込みは完全にはできないということなのでしょうか。

該当コード
https://ideone.com/MDI6yW

560 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 01:15:18.73 ID:W9G67fQJ0.net]
書き込みすると変なゴミデータが見えなくなってしまいましたが、要するに
正確に半角英数字でhelloという文字が再現できないのです。

561 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 01:27:32.82 ID:PnV//sAoa.net]
>>560
どういう内容なのかダンプして確認しないのかい?

562 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 01:41:57.90 ID:yPB6Wd0g0.net]
>>559
Option Explicit
Sub main()
  Dim bs(4) As Byte
  bs(0) = Asc("h")
  bs(1) = Asc("e")
  bs(2) = Asc("l")
  bs(3) = Asc("l")
  bs(4) = Asc("o")
  Dim fn As Integer: fn = FreeFile
  Dim fpath As String: fpath = "C:\指定のパス\output.txt"
  Open fpath For Binary As #fn Len = 1
  Dim i As Integer
  For i = LBound(bs) To UBound(bs)
    Put #fn, , bs(i)
  Next i
  Close #fn
End Sub

563 名前:559 mailto:sage [2022/09/11(日) 01:50:58.58 ID:W9G67fQJ0.net]
>>562
for each で受ける変数をvariant型にするとうまくいかんということですか?
open の変数にLen=1(1バイトごと)っていれられるんですね。

564 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 01:53:10.28 ID:yv0WXRwp0.net]
>>559
説明はちゃんと読もう
vbaはかなりゆるゆる言語なので、なるべくvbaにあわせたコードにしたほうがいい
https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/put-statement

>書き込まれる変数が 数値型の Variant である場合は、Put により、Variant の VarType を識別する 2 バイトが書き込まれた後に、変数が書き込まれます。
こんなもん追いかけてられんよ
ステートメントは極力使わず、関数にした方がいいと思う

もう少し言うと、実現したい事を直接聞いた方がいい。
vbaでバイナリとかめんどくさすぎて誰もやってないので、
できるかどうかなんてあんまりみんな分かってない

>>561
してもあんま意味ないだろ

565 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 02:05:46.07 ID:yPB6Wd0g0.net]
>>563
Len = 1 にしても無駄
あと、EachはVariantしか使えない

>>564
ところがバイナリダンプしてみると1文字あたり2バイトしか書き込まれてないんだよな
その説明の通りだと3バイトずつ書き込まれるはずなのに

566 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 02:07:03.03 ID:W5Eoe6lQa.net]
>>564
今回はもう結果が出ているけれど、入出力を行ったら確認しないのか?
出力結果から意図するものとどう異なるかによって予測できる場合もあるだろ

567 名前:559 mailto:sage [2022/09/11(日) 02:11:34.10 ID:W9G67fQJ0.net]
>>564
正直説明一々読むの大変なのでここで聞いてそのあたりをつけようと思ってます。

>ステートメントは極力使わず、関数にした方がいいと思う
ちょっとここがよくわからないんですがどういうことですか。

>もう少し言うと、実現したい事を直接聞いた方がいい。
vbaの練習のためにとりあえずbase64エンコーディングを実装しようとしてました。
エンコーディングはできました。デコードでつまづいて格闘してましたが、デコードもとりあえずできました。
つぎは、bmpファイルを読み込んで1x1pixcelに縦横絞ったセルのシートに画像表示させるとか
やろうと思ってます。

568 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 02:12:49.77 ID:yv0WXRwp0.net]
>>565
3バイトずつだぞ
https://i.imgur.com/Um3HyuV.png



569 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 02:19:41.47 ID:yv0WXRwp0.net]
>>567
結局やりたいことはライフゲームとか、画像処理だろう
vbaは、事務処理特化なんだ。本当にやめたほうがいい。

vbaでクリエイティブな事をやろうとすると、めちゃくちゃ遅い
入出力用のセルがすごく見やすいのはわかるんだけど、別言語でやったほうがいい
具体的に言うとC#かvb.netがいい。
jsならそのままアプリにも移行できる

570 名前:559 mailto:sage [2022/09/11(日) 02:24:11.91 ID:W9G67fQJ0.net]
とりあえず入門したいんで、アルゴリズムわかるやつ実装してるだけなんであんま考えてない。
最終的には機械学習実装できりゃいいなと思ってるんで、bitmap表示実装できたら
vbaでそこまでやるレベルになるかなと。

571 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 02:44:48.34 ID:+Dglx5gI0.net]
vbaの使い方間違ってますよ

572 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 11:47:30.27 ID:scHPWuyOa.net]
他人が何をやろうと勝手なんだから質問にこたえないなら放置すればいいと思うけど
説教野郎って減らないよね

573 名前:デフォルトの名無しさん [2022/09/11(日) 13:01:03.57 ID:qfkrXmQcd.net]
>>567

>正直説明一々読むの大変なのでここで聞いてそのあたりをつけようと思ってます

死ね

574 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 13:48:26.08 ID:4omWB5g70.net]
いや、普通に頭くるだろ?
ダメダメな使い方してると

575 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 17:18:35.58 ID:9MrulJbSd.net]
>>569
ライフゲームってなんなのかグーグルで検索したら
結果ページ上で勝手にライフゲームが始まってたわ
さすがグーグル

576 名前:デフォルトの名無しさん [2022/09/11(日) 18:42:32.58 ID:+bJdyqft0.net]
>>575
気づいたときにはライフがゲームオーバーになってるよ

577 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 20:43:41.22 ID:yPB6Wd0g0.net]
本当だ
ブラウザの背景でライフゲームが動いてるw
無駄な機能多すぎるだろGoogle

578 名前:デフォルトの名無しさん [2022/09/11(日) 22:06:38.09 ID:mrmcBHlY0.net]
ttps://excel-ubara.com/excelvba5/EXCELVBA228.html
エクセルの神髄さんのところにあるクイックソートの引数について質問です
lngMinとlngMaxを必ず指定しないといけないようなのですが、
どんな数字を入れればいいのですか?

 vBase = argAry(Int((lngMin + lngMax) / 2))
こうなっていて、argAryインデックスの2倍を超える数値は入れられないようです。
インデックスとしての真ん中であるなら関数側でuboundとかlboundとかから計算すればいいように思いました。

バブルソートやインサートソートと違ってイマイチやってる事がわからないので、
lngMinとlngMaxの引数にいれるべき数値がわかる方おられましたら教えてください。



579 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 22:37:51.72 ID:3GTYFVAp0.net]
>>578
配列のうちでどこをソートするか指定できるようになってるんじゃないですかね

580 名前:デフォルトの名無しさん mailto:sage [2022/09/11(日) 22:42:49.09 ID:6zTUjY+M0.net]
>>578
ソートしたいレンジの最初と最後のインデックス
クイックソートは最初にピボットを決めてそれより小さいものをピボットより前に、大きいものをピボットの後ろに移動して、ピボットの前の区間と後ろの区間をそれぞれクイックソートする方法を繰り返す

ピボットの決め方は色々あるけど、その人は配列の真ん中のオブジェクトを選んでるだけ。ランダムに選ぶと平均的には最も良い結果が得られるけど、もうひと手間かかる

581 名前:デフォルトの名無しさん mailto:sage [2022/09/12(月) 01:30:49.61 ID:0s0pxnwOM.net]
ユーザーフォーム内のコマンドボタンではfunctionの呼び出しはできない仕様でしょうか?
似たようなコードのボタンがあり、特定ブックを取得するための同じコードを全部のボタンに書いています
ごちゃごちゃしてしまっているのできれいにしたかったのですが、functionが呼び出せず変数が空でエラーになってしまいます

582 名前:デフォルトの名無しさん [2022/09/12(月) 07:39:53.33 ID:STPpGgy+0.net]
>>581
呼び出し出来るよ。そのエラーになったコードをここに書いてもらえれば原因がわかるかと。

583 名前:デフォルトの名無しさん [2022/09/12(月) 11:53:11.04 ID:fWVKyvtQa.net]
sub から呼ぶとか

584 名前:578 mailto:sage [2022/09/13(火) 09:42:49.11 ID:g8hgly2P0.net]
>>579
やってみたら確かに!驚きです。
>>580
クイックソートって発明品みたいなものですよね。
人間が手動で並べ替えても慣れる程にクイックソートみたいなやり方が高速になっていくんですかね。

皆さんありがとうございました。

585 名前:デフォルトの名無しさん mailto:sage [2022/09/13(火) 10:05:15.02 ID:kJFB2T9s0.net]
いえいえ

586 名前:デフォルトの名無しさん [2022/09/13(火) 23:06:23.52 ID:m4C/g6mCM.net]
>>582
フォームが3階層くらいありますが

1.モジュールからフォームの呼び出し
Sub commentForm()

rowBtn = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row
colBtn = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Column

大分類.Show vbModeless

End Sub

587 名前:デフォルトの名無しさん [2022/09/13(火) 23:09:43.50 ID:m4C/g6mCM.net]
すみません、1つ目フォーム呼び出しのモジュール内に以下のコードがあります
Public ShIndex As String

2階層目で3つの大分類の選択

2.分類選択
Private Sub CommandButton1_Click()

'コマンドボタンのタイトル反映 ※エクセルのセルを反映させています。
中分類.CommandButton1.Caption = Worksheets("2-1").Range("C1").Text
中分類.CommandButton2.Caption = Worksheets("2-2").Range("C1").Text
中分類.CommandButton3.Caption = Worksheets("2-3").Range("C1").Text
中分類.CommandButton4.Caption = Worksheets("2-4").Range("C1").Text
中分類.CommandButton5.Caption = Worksheets("2-5").Range("C1").Text

中分類.Show vbModeless

End Sub

588 名前:デフォルトの名無しさん [2022/09/13(火) 23:11:31.11 ID:m4C/g6mCM.net]
3.さらに次の分類へ

Private Sub CommandButton1_Click()

ShIndex = "2-1"

'コマンドボタンのタイトル反映 ※エクセルのセルを反映させています。

中分類1.Caption = Worksheets(ShIndex).Range("C3").Value
中分類1.CommandButton1.Caption = Worksheets(ShIndex).Range("D3").Value
中分類1.CommandButton2.Caption = Worksheets(ShIndex).Range("D7").Value
中分類1.CommandButton3.Caption = Worksheets(ShIndex).Range("D11").Value
中分類1.CommandButton4.Caption = Worksheets(ShIndex).Range("D15").Value

中分類1.Show vbModeless
End Sub



589 名前:デフォルトの名無しさん [2022/09/13(火) 23:36:32.69 ID:m4C/g6mCM.net]
4,最終の選択ボタン
コメントアウトの範囲内をfunction(wbSerch)として、値を返して変数を使用したいです
Private Sub CommandButton1_Click()
Dim wbRepName As String
'########## ここから ##########
Dim i As Long
Dim wb As Workbook
Dim wbFullPath As String
For i = 1 To Workbooks.Count
Set wb = Workbooks(i)
If wb.FullName Like "*検索ワード*" Then ' * *に挟まれた文字を含むブックを検索する
wbFullPath = wb.FullName
Exit For
End If
Next
Dim pos As Long
pos = InStrRev(wbFullPath, "\")
If (pos > 0) Then
wbRepName = Right(wbFullPath, Len(wbFullPath) - pos)
End If
'########## ここまで ##########
Dim rowRep As Long
rowRep = Worksheets("シート名").Cells(rowButton, "Q").Value
Dim num As Long
num = 1
If Workbooks(wbRepName).ActiveSheet.Cells(rowRep + 1, "H") = "" Then
Workbooks(wbRepName).ActiveSheet.Range(Workbooks(wbRepName).ActiveSheet.Cells(rowRep + 1, "H"), Workbooks(wbRepName).ActiveSheet.Cells(rowRep + 2, "H")) = _
Worksheets(ShIndex).Range(Worksheets(ShIndex).Cells(3 + (num - 1) * 4, "E"), Worksheets(ShIndex).Cells(3 + (num - 1) * 4 + 1, "E")).Value
End If
Workbooks(wbRepName).ActiveSheet.Range(Workbooks(wbRepName).ActiveSheet.Cells(rowRep + 4, "H"), Workbooks(wbRepName).ActiveSheet.Cells(rowRep + 7, "H")) = _
Worksheets(ShIndex).Range(Worksheets(ShIndex).Cells(3 + (num - 1) * 4, "F"), Worksheets(ShIndex).Cells(3 + (num - 1) * 4 + 3, "F")).Value
End Sub

590 名前:デフォルトの名無しさん [2022/09/13(火) 23:37:53.43 ID:m4C/g6mCM.net]
コードをアップする際に一部書き換えで変数が微妙に違うのは許してくださいw

591 名前:デフォルトの名無しさん mailto:sage [2022/09/14(水) 01:24:17.40 ID:jzWlgqKP0.net]
>>589
大量のコード張るなら、どっかコード張るサイトあるからそこ使ってくれ

>コメントアウトの範囲内をfunction(wbSerch)として、値を返して変数を使用したいです
やれば良いとしか
自分でやって動かなかったっていうコード出せよ
エラーが出たならエラー内容も

Functionが呼び出されないんじゃなくて、呼び出したけど値を返してないか
返された値をちゃんと受け取ってないんじゃないかと予想したがな

592 名前:デフォルトの名無しさん [2022/09/14(水) 05:04:23.30 ID:Pxkwm+eH0.net]
>>589
色々気になるところばかりですが、Functionだけについていうと

Public Function プロシージャ名() As String
'処理
プロシージャ名 = ファンクション内で作成した文字列
End Function

という感じで作って、呼び出す側は下記で

wbRepName = ファンクション名

593 名前:デフォルトの名無しさん [2022/09/14(水) 08:09:29.31 ID:wHV8fEyKd.net]
>>592
ありがとうございます
やっぱりそれでいいんですよね
とりあえず動かないのは困るので、関数を呼び出すコードは削除してしまったのでまたやり直してみます

適当にネットで検索して継ぎはぎしているのですが、これはやめた方がいいみたいなところがあれば教えていただけると

594 名前:デフォルトの名無しさん [2022/09/14(水) 08:09:41.99 ID:wHV8fEyKd.net]
>>592
ありがとうございます
やっぱりそれでいいんですよね
とりあえず動かないのは困るので、関数を呼び出すコードは削除してしまったのでまたやり直してみます

適当にネットで検索して継ぎはぎしているのですが、これはやめた方がいいみたいなところがあれば教えていただけると

595 名前:デフォルトの名無しさん mailto:sage [2022/09/14(水) 10:47:45.73 ID:DQiHAQaU0.net]
>>594
ネットで継ぎはぎはやめたほうがいい

596 名前:デフォルトの名無しさん mailto:sage [2022/09/14(水) 14:30:03.63 ID:AS+oyxbj0.net]
継ぎはぎっていちばんやってはダメな事でしょ
不具合でたら修正困難

597 名前:デフォルトの名無しさん (スプッッ Sd0a-JgIN) [[ここ壊れてます] .net]
>>594
お前みたいな奴がVBAを使うのはやめた方がいい

598 名前:デフォルトの名無しさん (ブーイモ MM3e-lqbG) [[ここ壊れてます] .net]
それな



599 名前:デフォルトの名無しさん (アウアウウー Sa21-bmfI) [[ここ壊れてます] .net]
ネットの情報をうのみにするのはよくない

600 名前:デフォルトの名無しさん mailto:sage [2022/09/14(水) 15:23:36.39 ID:mWSu9Hj1M.net]
特にここの奴らの言うことなど……

601 名前:デフォルトの名無しさん mailto:sage [2022/09/14(水) 16:32:30.56 ID:AS+oyxbj0.net]
このスレも含めてネットをなんでもかんでも鵜呑みにしないように。

602 名前:デフォルトの名無しさん [2022/09/14(水) 20:19:10.06 ID:qlFB5bFT0.net]
むしろガンガンコードのコピーでも継ぎはぎだらけでも何でもやれ
それで痛い目を見れば二度とやらなくなるだろう
ただし、他の人に迷惑を掛けない範囲でな

603 名前:デフォルトの名無しさん mailto:sage [2022/09/14(水) 20:25:13.51 ID:tyPb8uvVM.net]
継ぎ接ぎでもなんでも動きゃいいよVBAなんて

604 名前:デフォルトの名無しさん mailto:sage [2022/09/14(水) 22:09:32.51 ID:LR6kMMNU0.net]
どんなにひどいコードを書こうが仕事は結果がすべて
過程を見て部分点がもらえるのは高校まで

605 名前:デフォルトの名無しさん mailto:sage [2022/09/14(水) 23:32:37.08 ID:XFOFR3Sy0.net]
ひどいコード書いて、エクセルに殴られたら嫌だなあ

606 名前:デフォルトの名無しさん [2022/09/15(木) 02:24:16.54 ID:mZ1kOEzbd.net]
>>604
馬鹿はメンテナンスのことを考えない
こういう馬鹿がいるからVBAが禁止の会社が出てくる

607 名前:デフォルトの名無しさん [2022/09/15(木) 07:02:34.29 ID:K2oLP0MfM.net]
と、馬鹿が申しております。

608 名前:デフォルトの名無しさん mailto:sage [2022/09/15(木) 07:47:29.25 ID:p0uH79QOd.net]
VBA禁止はメンテがどうのこうのじゃなくて
スキルが低い人間が酷い結果をもたらすコードを書いてしまうからじゃね
下手に書くと他人の労働の成果が一瞬にして無に帰すからね



609 名前:デフォルトの名無しさん mailto:sage [2022/09/15(木) 08:13:47.40 ID:V+/rW9Cpd.net]
そもそもエクセル側でVBA使ってごちゃごちゃやる職場がセンス無い

エンジニアが管理画面を作ってVBAでやってた処理をそっちでやって、事務系の人は管理画面からcsvを落としてそれをまんま使うぐらいが良い

610 名前:デフォルトの名無しさん mailto:sage [2022/09/15(木) 08:15:36.60 ID:HISUe1p20.net]
ほいきたばーかばーか

611 名前:デフォルトの名無しさん mailto:sage [2022/09/15(木) 08:16:33.94 ID:HISUe1p20.net]
CSVって発想がだめだね
プロは引用符も不要になるTSVを使う
うんこ

612 名前:デフォルトの名無しさん mailto:sage [2022/09/15(木) 08:20:49.72 ID:tsRCCw+k0.net]
いや事務員にはcsvがちょうどいいよ
tsv開けませ~んとか言われるだけ
もっと目線を合わせろ技術キモオタ

613 名前:デフォルトの名無しさん mailto:sage [2022/09/15(木) 10:16:19.88 ID:HISUe1p20.net]
TSVはメモ帳で開いて全選択のコピペでシートに貼り付けできるんだよ
見事に馬鹿が露呈したな

614 名前:デフォルトの名無しさん [2022/09/15(木) 11:34:27.47 ID:9BPOZrDw0.net]
いやいや
そこは用途に合わせようよ
PDFやEXCEL出力した場合が良い場合もあるよ

615 名前:デフォルトの名無しさん mailto:sage [2022/09/15(木) 14:52:36.98 ID:5XNYG1220.net]
なんで事務員がエラーの対処法を知らないんだよ。。
毎日いじってるから一通りの対応はできるだろ?

616 名前:デフォルトの名無しさん [2022/09/15(木) 16:19:16.15 ID:9BPOZrDw0.net]
エラーの対処法「システム部にお問合せ下さい。」

617 名前:デフォルトの名無しさん mailto:sage [2022/09/15(木) 19:11:05.38 ID:5XNYG1220.net]
そんなのExcelできる事務員じゃないわ!

618 名前:デフォルトの名無しさん mailto:sage [2022/09/15(木) 19:27:19.21 ID:2CSrOwDy0.net]
最低限のことしかできないって人結構いるけどな



619 名前:デフォルトの名無しさん mailto:sage [2022/09/15(木) 19:44:47.37 ID:bsuDXGPV0.net]
ボタン押してるだけの事務いるいる。

620 名前:デフォルトの名無しさん [2022/09/15(木) 20:05:30.90 ID:/Qo8z/Hb0.net]
ボタンの押し方で仕上がりが変わる。
優秀な事務員はボタンの押し方が素晴らしい。
日本の技術は世界一。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<265KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef