[表示 : 全て 最新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

477 名前:デフォルトの名無しさん mailto:sage [2022/09/02(金) 11:01:00.75 ID:BYdQXtrB0.net]
いや、そもそも何でそんな事やりたいのか??
という質問自体がさ

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

479 名前:デフォルトの名無しさん mailto:sage [2022/09/02(金) 14:51:15.82 ID:BYdQXtrB0.net]
ど正論出ました
終了

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

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

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

482 名前:デフォルトの名無しさん [2022/09/03(土) 14:11:09.43 ID:fgoOqg3v0.net]
しつこい馬鹿

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

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

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



486 名前:デフォルトの名無しさん [2022/09/04(日) 22:38:27.70 ID:I+EDFKibr.net]
replace関数でワイルドカードを使用してるのですが、
うまく置換していくれないのでなぜですか?

やりたいこと A1セルのKKK1111というデータを2222に変換したい
replace("A1","*" & "K"& "*","2222" )

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

488 名前:デフォルトの名無しさん mailto:sage [2022/09/04(日) 23:39:15.09 ID:+4pXrWCU0.net]
優しいなみんな
総合スレだったらフルボッコ

489 名前:デフォルトの名無しさん [2022/09/05(月) 18:43:28.63 ID:8FlTtg5u0.net]
初心者あるあるなんだろうか

490 名前:デフォルトの名無しさん [2022/09/05(月) 22:48:54.81 ID:C53zNTJD0.net]
ありがとうございました。
ユーザー定義型と連想配列を知って少し前進しました。

検索掛けてもなかなかでないので教えてください。
dim i
for i....
使い終わったらiを未定義に戻したいんですが、
宣言の反対?になるような未定義に戻す関数?ステートメント?はありませんか?

491 名前:デフォルトの名無しさん mailto:sage [2022/09/05(月) 23:44:13.97 ID:ZiXiUX+x0.net]
無いし気にする必要もない

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

493 名前:デフォルトの名無しさん [2022/09/06(火) 03:38:48.46 ID:DWdJNYk/d.net]
馬鹿に理由を問う虚しさ

494 名前:デフォルトの名無しさん mailto:sage [2022/09/06(火) 05:21:21.45 ID:Fb+lfM05d.net]
変数は使い捨てだよVBAの場合

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



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

497 名前:デフォルトの名無しさん mailto:sage [2022/09/06(火) 10:03:36.29 ID:Z9J6cI+IM.net]
はい、わかりました

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

499 名前:デフォルトの名無しさん [2022/09/06(火) 11:47:55.76 ID:DWdJNYk/d.net]
馬鹿ではなく糖質かな

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

何か思いあたる部分があればご教示ください

501 名前:デフォルトの名無しさん mailto:sage [2022/09/06(火) 12:06:14.05 ID:QxRWO4Sk0.net]
漏れの推測だけど、

>タスクバーのエクセルが点滅し
これは、バックグランドで起動しているのでは?

それで、エクセル内のマクロなどが起動しないとか?

502 名前:デフォルトの名無しさん mailto:sage [2022/09/06(火) 12:18:01.17 ID:iobTnTaB0.net]
>>498
定義済みが未定義になるわけじゃないけど
ブロックスコープとかいうやつだな

残念ながら旧VBやVBAにはない。VB.NETにはあるけど

VBAの一番狭いスコープはプロシジャ
なので、プロシジャの先頭に宣言まとめとけって作法がある

503 名前:デフォルトの名無しさん [2022/09/06(火) 13:03:51.66 ID:BhZhCXYFd.net]
>501
vba自体は動作しております。
手動でvbaを起動するとエクセルが開き添付ファイルなどを作成し、Outlookで送信するのですが
vbsでの起動だと添付ファイルまでは作成するのですが、Outlookが立ち上がらず、タスクバーのエクセルが点滅して動作が止まります。

ネットで調べても事例が出てこず、会社のパソコンなのでシステム管理者に制限をかけられているのか…
何か調べる方法がありましたら教えてください

504 名前:デフォルトの名無しさん mailto:sage [2022/09/06(火) 13:07:25.60 ID:Z9J6cI+IM.net]
printfデバッグでどこまで動いているか確かめましょう!

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



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

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

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

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

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

510 名前:デフォルトの名無しさん mailto:sage [2022/09/06(火) 16:28:13.42 ID:QxRWO4Sk0.net]
>>503
>タスクバーのエクセルが点滅して動作が止まります
バックグランドで起動しているだけじゃ、エクセルのマクロが実行されないのかも

printf デバッグで、どこまで動いているか確かめるべき!
エクセルのマクロの、Outlook の起動コードの前後で、何かを出力すれば?

Outlook の起動前に、端末・ファイルへ出力する
Outlook の起動コード
Outlook の起動後に、端末・ファイルへ出力する

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

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

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

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

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

515 名前:デフォルトの名無しさん [2022/09/06(火) 21:28:56.11 ID:3UeoLADl0.net]
>>512
>他の言語だとあるのであるかなと思ったのです。

他の言語って具体的に何?
答えられない?逃げる?それともまた言い訳?



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

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

518 名前:デフォルトの名無しさん mailto:sage [2022/09/06(火) 23:05:26.43 ID:NuTb9qxy0.net]
あまり複雑化しても辛くなるしな
シンプルにシンプルによ

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

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






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

前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