Excel VBA 質問スレ P ..
[2ch|▼Menu]
473:デフォルトの名無しさん (ワッチョイ 023e-y80L)
[ここ壊れてます] .net
URLリンク(www.tipsfound.com)

このコードでcsvファイルをエクセルの指定のシートに取り込めますか?

474:デフォルトの名無しさん
22/09/02 07:13:47.06 rviUcujq0.net
>>473
やってみて聞いてるの?自分でやるのが面倒臭いからとりあえず聞いてるだけ?

475:デフォルトの名無しさん
22/09/02 07:18:17.22 K+fb6kZO0.net
最近のレベル低下には目を見張るものがあるな

476:デフォルトの名無しさん
22/09/02 07:25:48.67 +uzTYabFM.net
総合相談所で総スカンされた馬鹿だろ

477:デフォルトの名無しさん
22/09/02 11:01:00.75 BYdQXtrB0.net
いや、そもそも何でそんな事やりたいのか??
という質問自体がさ

478:デフォルトの名無しさん
22/09/02 12:33:00.40 MAC5jHq+0.net
よそのサイトなんだから作った奴にきけばいいのにと思う今日この頃

479:デフォルトの名無しさん
22/09/02 14:51:15.82 BYdQXtrB0.net
ど正論出ました
終了

480:デフォルトの名無しさん (ワッチョイ 5f3e-NodX)
[ここ壊れてます] .net
>>476
あれ総スカンだったんですか?
外部データの取り込みでcドライブのファイルを取り込んでいるのに

そのエクセルのファイルを他の人にコピーして渡したら同じ場所にファイルを配置しているのにファイルが読み込めないって聞いただけなのに笑

481:デフォルトの名無しさん
22/09/03 12:58:16.39 WuOEJ3Bid.net
あっちでも総スカンだしここでも総スカンなんだからもういいでしょ
レベル低いよあんた

482:デフォルトの名無しさん
22/09/03 14:11:09.43 fgoOqg3v0.net
しつこい馬鹿

483:デフォルトの名無しさん
22/09/04 02:41:16.33 +4pXrWCU0.net
向こうの総合相談スレはこのスレと違って厳しい人ばかりだからな。

484:デフォルトの名無しさん
22/09/04 17:26:08.83 nTptsQZA0.net
>>483
VBAのスレよりも質問スレは厳しい人ばかりなんですね

485:デフォルトの名無しさん
22/09/04 21:22:49.28 +4pXrWCU0.net
少しでも的外れな質問したら総スカンだからな。
初級者だろうが容赦ないのが向こう。

486:デフォルトの名無しさん
22/09/04 22:38:27.70 I+EDFKibr.net
replace関数でワイルドカードを使用してるのですが、
うまく置換していくれないのでなぜですか?
やりたいこと A1セルのKKK1111というデータを2222に変換したい
replace("A1","*" & "K"& "*","2222" )

487:デフォルトの名無しさん (ワッチョイ 07a5-Iguz)
[ここ壊れてます] .net
REPLACE(文字列, 開始位置, 文字数, 置換文字列)

488:デフォルトの名無しさん
22/09/04 23:39:15.09 +4pXrWCU0.net
優しいなみんな
総合スレだったらフルボッコ

489:デフォルトの名無しさん
22/09/05 18:43:28.63 8FlTtg5u0.net
初心者あるあるなんだろうか

490:デフォルトの名無しさん
22/09/05 22:48:54.81 C53zNTJD0.net
ありがとうございました。
ユーザー定義型と連想配列を知って少し前進しました。
検索掛けてもなかなかでないので教えてください。
dim i
for i....
使い終わったらiを未定義に戻したいんですが、
宣言の反対?になるような未定義に戻す関数?ステートメント?はありませんか?

491:デフォルトの名無しさん
22/09/05 23:44:13.97 ZiXiUX+x0.net
無いし気にする必要もない

492:デフォルトの名無しさん
22/09/06 02:21:14.99 xcONMZhZ0.net
>>490
ちなみに戻したい理由は何?

493:デフォルトの名無しさん
22/09/06 03:38:48.46 DWdJNYk/d.net
馬鹿に理由を問う虚しさ

494:デフォルトの名無しさん
22/09/06 05:21:21.45 Fb+lfM05d.net
変数は使い捨てだよVBAの場合

495:デフォルトの名無しさん
22/09/06 06:55:14.80 FWLy+pWW0.net
プロシージャ内で宣言した変数ならプロシージャを抜ければクリアされるしマクロ全体が終了すれば全てクリアされるからあまり気にしない。
privateやpublicで宣言したオブジェクトなら明示的にnothingをsetすることはあるけど、イマドキのPCでメモリ解放もあまり気にする必要はない気もする。
エラーで止まったときを考えると念の為しておくくらいかなぁ。

496:490 (ワッチョイ bf66-bBdM)
[ここ壊れてます] .net
初心者なのでプロシージャ内で処理の順番を変えたくなる時があります。
使う直前に宣言したいのでプロシージャの初めに宣言は出来ればしたくありません。
コピペでソースコードを入れ替えて処理の順番を変えるとforが1回目とfor2回目が入れ替わってしまう事があります。
だから毎度forを使う前は、foreacheもそうですが、宣言が必要かをプロシージャ内を戻って探します。
forが終わるたびに未定義に出来ればいいなと思ったのは使い終わった変数名が後からかぶっても
使い終わった時点で未定義に戻しておけばエラーも不具合も出ないからです。
他の言語だとあるのであるかなと思ったのです。

497:デフォルトの名無しさん
22/09/06 10:03:36.29 Z9J6cI+IM.net
はい、わかりました

498:デフォルトの名無しさん
22/09/06 10:56:34.50 MUc/w1ud0.net
>>496
>他の言語だとある
これ本当?

499:デフォルトの名無しさん
22/09/06 11:47:55.76 DWdJNYk/d.net
馬鹿ではなく糖質かな

500:デフォルトの名無しさん
22/09/06 11:53:04.38 o3g0SSKzd.net
会社のパソコンでvbsからエクセルvbaを起動させメール本文、添付ファイルを作成し添付、outlookでメール送信をしたいのですがOutlookが起動しません。
エクセルから手動でvbaを起動すると正常に動作するのですが、vbsから起動するとタスクバーのエクセルが点滅し停止します。
特にエラーを吐いている様子はありません。
何か思いあたる部分があればご教示ください

501:デフォルトの名無しさん
22/09/06 12:06:14.05 QxRWO4Sk0.net
漏れの推測だけど、
>タスクバーのエクセルが点滅し
これは、バックグランドで起動しているのでは?
それで、エクセル内のマクロなどが起動しないとか?

502:デフォルトの名無しさん
22/09/06 12:18:01.17 iobTnTaB0.net
>>498
定義済みが未定義になるわけじゃないけど
ブロックスコープとかいうやつだな
残念ながら旧VBやVBAにはない。VB.NETにはあるけど
VBAの一番狭いスコープはプロシジャ
なので、プロシジャの先頭に宣言まとめとけって作法がある

503:デフォルトの名無しさん
22/09/06 13:03:51.66 BhZhCXYFd.net
>501
vba自体は動作しております。
手動でvbaを起動するとエクセルが開き添付ファイルなどを作成し、Outlookで送信するのですが
vbsでの起動だと添付ファイルまでは作成するのですが、Outlookが立ち上がらず、タスクバーのエクセルが点滅して動作が止まります。
ネットで調べても事例が出てこず、会社のパソコンなのでシステム管理者に制限をかけられているのか…
何か調べる方法がありましたら教えてください

504:デフォルトの名無しさん
22/09/06 13:07:25.60 Z9J6cI+IM.net
printfデバッグでどこまで動いているか確かめましょう!

505:デフォルトの名無しさん
22/09/06 13:13:46.25 Td+5EGNEa.net
>>496
始めに宣言を書いている方が探しやすいと思うけど
要らなさそうなものはまとめてコメントして確認すればいいわけだし

506:デフォルトの名無しさん (ワッチョイ 07da-oTx6)
[ここ壊れてます] .net
VBAでメールとか初めて見た

507:デフォルトの名無しさん (ワッチョイ e72f-HH83)
[ここ壊れてます] .net
>>500
手動で実行できるなら、VBSで起動しているときのユーザとその権限があやしい
つかエラー吐いてないんじゃなくて、ちゃんとエラー捕まえられてないだけだと思うが

あとスクリプト系からのメール送信はいろいろセキュリティ周りでチェックされるかもしれん
とくに会社で管理されてるようなPCなら、ちゃんと管理者に許可とってからやれよ

508:デフォルトの名無しさん (ワッチョイ 2749-DXwO)
[ここ壊れてます] .net
メール送信用のc#のexeつくって呼び出させるようにしたことならある
あとsendgridAPIよぶの
前者は他にも使い回したな。.NETcoreだった気がするからいつまで使えるやら

509:デフォルトの名無しさん (ワッチョイ 5f01-yqJ9)
[ここ壊れてます] .net
>>498
あるものもある、例えばPowerShellにはそのものズバリのRemove-Variableなんてものがあったりする

510:デフォルトの名無しさん
22/09/06 16:28:13.42 QxRWO4Sk0.net
>>503
>タスクバーのエクセルが点滅して動作が止まります
バックグランドで起動しているだけじゃ、エクセルのマクロが実行されないのかも
printf デバッグで、どこまで動いているか確かめるべき!
エクセルのマクロの、Outlook の起動コードの前後で、何かを出力すれば?
Outlook の起動前に、端末・ファイルへ出力する
Outlook の起動コード
Outlook の起動後に、端末・ファイルへ出力する

511:デフォルトの名無しさん
22/09/06 20:05:52.59 D5ckGmEva.net
動作が止まるのは終了したからかもよ

512:490 (ワッチョイ bf66-bBdM)
[ここ壊れてます] .net
>>505
なるほど。そういう方もおられるのですね。
EXCEL VBAのプロシージャはあんまり長くしない方がいいよみたいなサイト読んで影響受けてます。
コードの書き方って結構こだわりを持っている方がいるようで、自分はそれに影響を受けやすい方です。
自分もこだわりたい方なんだと思います。

EXCEL VBAを知って、宣言は直前が基本ですよみたいな記事読んで強く影響受けました。
だから使い終わるごとに未定義に出来れば毎度宣言しなおせるからすっきりするのになぁみたいな気持ちでした。
EXCEL VBAとしてはfor やfor eachに使うような変数は先頭宣言にしてやっていこうと思います。

513:デフォルトの名無しさん (ワッチョイ 47ac-DXwO)
[ここ壊れてます] .net
ちゃんとfunction分けてたら直前でいいけど、
大抵クソデカ関数ひとつか、グローバル宣言祭りだろうからなあ

514:デフォルトの名無しさん
22/09/06 20:37:51.18 z3X/Y8zI0.net
>>512
> EXCEL VBAとしてはfor やfor eachに使うような変数は先頭宣言にしてやっていこうと思います。
とりあえずそれで動くところまで持って行ってコードが固まったらこだわりのコードスタイルにリファクタリングすればいいかと

515:デフォルトの名無しさん
22/09/06 21:28:56.11 3UeoLADl0.net
>>512
>他の言語だとあるのであるかなと思ったのです。
他の言語って具体的に何?
答えられない?逃げる?それともまた言い訳?

516:デフォルトの名無しさん
22/09/06 21:54:35.94 iobTnTaB0.net
>>512
個人的に、VBAに限定した話で宣言は直前とかいう記事はあんまり信用できないと思ってる
最近の言語ならそれで良いんだけどね

517:デフォルトの名無しさん
22/09/06 22:58:52.94 z3X/Y8zI0.net
>>515
>>509
煽るならもうちょい知識をつけてからにした方がいい

518:デフォルトの名無しさん
22/09/06 23:05:26.43 NuTb9qxy0.net
あまり複雑化しても辛くなるしな
シンプルにシンプルによ

519:デフォルトの名無しさん
22/09/07 07:28:44.73 TmSq6TyA0.net
>>516
どういうこと?
最近の言語と違って
・ブロックスコープがない
・宣言と同時に代入できない
以上VBAの特徴2点を差し引いたとしても、
先頭宣言が直前宣言より優れている所なんかひとつもないと思うんだが

520:デフォルトの名無しさん
22/09/07 09:01:28.19 l5y/t4MDM.net
個人的信条を議論するのは無意味

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

522:デフォルトの名無しさん
22/09/07 19:33:33.73 nObPwJJb0.net
>>519
まあ>>520に同意しつつ、一番の理由は、
VBAでの一般的なスタイルに反するからなんだが
ブロックスコープがないのに直前で変数宣言するのは、
違うブロックで宣言された変数と宣言が被るリスクが上がるだけなんだが
むしろ直前宣言が優れている点ってどこだよ?

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

524:デフォルトの名無しさん
22/09/07 19:45:10.64 qgePcMk7a.net
>>522
> 違うブロックで宣言された変数と宣言が被るリスクが上がるだけなんだが
そんなものどこで宣言しても同じだろ
> むしろ直前宣言が優れている点ってどこだよ?
コードを追う時に見える範囲に宣言あれば型とかも分かるだろ

525:デフォルトの名無しさん
22/09/07 19:47:45.63 URQHgzNh0.net
>>522
・別functionにしない
・設計が出来ない
・順番がコロコロ変わる
こういう場合は直前の宣言がいいんだろうな

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

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

528:デフォルトの名無しさん
22/09/07 20:36:38.49 pBpkzzj3a.net
>>527
そんなに熱くなるなよw

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

530:デフォルトの名無しさん
22/09/07 20:55:49.52 qYDBMpOU0.net
>>529
マジでアホなの?
PowerShellって書いてあるだろw

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

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

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

534:デフォルトの名無しさん
22/09/07 22:55:46.20 N0bzWtYO0.net
>>524
そうね。ブロックスコープは確かに便利。
ただ、匙加減の問題にもなるけど
ブロックスコープに慣れるとついつい
単一責任原則の考え方がおざなりになりがちで
密結合なものを作ってしまい易くなる。
なので、あくまで俺はだけど
EXCELのVBAに関してはメソッドや関数の
頭に変数定義を行うようにしている。
それでコードが読み辛くなるようであれば
その時点でリファクタリングの対象になるという考え。

535:デフォルトの名無しさん
22/09/07 23:29:34.28 N0PmJDO50.net
でも誰も読まないんだよなー

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

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

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

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

540:デフォルトの名無しさん
22/09/08 01:40:01.52 eb3KVsRH0.net
>>539
ソースは?
誰の発言?

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

542:デフォルトの名無しさん
22/09/08 06:11:23.79 vw1M88UR0.net
誰が上級者と認定したん?
ここのカキコに資格試験なんかあるかいな・・・
回答が使えるかどうか、正しいかどうかが全てじゃ。

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

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

545:デフォルトの名無しさん
22/09/08 08:07:26.88 YfOXyicz0.net
>>541
分かり辛かったかな?
平たく言うと変数が何に使っているか分かり辛くなるような長いコードをひとつの関数やメソッドに書くなということ。
そもそもひとつの関数やメソッドにはひとつの役割だけ持たせるべきで、そうした場合、変数が何に使ってるか分からないくらい長くなること自体あまりないし、
それで長くなるようであればそもそもの作りがおかしいのでリファクタリングの対象とする、ってことなんだけどね。

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

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

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

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

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

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

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

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

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

554:デフォルトの名無しさん
22/09/08 17:02:48.44 dSUuwrfW0.net
>>548
> 全部纏めて同じ位置にあった方が「この変数はこのシチュエーションのときにこう言った意味で使う」とか命名し易いじゃん。
コボル臭が... w
まあ使ってる近くにあれば宣言なども簡単に確認できるメリットより命名のメリットを重視する人もいるんだね
> 使ってる変数名を再宣言しようとして「あ」となる
んだから
> 同じ変数をバカみたいに使い回して本当は値変えると不味かったのに変えちゃったりとかアホなことも減るよ。
なんてなるわけないと思うけど?

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

556:デフォルトの名無しさん
22/09/10 00:50:29.07 yQKHhevv0.net
intersect( activecell.ListObject.HeaderRowRange,activecell.EntireColumn).Address
テーブル上にアクティブセルがあり、そのセルの列ラベルのアドレスを調べたく
こんなのを書いたのですが、もっと他にイケてる書き方はないでしょうか

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

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

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

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

561:デフォルトの名無しさん
22/09/11 01:27:32.82 PnV//sAoa.net
>>560
どういう内容なのかダンプして確認しないのかい?

562:デフォルトの名無しさん
22/09/11 01:41:57.90 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
22/09/11 01:50:58.58 W9G67fQJ0.net
>>562
for each で受ける変数をvariant型にするとうまくいかんということですか?
open の変数にLen=1(1バイトごと)っていれられるんですね。

564:デフォルトの名無しさん
22/09/11 01:53:10.28 yv0WXRwp0.net
>>559
説明はちゃんと読もう
vbaはかなりゆるゆる言語なので、なるべくvbaにあわせたコードにしたほうがいい
URLリンク(docs.microsoft.com)
>書き込まれる変数が 数値型の Variant である場合は、Put により、Variant の VarType を識別する 2 バイトが書き込まれた後に、変数が書き込まれます。
こんなもん追いかけてられんよ
ステートメントは極力使わず、関数にした方がいいと思う
もう少し言うと、実現したい事を直接聞いた方がいい。
vbaでバイナリとかめんどくさすぎて誰もやってないので、
できるかどうかなんてあんまりみんな分かってない
>>561
してもあんま意味ないだろ

565:デフォルトの名無しさん
22/09/11 02:05:46.07 yPB6Wd0g0.net
>>563
Len = 1 にしても無駄
あと、EachはVariantしか使えない
>>564
ところがバイナリダンプしてみると1文字あたり2バイトしか書き込まれてないんだよな
その説明の通りだと3バイトずつ書き込まれるはずなのに

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

567:559
22/09/11 02:11:34.10 W9G67fQJ0.net
>>564
正直説明一々読むの大変なのでここで聞いてそのあたりをつけようと思ってます。
>ステートメントは極力使わず、関数にした方がいいと思う
ちょっとここがよくわからないんですがどういうことですか。
>もう少し言うと、実現したい事を直接聞いた方がいい。
vbaの練習のためにとりあえずbase64エンコーディングを実装しようとしてました。
エンコーディングはできました。デコードでつまづいて格闘してましたが、デコードもとりあえずできました。
つぎは、bmpファイルを読み込んで1x1pixcelに縦横絞ったセルのシートに画像表示させるとか
やろうと思ってます。

568:デフォルトの名無しさん
22/09/11 02:12:49.77 yv0WXRwp0.net
>>565
3バイトずつだぞ
URLリンク(i.imgur.com)

569:デフォルトの名無しさん
22/09/11 02:19:41.47 yv0WXRwp0.net
>>567
結局やりたいことはライフゲームとか、画像処理だろう
vbaは、事務処理特化なんだ。本当にやめたほうがいい。
vbaでクリエイティブな事をやろうとすると、めちゃくちゃ遅い
入出力用のセルがすごく見やすいのはわかるんだけど、別言語でやったほうがいい
具体的に言うとC#かvb.netがいい。
jsならそのままアプリにも移行できる

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

571:デフォルトの名無しさん
22/09/11 02:44:48.34 +Dglx5gI0.net
vbaの使い方間違ってますよ

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

573:デフォルトの名無しさん
22/09/11 13:01:03.57 qfkrXmQcd.net
>>567
>正直説明一々読むの大変なのでここで聞いてそのあたりをつけようと思ってます
死ね

574:デフォルトの名無しさん
22/09/11 13:48:26.08 4omWB5g70.net
いや、普通に頭くるだろ?
ダメダメな使い方してると

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

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

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

578:デフォルトの名無しさん
22/09/11 22:06:38.09 mrmcBHlY0.net
URLリンク(excel-ubara.com)
エクセルの神髄さんのところにあるクイックソートの引数について質問です
lngMinとlngMaxを必ず指定しないといけないようなのですが、
どんな数字を入れればいいのですか?
 vBase = argAry(Int((lngMin + lngMax) / 2))
こうなっていて、argAryインデックスの2倍を超える数値は入れられないようです。
インデックスとしての真ん中であるなら関数側でuboundとかlboundとかから計算すればいいように思いました。
バブルソートやインサートソートと違ってイマイチやってる事がわからないので、
lngMinとlngMaxの引数にいれるべき数値がわかる方おられましたら教えてください。

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

580:デフォルトの名無しさん
22/09/11 22:42:49.09 6zTUjY+M0.net
>>578
ソートしたいレンジの最初と最後のインデックス
クイックソートは最初にピボットを決めてそれより小さいものをピボットより前に、大きいものをピボットの後ろに移動して、ピボットの前の区間と後ろの区間をそれぞれクイックソートする方法を繰り返す
ピボットの決め方は色々あるけど、その人は配列の真ん中のオブジェクトを選んでるだけ。ランダムに選ぶと平均的には最も良い結果が得られるけど、もうひと手間かかる

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

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

583:デフォルトの名無しさん
22/09/12 11:53:11.04 fWVKyvtQa.net
sub から呼ぶとか

584:578
22/09/13 09:42:49.11 g8hgly2P0.net
>>579
やってみたら確かに!驚きです。
>>580
クイックソートって発明品みたいなものですよね。
人間が手動で並べ替えても慣れる程にクイックソートみたいなやり方が高速になっていくんですかね。
皆さんありがとうございました。

585:デフォルトの名無しさん
22/09/13 10:05:15.02 kJFB2T9s0.net
いえいえ

586:デフォルトの名無しさん
22/09/13 23:06:23.52 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:デフォルトの名無しさん
22/09/13 23:09:43.50 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:デフォルトの名無しさん
22/09/13 23:11:31.11 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:デフォルトの名無しさん
22/09/13 23:36:32.69 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:デフォルトの名無しさん
22/09/13 23:37:53.43 m4C/g6mCM.net
コードをアップする際に一部書き換えで変数が微妙に違うのは許してくださいw

591:デフォルトの名無しさん
22/09/14 01:24:17.40 jzWlgqKP0.net
>>589
大量のコード張るなら、どっかコード張るサイトあるからそこ使ってくれ
>コメントアウトの範囲内をfunction(wbSerch)として、値を返して変数を使用したいです
やれば良いとしか
自分でやって動かなかったっていうコード出せよ
エラーが出たならエラー内容も
Functionが呼び出されないんじゃなくて、呼び出したけど値を返してないか
返された値をちゃんと受け取ってないんじゃないかと予想したがな

592:デフォルトの名無しさん
22/09/14 05:04:23.30 Pxkwm+eH0.net
>>589
色々気になるところばかりですが、Functionだけについていうと
Public Function プロシージャ名() As String
'処理
プロシージャ名 = ファンクション内で作成した文字列
End Function
という感じで作って、呼び出す側は下記で
wbRepName = ファンクション名

593:デフォルトの名無しさん
22/09/14 08:09:29.31 wHV8fEyKd.net
>>592
ありがとうございます
やっぱりそれでいいんですよね
とりあえず動かないのは困るので、関数を呼び出すコードは削除してしまったのでまたやり直してみます
適当にネットで検索して継ぎはぎしているのですが、これはやめた方がいいみたいなところがあれば教えていただけると

594:デフォルトの名無しさん
22/09/14 08:09:41.99 wHV8fEyKd.net
>>592
ありがとうございます
やっぱりそれでいいんですよね
とりあえず動かないのは困るので、関数を呼び出すコードは削除してしまったのでまたやり直してみます
適当にネットで検索して継ぎはぎしているのですが、これはやめた方がいいみたいなところがあれば教えていただけると

595:デフォルトの名無しさん
22/09/14 10:47:45.73 DQiHAQaU0.net
>>594
ネットで継ぎはぎはやめたほうがいい

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

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

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

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

600:デフォルトの名無しさん
22/09/14 15:23:36.39 mWSu9Hj1M.net
特にここの奴らの言うことなど……

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

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

603:デフォルトの名無しさん
22/09/14 20:25:13.51 tyPb8uvVM.net
継ぎ接ぎでもなんでも動きゃいいよVBAなんて

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

605:デフォルトの名無しさん
22/09/14 23:32:37.08 XFOFR3Sy0.net
ひどいコード書いて、エクセルに殴られたら嫌だなあ

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

607:デフォルトの名無しさん
22/09/15 07:02:34.29 K2oLP0MfM.net
と、馬鹿が申しております。

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

609:デフォルトの名無しさん
22/09/15 08:13:47.40 V+/rW9Cpd.net
そもそもエクセル側でVBA使ってごちゃごちゃやる職場がセンス無い
エンジニアが管理画面を作ってVBAでやってた処理をそっちでやって、事務系の人は管理画面からcsvを落としてそれをまんま使うぐらいが良い

610:デフォルトの名無しさん
22/09/15 08:15:36.60 HISUe1p20.net
ほいきたばーかばーか

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

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

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

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

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

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

617:デフォルトの名無しさん
22/09/15 19:11:05.38 5XNYG1220.net
そんなのExcelできる事務員じゃないわ!

618:デフォルトの名無しさん
22/09/15 19:27:19.21 2CSrOwDy0.net
最低限のことしかできないって人結構いるけどな

619:デフォルトの名無しさん
22/09/15 19:44:47.37 bsuDXGPV0.net
ボタン押してるだけの事務いるいる。

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

621:デフォルトの名無しさん
22/09/15 20:17:03.66 QyIKtajFH.net
>>608
いいえ、コードは汚いしドキュメントを残さないので、便利であってもレガシーとなってしまうからですよ

622:デフォルトの名無しさん
22/09/15 22:23:17.31 5XNYG1220.net
事務員=Excelを極めている

623:デフォルトの名無しさん
22/09/15 22:31:56.27 QsPmWhIy0.net
VBA のファイル・テキスト処理などは、Ruby に比べて、圧倒的に可読性が悪い。
作った瞬間から、修正できない産業廃棄物となるw
だから、常に廃棄して新規開発しているw

624:デフォルトの名無しさん
22/09/16 00:12:03.43 vQLtnuER0.net
VBAで複雑なものを作ろうという思考がおかしい
適当に組んで動きゃいい程度のスクリプトだろ

625:デフォルトの名無しさん (ワッチョイ 5d79-VPVD)
[ここ壊れてます] .net
VBAに飽きたらVBSがいいよ
VBAの枷から開放される

626:デフォルトの名無しさん (スッププ Sd0a-vfPx)
[ここ壊れてます] .net
>>621
いいえ、レガシーとなることの問題は認めるけど、それは禁止になる理由とはならないわ

627:デフォルトの名無しさん
22/09/16 02:37:02.68 l4bz3k9Q0.net
他人がどんなに良いコードを書いてあろうが、容赦無く切り捨ててイチから書き直すのがプログラマーだと聞いたからよ

628:デフォルトの名無しさん
22/09/16 04:32:30.78 UN95gjXqd.net
>>627
他人から聞いたことを鵜呑みにする馬鹿

629:デフォルトの名無しさん
22/09/16 09:26:48.43 jiIjsvyj0.net
そもそもなんだけど
どんなPG言語使ったって綺麗に書く人は綺麗に書くし
ぐちゃぐちゃにする人はぐちゃぐちゃにする

630:デフォルトの名無しさん
22/09/16 11:41:36.71 eDTruZ7Ya.net
だからほっとけばいい
自分の担当部分だけ直す

631:デフォルトの名無しさん
22/09/16 13:52:21.47 Zuqq5jJMd.net
自分の書くコードと自分に影響する人が書くだけ気にすればいいのに
無関係の人が書くコードなんてきたなかろうがどうでもいいのにな

632:デフォルトの名無しさん
22/09/16 20:53:11.37 IL7FnXUn0.net
>>627
プログラマーはプログラムを書く人だし、設計すればエンジニアだし、営業や事務処理をすることもあるよ
会社員ならわかると思うが他人のコードは他人の給料、自分のコードは自分の給料になるってわかるよね?

633:デフォルトの名無しさん
22/09/17 00:16:02.34 lfSciaka0.net
ならねぇよ。
コード書くだけで給料貰えるとかいつの時代だよ?

634:デフォルトの名無しさん (スップ Sd3f-w3i5)
[ここ壊れてます] .net
下請けの下請けのそのまた下請けの派遣だろ

635:デフォルトの名無しさん
22/09/17 14:40:46.13 P15Vbqti0.net
書けないでコピペするやつのひがみw

636:デフォルトの名無しさん
22/09/17 16:20:56.81 93E6/MjHa.net
コピペばかりのヤツってある意味恥ずかしく無いのかや?
知識ありませーん!
あるのはコピペのスキルだけです!
と、言っているようなモノだぜ。

637:デフォルトの名無しさん
22/09/17 18:06:13.42 T834+5z1M.net
コピペを極めるとオブジェクト指向になるのかもしれんな

638:デフォルトの名無しさん
22/09/17 20:26:19.25 eUUvOszSM.net
オブジェクト指向って奥深いな

639:デフォルトの名無しさん
22/09/17 20:30:59.86 P15Vbqti0.net
コードのコピーじゃなくアプリをコピーして販売したら違法だからな

640:デフォルトの名無しさん
22/09/17 20:39:13.29 lfSciaka0.net
でも現実はコピペ野良マクロ職人が各職場に溢れているんでしょ?

641:デフォルトの名無しさん
22/09/17 21:30:27.81 c/Rfax+qa.net
何もかもは覚えられんからそりゃみんな多少はコピペするでしょな。
問題はちゃんと意味わかって使いこなして、修正や変更の対処ができるかどうか。

642:デフォルトの名無しさん
22/09/17 21:33:47.44 VC1vunq70.net
アマチュアはコピペと卑下するけど
プロは既存コードの利用と言って車輪の再発見で悦んでいる給料泥棒はクビにする
って誰かが言ってた


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

86日前に更新/265 KB
担当:undef