Excel VBA 質問スレ Part80
レス数が1000を超えています。これ以上書き込みはできません。
ExcelのVBAに関する質問スレ
コード書き込みや作成依頼もOK
次スレは>>980が立てること
無理なら細かく安価指定
関連スレ
Excel VBA 質問スレ Part79(ワッチョイあり)
https://mevius.5ch.net/test/read.cgi/tech/1674875532/
※前スレ
Excel VBA 質問スレ Part79
https://mevius.5ch.net/test/read.cgi/tech/1674874007/ このスレを立てた爺の正体
↓
掲示板でのケンカが孤独感を薄めてくれる
零細企業勤めで結婚もしておらず、交流する友人もいないが、「ネットが趣味なのが救いだ」と話す。
「掲示板サイトに書き込んだり、VBAは全くわかりませんが、日本語ワープロに詳しいと自慢したり、チャットGPTを使ったり……いい話し相手になってくれるんですよ。たまに掲示板でケンカもしちゃうんですが、それが孤独感を薄めてくれているのかもしれませんね」
ネット書き込みの裏には孤独を抱えた高齢者の姿がある。
―[中高年[貧困と孤独]の実態]― 若い人だとワープロってなんですかって言われかねないな 俺はRupoの3行革命のやつ買って周りにずいぶん自慢してたな t検定で「範囲」にCOUNTIFやAVERAGEIFみたいな感じで対象とするセルをIF指定することはできませんか?
検定したい群を最初から整列して2群に分けておく必要があるでしょうか? 自分もワープロから入った。93年頃かな。
まだパソコンはあまり普及していない頃の話ね。 30年つうと、ちょうど高校にパソコン室が作られた頃だったな
PC-98にDOS5.0で一太郎+Lotus1-2-3とかだったが
別の高校ではWindowsでWord+Excel(バージョンは忘れた)
当時はマウスが何に使うものなのか分からなくて、分かった後も「めっちゃ使いづらそう」としか思ってなかったわ
就職した会社がちょうどワープロからパソコンへ転換し始めててめっちゃこき使われたけど 富士通OASYS親指シフトで卒論を・・・
って、もうこのネタ、いいよな?
そろそろ質問スレに戻りたい いいんじゃないの?
ワッチョイスレがあるからここでは多少の雑談があっても。
俺はワープロは使わなかったなー
PC-8001系から入った口だわ。
もっとジジイになるとTK80から入った人もいそう。 >>13
お前みたいなのがスレ荒らしたからこんなごみ溜めみたいなスレになったんだろ
一生ここにこもってろ ジシババ様はタイプライターでしょ。
ばーちゃんからお下がりのタイプライター貰った。
だけど使い方分かんないからオブジェクトと化してる。 俺はPC6001だったな。おもちゃ屋でバイオリズムのデモをしてた。
うんちくだが今のキーボード配列はタイプライターと同じで、タイプライターは英語に最適化されているからローマ字打ちは実はとても非効率。
つまり日本語が打ちやすい配列がある。
そのひとつが親指シフト >>11
HIMEM.SYSとか使ってフリーエリアの確保に一喜一憂してたな。
今は湯水のごとくだ。
IOデータの拡張ボード(Cバス)が2Mで2万くらいした。 つか当時の情報の少なさよ。
だから大半のユーザーは我流… >>18
パソコン授業のたびPCのCONFIG.SYSとAUTOEXEC.BAT書き換えて、授業終わったら元に戻してたっけなぁ
んでCバスはFM音源ぶっ刺したおかげで小遣いが尽きて、CバスメモリもHDDも買えなくなったが
>>19
当時はトライ&エラーが当たり前だったな
おかげで授業の時書き換えるのがバレてめちゃくちゃ怒られたが 当時からNIFTYや東京BBSで情報交換してただろ 1970年代後半の小学生の時、
それまで手書きガリ版印刷だった職員室に
入ってきた日本語タイプライター?は、キーボード入力でなくて、
活字を拾っていくようなものだったような?
教員らは嬉々としてだけど。
その後すぐ日本語ワープロ専用機に駆逐されたと記憶。 >>19
汚いコードでも許されていた時代。
マクロ記録できただけでマクロのスキルがあります扱い。 >>22
和文タイプライターってそういうものよ
文字盤上のカーソル(小窓)を打ちたい文字に合わせてスイッチとかレバーとかを押すとタイプされる仕組み >>26
違う
時代をクリエイトしてる嘘つきを指して時代錯誤と言ってる
VBA実装当時はどマイナーソフトのどマイナーマクロ
スキルがあるどころか1-2-3使わ(え)ない変人扱い 今でも
Excel マクロ4.0って
盲腸みたいにくっついてるよね 当時は情報がないし、あっても素人に毛がはえた程度の人間が教えていたみたいね。 悪口書きたく無いけどw 近所のパソコン教室オーナー Excel本も何冊も出してる
切羽詰まって仕事依頼 こうしてはどうでしょう、ここはこんな感じでどうでしょう、みたいな提案も一切無くw
「欲しい結果を画像としてください それなら作れます」ww 已む無く一例を出して依頼
驚いたことに、元データをあれこれ変えると欲しい結果に成らないwww 一例だけに対応した特殊な作りw 二度と顔も見たく無い 金返せw パソコン教室の大半はそれほど専門知識がないと聞いた。
元来は初心者対象の教室だからだとか。 Functionプロシージャは値を返せるものだと思いますが、SubプロシージャでもCALLで呼び出してByRefを指定すれば値返せるんですよね?
両者の違いは一体なんなんでしょう?? 戻り値を持つかどうかだよ。
引数を呼び出す関数内部で変更するのは
どちらでも出来る。 他の言語では区別されずに関数だけの物が多い
いにしえのBASICはサブルーチンしかなくて変数はすべてグローバル
括弧の仕様もだが歴史の重みを噛みしめろ よく分からないです…もう少し詳しく説明頂けると助かります。
申し訳ないです。 関数は計算式に組み込める
戻り値は一つだけ
マクロ実行は関数使えない 昔々、VBAの先祖であるBASICには、サブルーチン(Subプロシージャ)しかなく、関数という概念がありませんでした
更に、変数はすべてプロシージャの外で宣言し利用されていました
しかし、これでは大変見づらいし使いづらいしで大変だったため、あるとき「関数」と「スコープ」という概念を取り入れました
これにより、実行すると内部で計算を行いただ一つの値を返すFunctionプロシージャが誕生しました
一方で、Subプロシージャにもスコープの概念が取り入れられ、引き続き使われました
要は、使い方次第でどちらをどのように使ってもOK
ただ>>36の人も書いたとおり、Functionプロシージャはマクロとして直接実行することはできない
他方、Subプロシージャはワークシート上から直接実行することはできない 納得しました…解説くださった皆さん、ありがとうございました!! >>37
え?元祖であるBASICって何のこと?
元祖であるMicrosoft BASICにすらDEF FNがあるけど >>40
Cのdefineマクロみたいな奴よね
出番作るの難しそうな奴
ExcelのFunctionはシート関数として使えるぞ プログラムエリアが数十キロくらいしかなかったから関数もスコープも必要なかった
むしろ綺麗なコードを書くのは贅沢で、PRINTを?とかの省略形にしたり
改行せずバイト数を稼ぐようなコードが賞賛されていた。 >>44
だから、
>>37の内容は嘘ばっかということ >>37はChatGPTをありがたがる馬鹿の書き込みだろ そういや前に、昔のプログラミング言語の話題になったとき、BASICのDEF FNのことを、「あんなの関数じゃねェ、あれはマクロだ」っつってた人いたな
俺は昔のことなんか知らんしどうでもよかったが、1行しか書けなかったらしいし、そういう認識の人もいるんじゃねーの >>45
仕方なかっただけで賞賛はしていなかったぞ エクセルを起動したら、FC版ゴルフでOBした時の音が鳴って、そのまま終了するというのはどうでしょう? >>57
申し訳ありませんが、私はそのような機能については知りません。Excelの設定を確認して、音が鳴るようになっているかどうかを確認することをお勧めします。また、OBという言葉はゴルフ用語であり、Excelとは関係ありません。OBとは、Out of Boundsの略で、コースの外にボールが出た場合に使われます。 引数=いんすうと間違えるのは分かる。
関数=せきかずはさすがに知障だろ VBAでグラフを自由自在に扱いたいんだけど
そのためにはまずはExcelのグラフの機能を知ろうと思い
本屋でExcelグラフに特化した入門本を見つけたがこれがひどい。
説明のしかたが画面のキャプチャを出して手順をステップバイステップで羅列してだけでまるでおじいちゃんに説明してるみたい。
そうではなくエンジニア(プログラマ)の視点でExcelのグラフをテクニカルに説明してるような本はありませんか?
われわれはエンジニアであるから頭はよい。しかしExcelグラフは使ったことない人は多いと思う。 >>66
うーん
何故VBAにこだわる必要があるの?
グラフの種類の変更、PowerBIとかで出来る事でしょ
VBAで書きました、
なんて自己満に過ぎないし企業からしたら邪魔な存在
求人キーワード検索でVBAが極端に少ない理由はソコ エンジニアはExcel使わない
MATLABとかpythonでmatplotlibだろ常考
っていうかワチョイExcelで追い出されたからってこっち来んな わたしはVBA板でVBAのことを聞いておる。
whereとwhatは適切だ。
なぜこっちの会社でExcelを使ってグラフを表示させないといけない仕事がたくさんあるというwhyを教えないといけない? >>66
経験上の話だけど
(少なくとも)どんなことができるかを予め学習しようとしたときに限っては、望むような資料は手には入らないことの方が多い
他方、やりたいことを絞って探すと、様々なアプローチがあってどれが適切なのか(少なくともそのときは)判断できないことが多い
どちらかというと、「なにができるか」ではなく「どうすればより使い倒せるか」を追求していたときの方が、振り返ってみると色々と身になっていた気がする
じゃあどうすればいい、って訊かれるとうまく言葉にできないが
まぁ実地でトライアンドエラーを積み重ねるのが一番いい、みたいな >>66
書き忘れた
VBAに関しては、オブジェクトブラウザ(たぶんF2キー)開いてオブジェクトやメソッドをクリックしてヘルプ開けば(F1キー)細かいヘルプ出してくれるし
MicrosoftのウェブサイトにもVBAリファレンスのページあるので、そんなに苦労しないと思う 先ず、どんな図(グラフ)をイメージするか 揃ったデータをどう表現すればより理解しやすくなるか
総務省統計局のアドバイスを見てみよう ※ いくつもコピペしたけど、←これがやっぱいちばん参考に成りそう
https://www.stat.go.jp/naruhodo/9_graph/kihon.html 最下段の表を参考に◎と成ってるグラフが適切のようだと知れる
驚いたことに、某大学が提供しているグラフの種類・作成の注意点 は、こんなの大学でやることか?と呆れさせられる
https://www3.cuc.ac.jp/~nagaoka/2015/kiso/kadai/4a/graph.html
https://www3.cuc.ac.jp/~nagaoka/2011/shori/03/temp-rain/answer.html
http://photo-m.tp.chiba-u.jp/~yjo/tips/graph_howto.html
某企業に至っては、文字だらけ サンプル事例の類すら見当たらない
https://www.dsk-cloud.com/blog/types-of-graphs-and-how-to-use
最下段で Google の クラウド型BIプラットフォーム「Looker」というのを紹介している点だけはすばらしい
https://support.google.com/looker-studio/answer/6283323?hl=ja
https://youtu.be/ZBoFvaWr-Dk 二分弱の紹介動画(英語)
プレゼン屋さん向けの (くそダサイ こんなこといちいちご説明しなきゃダメなほど知性が低下してンのか?)
https://ppt.design4u.jp/basics-of-charts-and-graphs/ グラフとかやらんなー
円グラフ見るなら表見たほうが早いし凝ったグラフはむしろ邪魔でしかない。
やるとしてもプリセットの機能だけで必要十分だと思う。 つっても中身よりも見た目のほうが大事な時もあるからねえ どんな値を何グラフにするか
集合とか確率、偏差、ばらつき、みたいな数学的考えができていれば簡単じゃね >>74
こんなの大学で教える内容じゃないだろ
小学生でも知ってる 基本的にはデータそのものを扱わない側向けのプレゼンだから、より誇張してそのデータの存在意義を知らしめるためのもの
「おらおら、データをまとめるとこう成ってるぞ 今後こうなる予想ができるぞ」
「今やってることはこれだけ効果 ある/無い ぞ」 と、自分の作業が有意義だと吹聴して回るための道具
使いこなせば無双できるし、粗末なものをお披露目しちゃったら「やっぱアイツにやらせとくのはやめとけ」諸刃の剣 データから少子化、高齢化だとわかる
少子化対策として子供に税金使おうって話な だからぁ
グラフ化にしても、集計にしても、分析にしても
一瞬で出来るのに
何で今時Excel VBAなの?
リクナビNEXT求人キーワード検索で
Excel VBA ヒットするの
全国でたったの200件だぞ
これが何意味してるか分かる?
時代の最先端走って仕事出来る連中は
もっと前見てるって事 >>81
逆にVBAしかできない人っているんだろうか?
vbaできるくらいならhtmlくらい出来そう >>81
一瞬でできるのは一部の人だけだな
最先端にいる人は最先端を走ればいいし、200件しかない求人の仕事をやる人もいる
旧世代から最先端まで幅広く存在する中で何を選ぶのかで道が分かれる
なんちゃらAIが最先端で仕事無くなるとか思ってるのかな vbaでグラフ?
ボタン1つでグラフ化してくれるんだから無駄じゃないそれ考える時間 >>83
うーん
上手く伝わらないなぁ
AIとか関係ない話
誰でも出来るグラフ化や集計、分析までVBAに拘る価値あるのか?って事
時代遅れの自己満足でしょ
>>84
その通りです。 ワッチョイがないスレはレベルが低くて微笑ましいな
VBAでやろうとする事が古いと言えば良いと思ってるおじさんがドヤ顔
まぁここでは好きにしていいよ
ワッチョイありに来たら狩るけど >>86
低レベルへようこそ
レベル高い奴はレベルが低いと思ってるスレなんて見ない
ましてや書き込みなんてしない とりあえず根本否定するやつはほっとけ。ネットでも現実社会でも。 回答にならない回答にしかならなかった俺が言うのもなんだけど
質問者が>>70のとおり言ってるのに、同じこと(VBAへのこだわり云々)を繰り返し繰り返し書く必要ないと思うんだけどな
あと、COBOLみたいなのがあるように、古かろうがそれを求められるところは世の中に少なからずあって、だからこそこうして質問スレが建ってるもんだと思うんだが >>90
VBAに博士号はいないんじゃよ
別の博士号持ってるが白衣も着てないし
〇〇博士と呼ばれても違和感しか感じないな~ いまだに香具師つかってるやつに言われたくはないわな 使ってないのにスレにいる奴は基本的に荒らしたいだけ 今の時代にExcel VBA?
この業界の流れに乗れなかった人かな
残念 ここはExcel VBAのスレだぞ
残念だろうが使わざるを得ない奴らが集まるところ
文句があるなら自分がよそへ行けばいい話 >>94
Excelを使う限りはVBAとは無縁ではいられんだろうが
働いたこともない引き篭もりなのか? ここはまぁ引きこもりがネットで拾った受け売りを垂れるのも自由でいいと思う
ワッチョイありにきたら駆除される猿のように狩るけど ワ有りスレが荒れてても自治せずワ無しスレの荒らしw
早く狩ってくれよw
それともVBA要らないおじさんの方だったか? Excel VBA博士って
視野が狭いというか時代遅れというか
見てて痛々しい
時代は凄い勢いで進化してますよ まあ進歩についていけないからこんなとこに来てんだろ >>106
おまえは進歩についていけないからこんなところに来ているのか? >>107
仕事で時代遅れ()のVBA使ってるから興味はあるからな なら同じような境遇の人がいることくらい想像できそうなもんだけどできないのね 進歩についていけなくなったからこんなところまできて時代遅れだなんだと繰り返し繰り返し書き込んで溜飲を下げる人と同じ境遇の人までは流石にいないと思うが 無能がマウント取りに来て
逆に叩きのめされる典型的な例 TALKにも誰も来ない・・・
みんなどこへ行ってしまったのか・・・ 今までの環境から見られないとか書き込めないなのかも
LinuxMint Jdimで閲覧も書き込みもできる
まぁ、VBAスレだし、みんなWindowsだよねw >>116
そんなもんだよ
実際、VBAの試験よりEXCELの試験の方が難しいって
よく聞くしな なるほど。
最初からVBAで入ったから関数とかろくに知らないよ。 VBA使えるならワークシート関数も自分で作ればいい さすがにSumとIfとCountは知ってるぞ。
まあそれもVBAでやるから必要ないけど。 テキストボックスに3×2の表を連動させたいんですが一番簡単なコードを教えて下さい。 https://i.imgur.com/wcmErcq.png
絞り込んだ状態で、マウスで行を範囲選択し、
その範囲選択した行番号をfor eachやdo loopなんかで取得したいです。
offsetか何かかなーと思い、いろいろやったんですが、うまくいかず。 多分要件がおかしい案件
なんでその操作をフォローする必要があるのか ガイアの夜明けではここいいシーンだったんだけどなあ 9月も猛暑らしい。10月に入ったらいきなり寒くなるパターンと予想 そのエアコンが逝った いや、エアコン本体は逝ってはいないが、ルーバーがバグった
だらしなく下を向いたまま風向調整に応じずにガガッ、ガガガッ と最後の力を振り絞って
上向きに成ろうと頑張りはするが、力尽きてガクンとうなだれる 長い間お疲れ様
(いやいやいやいや、まだ夏は終わりそうに無いんだが
真下だけは涼しい サーキュレーターでかき回してとりあえずは凌げている 5ちゃんねる専用ブラウザ Siki などが 機能が多すぎて使いにくかったので、
EXCEL VBA(スクレイピング)で自作してみた。
ワンクリックで このスレを発見できる。
あとは リンクをクリックするだけで開く。
https://i.imgur.com/nDnxnPs.png
便利すぎる、自画自賛。 しかし 誰にも提供しない。
では質問します。『俺のこと、すごいと思いますか?』 >>141
エエんやないの
オレはRPAの勉強がてらyahoo掲示板をXLやACCESSに取り込んでた >>139
壊れたエアコン無理に使い続けると
中で氷が出来てゴロゴロ回ってエアコン停まらなくても
氷が融けてぼたぼた落ちて来たことがある もう誰も居ないの
ユーザーフォーム上のフレーム内にフレームを動的に追加しようとしたらオートメーションエラー発生するんだけど誰か対処法知ってますか? 「フレーム」はラベルやコンボボックスなどのコントロールをフレーム内に配置するコンテナ
という概念から、フレーム内にフレームは配置できないのでは?
フレーム1内のコントロールの戻り値に依って、ユーザーフォームの他の位置にフレーム2を
動的に配置したいとかなら可能だろうけど
若しくは、動的に生成されたコントロールを、不要になった都度開放していないとかか? >>146
そのエラーは デバッグするのが 厄介だ。
去年、職業訓練校でVBAを習ったとき、
SQLが ちょっと違うだけで そのエラー発生した。 >>147
静的にはできるのにね?
フォーム内に用意した1個のフレーム内に動的に配置しようとするだけでエラー吐くので、後段で以下でご指摘いただいた点はとりあえず無関係のようです
今回は外側をマルチページで代用したけど、モヤっとする… ン? 静的にはできるんだ
じゃあ、フレーム内にコントロールを配置する時に、ちょっと順番を間違えるとフレームとの
リンクが切れて、見た目はフレーム内だけど別物として配置されてしまうように成るとかと
似た状況なんじゃ?
動的に配置するモジュール内で、その過程をなぞらないと入れ子フレームとして設置できない
とかが思い付いたが、果たして
或いは、静的に配置しておいてvisibleをon/offで切り替えるとか
何にしろ利用者の現場でトラブらないような、安定した方法が望まれる(シンプルイズベスチャ) たまに訓練校でVBAコースとか見掛けるけど、どの辺りまで教わるのですか? 経験したエロい人教えて >>153
【架空の店や 個人病院など】の『商品CODE一覧表』とか 『顧客の住所録』とかを、ACCESSで 複数の『データベースの箱』を用意する。
EXCELで入力フォーム作って、SQLでACCESSデータベースの追加・変更。
授業では、スクレイピングや IE制御は習ってない。← これは独学(ネットで)
職業訓練校に通えば 就職できる訳ではない。
俺は『失業給付金の延長』が最大の目的だった。 エロチックな人体験談ありがとうございました。
なるほど給付金延長目当てはあるあるな話ですね。
自分は♀との出逢い目当てで通いますよ。 With Sheet1
Dim ary
ary = .range(セル範囲)
End With
これ多用してきたんだけど、セル範囲がセル一個だけだとaryに配列じゃなくて普通のVariant型が入ることに今気づいた
この後の処理は配列であることを前提にやってるから、そこでエラーが起きる
結構いろんな所で使ってたからこれはやべー・・・・ 最終行取得してセル範囲を定義したりすると、
1セルになる可能性があるからダメなんだよな
この方法使う時はセル範囲は固定した上で、
代入された配列の要素が異常値なら排除する仕組みの方がいいのか 選択された範囲がセルひとつだけだった場合は
エラーメッセージ出して範囲を拡げるよう促す 処理を停める そうする方が手間は少ない ary = .range(セル範囲)
If (VarType(ary) And vbArray) = 0 then ReDim ary(1 To 1, 1 To 1): ary(1, 1) = .range(セル範囲)
こんな感じで必ず配列になるように対処したことはある。
逆に値を戻すときは、一つのセルに配列を入れようとしてもOK。 >>159
たとえていうなら、この表に追加的に買ってきてほしいものを書いてくれたら買ってきますよ、というようなものなので、買ってきてほしいものがバナナだけの時もあるわけで、バナナだけじゃ困るというエラーメッセージを出すのはちょっと・・・
>>160
それ考えたんですけど、ちょい面倒くさいなぁと思ってやめました
でもそのコードは簡潔でいいですね。拝借させてもらいますね
ありがとうございました 同じ問題に直面したけどググってみつけた自作関数GetArrFromRangeで対応してるわ
https://yaromai.jp/cellvalue-array/
流れとしては>>160に近いかな? あるセルをマウスで選択すると、
選択したそのセルと隣のセルも消す、
というマクロを作って現在動かしていますが、
どうしても類似のシートをもう一つ作って連動
させたいのですが、例えば、
シートAのセルのE1をマウスで選択した時、
シートBのセルのE1も同時に選択状態にする、
というマクロは可能でしょうか?
宜しくお願い致します。 追記
別に「同時」でなくともいいです。
要は、シートBのセルのE1をマクロで
操作できればなんだっていいです。 同時は無理かも知れんが
同時じゃなくて良ければ可能
次の方どうぞ >>163
「選択したそのセルと隣のセルも消す、というマクロ」
をここに書いてもらえればアドバイスできる。 >>163です。
自己解決しました。
結局ここで質問している方法は分かりませんでしたが、
別の方法でなんとかできるようになったのでそちらを
採用します。皆さん有難うございました。 >>163です。
自己解決しました。
結局ここで質問している方法は分かりませんでしたが、
別の方法でなんとかできるようになったのでそちらを
採用します。皆さん有難うございました。 MT4のDDEサーバー機能使ってエクセルにリアルタイムレート表示させてるんだが
ここで質問よい? VBAとVBSで同じ内容をPOSTして、
返ってきたreponsebodyも同じなのに、
操作出来るHtmlElementが違うってどういう事やねん!! forで配列testにシート名を格納し、Sheets(test).Selectでシートを複数選択したいですがエラー9になります
Sheets(test(0)).Selectとするとエラーは出ないです
Debug.Print test(0)
Debug.Print test(1)
と指定するとシート名が確認できますが
Debug.Print Join(test)
と指定すると空の値でした。test0とtest1の値が連携されて表示される想定でしたがなぜ空なんでしょうか 配列testの初期化かforでシート名を取得している部分がおかしいんじゃない?そこのコードを書いてもらわないと。 >>175
そもそも
>test0とtest1の値が連携されて表示される想定
が間違ってるんだが
それができたとしても、Sheets().Selectで複数シートのセレクトはできないと思うが >>175
試したけど、
Sheets()に文字列配列渡せば複数セレクトできるな
渡すのは連結された文字列とかじゃなくて、文字列の配列津
testを文字列配列で宣言すればいけるんっぽ >>176-178
ご指摘いただいて確認し直したところRedimの指定が間違ってました
ありがとうございました バージョンはExceloffice2019です。
「Sheet1」で購入した野菜の一覧を作成します。
A1:A100に野菜の種類.例:トマト、キュウリ、キャベツ…
B1:B100に野菜の産地.例:千葉、埼玉‥‥
C1:C100に野菜の購入年月日.例:2023/10/31
D1:D100に野菜の価格.例:1,000
「Sheet2」に
A1:A5に野菜の種類
B1:B5に野菜の産地
を記載したときに
C1:C5に、「Sheet1」のAとBの条件に合う一番下の行の購入年月日を返す。
かつ
D1:D5に、「Sheet1」のAとBの条件に合う一番下の行の価格を返す。
これをVBAで表現できますでしょうか。
何卒、よろしくお願いいたします。 仕様に応じて価格は変わります
価格に応じて仕様も変わります
色々突っ込みどころが多すぎる バージョンすらまともに書けない馬鹿に何を期待するのか 初歩的な質問ですみません
例えばですがセルA2の型が標準だったとして、標準だった場合は色を付けたいです
どうやってセルが標準かどうか判断すれば良いか教えて頂けませんでしょうか 俺も気になる。
NumberFormatLocalじゃない奇想天外な解決策だったらウケる。 If (a = 1) Then
'{
b = 1 ';
'}
Else
'{
b = 2 ';
'}
End If
どう? なにごとも
低い位置においておけば落ちることはない Uiautomationでアプリに表示されてる文字を3万行くらい読み取ったら落ちた
エクセルじゃなくてアプリの方が
どういう理屈? イベントビューアーで何が起きたかぐらいは確かめなさい
再現性あるならタスクマネージャーのパフォーマンスでメモリなのかCPUなのか
とかも アプリの表示文字3万行だけで、アバウト過ぎる 昔はintの最大が32767 だからそれ越える数を扱うと落ちるソフトがよくあったな 変数の値がマイナスとか変な数字になるだけじゃないの?
その程度のことで落ちるの? マイナスの場所がアクセスできなかったり
永遠にloopの終了条件に達しないとか
結果が大きくなりすぎてメモリ不足とかなる Excel VBAって長時間経過すると一定間隔で一時的にCPU割り当てが止まったりする仕様ですか?
プログレスバーもどきやマクロ経過時間を10秒毎に表示させているんですが、毎回2万件を超えたあたりから一時的に処理が停止しているみたいなんですが。 セルコピーの繰返しで条件付書式設定が多大になってるとか 変数の価をセルへ記入する処理は繰り返し行っていますが条件付書式は設定していないしセルからセルへのコピー処理はしていません。
処理開始から20000件あたりまではスルスルと進んで行って20000件を超えたあたりから休み休みになるのが謎です。
ソース的には同じことを繰り返しているだけなんですけどね。
セルへ記入されていく行数は増えていくのでそのあたりが原因なんでしょうか。 pcの性能じゃね
毎回起きるなら条件を変えてテストし発生条件をはっきりさせる 実行前に以下弄って画面更新を抑制してる?
Application.ScreenUpdating
Application.Calculation いえ、単なる文字列を上から下に向かってひたすら記入していくだけです。
記入する文字列を決めるためにVlookup関数の結果をフィルターして抽出された1行を文字列としてセルに記入してますが、Vlookup関数の数は固定で増えるわけでは無いのでCPU負荷も一定なんじゃないかと思います。 >>215
Vlookup関数の結果を利用するのでそれはできないです。 あ、すみません
Application.ScreenUpdating
は抑止したり解除したりを繰り返してました。 原因追及したいのなら
出力データを増やさずに同じ行に書き出すとか Windowsの仕様として、重たい処理をさせてるときは中の人が勝手に一休みするようにできている
アプデがいくつもある時など、進捗の%が進んだり止まったりなのを目にしたこともあるだろう
エロ動画を何本もDLしてる時に同サイズなのにすぐ落ちるのといつまでも落ちないのがあるように
基本的にExcelは同じディレクトリにテンポラリーファイルを自動的に作る(Excelに限らないが
そのファイルと相互に連携して「戻る」だの「処理を取り消す」だの「保存しない」だのを可能にしている
システムファイルなので敢えて表示する指定をしないと通常は目に見えない
処理は目の前のファイルだけで無くそのシステムファイルにも反映されている
いっぺんに大量の仕事をさせると「さすがに休ませろよ」と両方のファイルがブー垂れる←チンタラし出す
for−nextとかLoopの中にDoEventを盛り込むと、多少は改善されるかも知れないしされないかも知れない
https://www.tipsfound.com/vba/05doevents-vba
https://qiita.com/nekohei/items/3fb066e267866bcae96c
正直なハナシ、おれには何が何だかさっぱり理解できないが呪文みたいなものなんだろう(違う >>221
バカの長文ってホント的を得てるな
応答なしってのは文字通りマウス操作やキー操作に応答がない状態で、
なぜそれが起きるかは操作に応答する余裕もないくらい全集中して処理してるから
リンク先に書いてあるのは定期的にマウスだのキーボードだの気にしろよって指示
ID:vycJbAdXが書いてることとは根本的に違う事象 内容を理解しないで ○○すると速くなるとか、エラーを出なくするとかを検索で見つけたのを
鵜呑みにして呪文のように至る所に無意味なコードを貼るタイプかな 「詳細設定」−「ハードウェア グラフィック アクセラレータを無効にする」にチェックしOK
使っていないアドインがあったらチェックを外す
可能性が高いのが、GPUがレッドゾーン タスクマネージャーのパフォーマンスでCPU・メモリ・ディスク
辺りはまったりと余裕ぶっこいてるのに、GPUがパンパン状態 これは増設できないマシンなら
どうしようもない 一行目の処理の前後でこれを比較してみて変わったら原因はそこ
フリーズする訳でも無くちゃんと完走するなら「こういうもんだ」で済ますのも大人の対応
高性能ギンギン!のマシンとCeleronマシンでも現象一緒とかなら尚更コチラ側では対処のしようも無い >Windowsの仕様として、重たい処理をさせてるときは中の人が勝手に一休みするようにできている
そもそもこれが嘘
そんな仕様ねーよ >>200
そもそもintって何?
データ型は正確に書かないと >>227
アイドリング中はデータの先読みをしているから、彼は勘違いして反対のことを言ってしまっているんだろうな。 重たい処理で休むってCPU温度が上がったせいで速度落とすあれのことかと for each で処理するときにI列は処理を飛ばしたかったので
for each rng in range
if rng.column = 9 then
goto skip
処理内容
という風にしたところすべての処理がスキップされてしまったので
以下のようにしたらうまくいきました。解決したんでよかったんですが
どういった理由で結果が違うのでしょうか?
if rng.column <> 9 then
処理内容 skip,endif,next の位置関係を省略すんな まーたどっかから質問パクって来た?
https://oshiete.goo.ne.jp/qa/12821811.html
若干改変してるか RangeとCellsについて、小一時間問い詰められてみるのもいいかも
https://sugoikaizen.com/excelvba/2_80/
ここでこうだよって書かれても身に付かないだろうし(おれもだし 質問パクったわけではないですが確かに似てますね
省略しないと以下になります
処理の内容は同じです
■うまくいく方
For Each rng In Range(Cells(3, 7), Cells(m, n))
If rng.Column <> 9 Then
If rng.Value = "-" Then
dataEx.Cells(j, i) = ThisWorkbook.Sheets(dataEx.Cells(1, i).Value).Cells(rng.Row, 3).Value
dataEx.Cells(j, i + 1) = ThisWorkbook.Sheets(dataEx.Cells(1, i).Value).Cells(2, rng.Column).Value
j = j + 1
End If
End If
-----------------------------------------------------------------
■すべてスキップされてしまう方
For Each rng In Range(Cells(3, 7), Cells(m, n))
If rng.Column = 9 Then
GoTo skipCol
If rng.Value = "-" Then
dataEx.Cells(j, i) = ThisWorkbook.Sheets(dataEx.Cells(1, i).Value).Cells(rng.Row, 3).Value
dataEx.Cells(j, i + 1) = ThisWorkbook.Sheets(dataEx.Cells(1, i).Value).Cells(2, rng.Column).Value
j = j + 1
End If
skipCol:
End If >>236
馬鹿はGotoを使う法則
こんなこと瞬時にわからん頭ならやめとけ よく知らないけど、この= は代入演算子か
j = j + 1
この= は比較演算子か
If rng.Column = 9 Then
こんな= を、2つの意味で使う言語ってあるの?
Ruby では、= は代入演算子で、== は比較演算子だけど 客観的にこの人はVBAができる人だと思ってもらうのに、VBAエキスパートのスタンダードを取るのは効果あり?
受験料高い上に対して難しくもない資格なんだけど、知らん人から見れば勘違いしてくれるかねぇ あんなハリボテみたいな資格で勘違いしてくれるような会社に入りたいのか? >>245
ある大手の非IT子会社の求人にVBAやデータベース、PowerAutomateができれば尚可
みたいなことが書いてあるんよ
まぁVBA自体は広く知られてるから他企業でも資格持ってれば多少有利になるかどうなのかと思ってね。
>>246
名刺に書くなら恥ずかしいわな >>236
自分でステップ実行してどのように処理されているか確認してみては。本当に分からないならif文の仕組みを勉強するところから始める必要があるかと。 >>236って
ここに張り付けたからインデント消えているのか?
実際のコードもインデントなしで書いてそうだな フィルターの設定について質問させてください。各年の1月のデータを取得したいのですがうまくいきません。
手動だと、[日付フィルタ]から[期間内の全日付で1月を選んでできます。同じようにしたいのですがどうすればよいでしょうか?
ws.Rows("1:1").AutoFilter
' C列日付のフィルター条件を設定
Dim oldestYear As Integer
oldestYear = 2021 ' 最も古い年を指定
' 1月のデータを含むフィルター条件を設定
Dim filterCriteria As String
filterCriteria = ">=01/01/" & oldestYear & " AND <02/01/" & (oldestYear + 1)
' C列で条件に基づいてフィルタリング
ws.Columns("C:C").AutoFilter Field:=3, Criteria1:=filterCriteria 手動でうまくいくなら
マクロの記録→手動操作→記録終了
とすればマクロできてないか >>251
そのフィルター条件の書き方はどこかで紹介されてたもの?
Criteria1に複数条件を入れず、分ける必要があるみたい
ws.Columns("C:C").AutoFilter Field:=3, Criteria1:=">=01/01/" & oldestYear, Operator:=xlAnd, Criteria2:="<02/01/" & (oldestYear + 1) ユーザーフォームをワークブックから指定するにはどのようにすればいいですか?
セルだとこんな書き方をしてます
Workbooks(”book1”).Worksheets("Sheet1").Cells(1,1)
そこで
Workbooks(”book1”).UserForm1.Label1
のように書いたらエラーです
検索しても、ブックを指定せず単にUserForm1とだけ書いている事例しか見当たりませんでした 「やまぶきいろ」って
ヤマブ黄色かと思ってたら
山吹色だったんですね。
まあそれだと「ヤマブ」というのが意味不明なんだけど。 まあ将来はマクロVBAは廃止されると予想されるからデカイ顔できるのも今のうちだぞ VBベースじゃないほうがこれからは良いだろうしなあ >>258
開いてるファイルからVBAを使って他のファイルのユーザーフォームを操作したい
みたいな要望に読めるけど、こういうことかな?
https://www.chishikinosoukonoseiri.com/entry/2019/06/02/excelvba-designer-another-book-userform-operation
この人も苦労したみたいだけど、結果が正しいのか正統派の記述方式なのかもよくわからん
Designer なんて今まで食べたこと無いし
しかもバージョンが若干古い? IE絡みのオブジェクトっぽいし、IE亡き今、通用するのか
どうかも不明 ま、サイトは今年の春に更新されてるから使えなくなったなら泣き言も
書かれていそうだがそれは無いからだいじょぶか?
行き詰ってるなら試してみる価値はありそう >>264 レスありがとうございます
質問の意図はもっと単純で、複数ブックが開いているとき、Book1のマクロでcells(1.1).value=1みたいなコードを実行したとして、
実はBook2がアクティブだとBook1じゃなくてBook2の方が書き換わっちゃう
けど、操作したいセルをワークブック、ワークシートの順で書いとけば特定できる
ならば、複数ブックが開いていて、各ブックに同名のUserForm1があるとどうなるの?
どのブックかの明示は必要?書き方は? ということでした
(これを書いた方が良かったですね)
んで、カキコした後、試しにBook1、Book2にそれぞれ同名のUserForm1を作ってブックが2つ開かれてる状態にしても特に何も起きない
Book2をセル選択状態にして、Book1でUserForm1.ShowとやるとBook1側のユーザーフォームが開く
じゃあ、どのブックかの明示は不要?ほかの問題は起きないの?というのが現在の疑問です
マイクロソフトのリファレンスくらいは見ているのですけど理解できていません・・ 以前、オブジェクト階層樹形図のようなものがあった気がするけど、それも見つけられず・・
https://learn.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/userform-object >>266
一般のネットブラウザだと字がちいさいと思います、すみません
スレチですが時々発生するのも疑問です >>266
ブックじゃなくてプロジェクトのメンバー
例えばプロジェクト名がVBAProject1で、UserForm1っていうフォームモジュールがあるとして
dim a as VBAProject1.UserForm1
set a = new VBAProject1.UserForm1
で指定できる
プロジェクト名はメニューのツール→(プロジェクト名)のプロパティとかから設定可能 こういうのはオブジェクトブラウザから見ると簡単に確認できるよ
今回なら適当なモジュール内で
dim a as UserForm1
と書いてUserForm1を右クリック→オブジェクトブラウザを選択すると
「Private Class UserForm1
VBAProject1 のメンバー」
と下部の説明欄に表示される >>266
じゃあ、みんな大好きオフィスTANAKAさんのこれで
http://officetanaka.net/excel/vba/tips/tips103.htm
変数に入れとけば他のファイルには影響出ないんじゃないかな、と
>Book2をセル選択状態にして、Book1でUserForm1.ShowとやるとBook1側のユーザー
フォームが開く
これは、Book1で・・の時点で選択状態が移行しちゃってるんじゃないのか?
あと、このページの中ほどで説明してるけど
https://www.kurumico.com/excel-vba-userform-show-2/4065/
>・実は、事前にメモリにロードされていないまま Showメソッドで UserForm を
>表示する場合、自動的にメモリにロードされているんです。
ここがミソか
いくつもファイルを開いて作業することが多いケースなら、Show では無く Load を使えと
最後にちゃんとUnLoadするのも忘れずに 皆さんありがとうございます
>>271
>選択状態が移行しちゃってるんじゃないの
それはないと判断してます、というのは
Book1に下記コードをかいておき、Book2のセルB2とかを選択した状態で、VBエディタの三角ボタンで実行すると、同名のユーザーフォームのうちBook1側が表示されるが、セル(1,1)はBook2側が操作されるからです
Sub 試験用()
UserForm1.Show
Cells(1,1).Value=1
End Sub
>>269
VBAProjectの下にあることは分かりました
オブジェクトブラウザも見ましたし、VBAProject1. と打ち込んで、入力サジェストにUserFormが出てくることも確認しました
で、2つのブックのプロジェクトも同名のVBAProject1にして、先ほどのコードのshowの行を下記に変えて実行しても結果は同じでした
VBAProject1.UserForm1.Show
つまり、指定が無いとシートやセルはその時アクティブなものを操作するけど、ユーザーフォームは(サブプロシージャとかも?)プロジェクト内から選択されるので、別ブックが開いていて、偶然同名のものがあっても問題ない、ということですかね >>271
xボタンで閉じても「メモリ上から削除」されるんですよね、もう一度落ち着いて読み返して見ますけど >>272
>>プロジェクト内から選択されるので、別ブックが開いていて、偶然同名のものがあっても問題ない
その通りです。
参照設定やApplication.Runなどで明示的に他プロジェクトのメンバーを呼び出さない限り、
そのプロジェクト内では自らのプロジェクトのメンバーしか呼ばれません。
ちなみに UserForm1 が変数名ではなくクラス名の場合、自動的にインスタンス化されたフォームを参照します。
プロジェクトのメンバーはあくまでクラス(≒型レベル)であり、インスタンス(≒値レベル)ではないという事は注意してください。
また、「指定が無いとシートやセルはその時アクティブなものを操作する」は厳密には、省略されたと判断されたら親オブジェクトを補完しようとすると考えた方がいいです。
例えばそのスコープ内でCellsという名前を定義した場合、 Cells(1,1).Value と書いても省略されたと判断されずにその定義したオブジェクトが参照されます。
定義されていない場合は省略されたと判断され Application.ActiveSheet. が頭に追加されます。 >>274
詳しくありがとうございます
疑問だった同名ユーザーフォームの件はまずは解決です
後半の「スコープ内でCellsという名前を定義・・」の部分を練習問題と思って、
Book2選択状態でもBook1でCells(1,1).Value=1を実行してBook1側セルが操作されるコードを考えてみます
ご説明頂きながらこちらの理解が足らない状態です,もし、そーじゃねーよ、ということなら恐縮ですがご指摘頂ければ幸いです 会社の先輩が
「サーバーがコケた」と言って魔した。
これはどういう意味なんですか?擬人法だとは思うけど。 Excelの先輩が
「サーバーがコケた」と言ってました。
これはどういう意味なんですか?擬人法だとは思うけど。 >>281
そうみたいです。
「コケちゃいました。だから金メダル取れませんでした。」という意味だって。 現在計算が自動なのか手動なのかを判断する変数は見つけたのですが、これをリアルタイムで画面に出力する方法ってありますでしょうか?
イメージとしては条件付き書式で現在の計算が自動なら青、手動なら赤を表示するみたいなのを実装したいです その変数の値をセルに表示するサブルーチンを作って1秒毎に実行する >>283
Excelでリアルタイムに更新する意味がない
自分で変更するなら変更時にセルにも値出すように組めばいい VBAは使わないが、
Webやローカルのデータを
外部参照するクエリーを
秒単位で更新させる機能はある。
あまり頻度を上げるとサーバに負荷をかけてしまうので、
確認しながら慎重に使っているが。 >>283
よく使うシートでってなら、適当なオプションボタンなんかにその関数紐付けておけばいいんでは?
更にはそれで切替もできるような
全Workbookでってなら、フォームで作って呼出ボタンをクイックアクセスツールバーにでも置くくらい? A1:C1*D2:D5の計算結果を二次元配列にするみたいなときってループなしでできたりするんでしょうか?
ワークシート関数ならスピルで一発だと思うんですが、VBAだとどうなんでしょう? ワークシート関数でできるならそれでやれば良いんじゃね >>244
ちゃんと体系的に学んで知っていることは重要
ちょっとしたことを知らないせいで、変なやり方をする技術者は多い >>283
Excelを使わずに自分でデスクトップアプリを作った方がいいよ >>291
これな。ネットの野良マクロをコピー職人が多い事多い事 学校のテストじゃないんだから、評価されるのは仕事で結果を出したやつだけ
自作かコピペか、自分で考えたか人に聞きまくったかAIにやらせたか、手段が問われることなんてないから Dim Match As Object
Dim Matches As Collection
Dim Re As Object
Set Re = CreateObject("VBScript.RegExp")
Re.Pattern = "\d+"
Re.Global = True
Set Matches = Re.Execute("123qwe456rty789oikj")
For Each Match In Matches
Debug.Print Match.Value
Next Match
上記を実行するとMathesの型が違うとエラーが出ます。
Matchesが返すのはコレクションだと聞いていたのですが、Objectなのですか?
as Collectionで宣言するのは何故間違いなのでしょうか? CollectionてVBA内部世界のオブジェクト管理に限るんじゃないの?
CreateObjectで作ったVBA外部のオブジェクトを扱えるとは思えないけど >>295
仕事だからこそ、どう作られているかが重要。 >>283
やりたい目的言えば別の代替案出てきそう臭がする。 Private Sub ListBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyControl Then
MsgBox "ok"
End If
End Sub
UserForm1にリストボックスを設置してKeyDownイベントを置いただけです
Ctrl
Alt
Shift
を押してもキーダウン
イベント自体発生しないのですが何かヒントありますか?
もう少し詳細に書きます
If の行にブレイクポイントを作っても上の3つのキーを押したときは、無反応です
他のキーを押した場合はVBEが反応してブレイクポイントで処理が止まったことを示す強調色が表示されます。この結果から、上の3つのキーを押した場合のみKeyDownイベント自体が発生していないと判断しました
実は、自宅のデスクトップパソコン(Excel2019)でこのコードを実行すると、上の3つのキーでもちゃんと反応してくれます
会社のノートパソコン(おそらくExcel2016)だと上の3つのキーを押したときだけ無反応です。他のキー、例えば数字やアルファベットキーを押した場合はイベント発生します。
コードはコピペしてるので完全に同じです
よろしくお願いします >>302
ノートPCのメーカーと型番を書いた方がいいかも。
もしかしたら他のキーと同時に押した時にしかキーコードを送らないとかやってるかもしれない >>302
フォームのKeyPreviewプロパティがTrueじゃないんだろ >>302
そういうOSに関することをやると挙動が変わるからやめた方がいい。
Excel VBAは古いものと新しいものが同居しているから、あまり書かれないことを書くとはまる。 >>306
>>305が無毛なだけでハゲのせいで頭がおかしなことを言っている >>302
その3つは複数のキーを同時に押すことで特殊な動作をさせるために使っている ありがとうございます
>>303
>>308
最終目標がctrl+down/upによりリストボックス内の項目を入れ替える事です
ctrl+down/upが機能しないため、原因を探っている所なんです
もちろん自宅のパソコンでは思った通りの動きが実現できています
型番は会社に行かないとわからないので今はわかりません
>>304
KeyPreviewプロパティが見当たらないので調べたところ、
VBではKeyPreviewプロパティがあるが、VBAでは存在しないとのことです
正しいでしょうか 他のキーと同時に押さないとキーコードを送らない可能性は自分も考えていたのですが、もう少し掘り下げて調べてみます 馬鹿ってWindows標準でないキーアサインするよな >>302ですが、いくつか実験したところ解決しました
環境によって受け取れるキーコードが違うようです
イベントハンドラの第一引数KeyCodeにコントロールキーが入るケースと入らないケースがあるようで、会社の環境だと入らないようです
KeyCodeにコントロールキーが入る環境だと、コントロールキーを単独で打っても認識できるようなのですが、入らない環境だと他のキーとセットで打った場合のみ第二引数のShiftにコントロールキーがはいるようです ノートPCに外付けのキーボード接続すれば、自宅PCと同じ動作するかもね
確かにノートPCのキー・アサインはメーカーに依っても製造時期に依っても様々 ハードウェアの割り込み、OSのメッセージをExcel経由で得るというのは素直じゃない。 5×5のセル内をソートして、左上が最大値でそこから昇順に右下が最小値にして数値を入れ替えるマクロって作れますか? >>321
そんな課題を出す学校があるのか
なぜできないと思うのかな? Excelのバージョンわからないけど、そういうのは今はマクロでなくてシート関数で出来るレベル。 最大値から昇順は全データが同一の時のみ可能なので、初期状態で必ず昇順になっている
マクロも関数もまったく必要ない >>321
昇順だと最大値より大きな値はないんじゃね A1:E5まですでに埋まっていると
それを一旦作業列にでもコピーして昇順に並べ替えると
並び終わった順に5つずつA1:E1、B1:E2、・・という行ごとに埋めてくカタチなのか
A1、B1、A2、C1、B2、A3、・・と、ハスに埋めてくカタチなのか
A1:A5、B1:B5、C1:C5、・・と、列ごとに埋めてくカタチなのか
いや、いずれにしろA1:E5を入れ替えるなら関数は無理だろ マクロやVBAでしかできない >>275
たいぶ亀だけど、最初に言った通り参照設定やApplication.Runを使用します。
まずBook2で選択状態のセルを取得するメソッド(関数)やプロパティを標準モジュールで作成して、
Book1のモジュール内で宣言したCellsに上記の方法で呼び出したその戻り値を割り当てます。
ただし、そもそも他のブックを見ているときに選択状態というのを認識してくれるのか検証してないです。 >>327
ありがとございます!
一度べつのセルに並べてから昇順にして元のセルに入れなおせばいいんですね! シートコピーとシート名変更について質問なのですが
アクティブシートの7個左にあるシートをコピーして
アクティブシートの右側にシート名を明日の日付(例:24年1月8日)にして貼り付け
という動きをさせたいんですがどうすればいいでしょうか? >>331
おお…なるほど
君がやりたい操作はこういう事でしょ?と
操作してみて表示させればいいのか
ありがとうございますその発想はありませんでした ファイル移動をするのにNameで変数を使ってやりたいけどうまくできません >>333 の続き
Sub rename()
Name "C:\A\1.txt" As "C:\B\1.txt"
End Sub
だと移動できるけど
Sub rename()
Name Cells(1, 1) As Cells(2, 1)
End Sub
だとうまくいきません(A1 ←"C:\A\1.txt"、A2 ←"C:\B\1.txt")
書き方の問題ですか?それともNameで変数は使えませんか? >>334
うちの環境では動いたのでなんか見落としているのではないかな セル内の文字の頭にシングルクォーテーションがついてるとか。 うまくいかないと主張するだけで絶対にエラーを書かないタイプ 罫線についての質問です。
連続した任意の選択されたセル範囲
(例えばA1,A2,A3,B3,C3,D3のようなL字型)
に外枠の罫線を描きたいのですが、
どのようにすればよいでしょうか > 彼らはよく、社会に貢献したいと口にする。
> なんでも社会悪のネトウヨを自殺に追い込むことが、社会に貢献することなんだそうで。
> イジメや嫌がらせで社会に貢献できる教師や警官になるために、あえて帰化したんであって、祖国同胞を裏切ったわけではなく、心は●●人なんだそうだ。
>
> 昔は帰化すると裏切り者と呼ばれたりしたが、祖国に国籍を残したまま帰化する方法が確立された現在では、社会に貢献するためにむしろ帰化することが推奨されている。
> 拳銃所持で前科のある生粋の反日家ですら、今では普通に帰化している。
>
> ●●学会などはネトウヨ認定した日本人を盗撮して、痴漢の写真だと言ってばらまいている。
> それらの写真は、集団ストーカーに使用される。
> 彼らは集団ストーカーを、[地域で子供を守る安心安全パトロール]と称している。 必要なセルをCtrlキーを押しながら選択し、L字型を形成
右クリック − セルの書式設定 − 罫線タブ − スタイルで線種を選んでから[外枠]ボタンを押す
想定していない余計な位置にも罫線が引かれるので、同様に不要なセルを選択し罫線タブから[なし]を使って消す
2024年の方針 : おっちょこちょいに要注意(要らぬ低評価に繋がり兼ねない) >>338です。
>>341さんありがとうございます。
>>342さんご指摘の通りVBAでの実装方法を探しています。
いまのところ
Application.Union("Add_
>>341さんありがとうございます。
>>342さんご指摘の通りVBAでの実装方法を探しています。
いまのところ
Application.Union("Additional_Address", Selection).Select
を繰り返して複数のセルを同時に選択するところまではできています。
一方で、例えばA1,A2,A3,B3,C3,D3の順にAdditional_Addressを指定すると
選択範囲がA1〜A3の縦3連とB3〜D3の横3連に分割されて選択されるため、
xlEdgeLeft等の処理が縦3連と横3連それぞれで実行されてしまう状況です。
こうなるのを
┌┐
││
│├──┐
└┴──┘
こうしたい
┌┐
││
│└──┐
└───┘
セルごとに隣接判定をして罫線を描く/描かないの処理を
するしかないのでしょうか >>344さん
やはり愚直に処理するしかないのですね。
ありがとうございます。 A1:D3選択で範囲の外枠を描画
B1:D2選択で範囲の左端・下端に枠線を引き 範囲の上端・右端の枠線を消す
の二段構えなら可能
描きたい枠線が上記だけじゃ無いだろうしL字だけとも限らないだろうけど創意工夫で >>346さん
ありがとうございます。
L字だけだったらこれもありですね。
今回は範囲が動的なので愚直にやろうと思います… A1:A3外枠描いてからB3:D3の外枠左辺抜きのが楽だった
その他、右辺抜き、上辺・下辺それぞれ抜きのを、全枠と合わせて五つのマクロだけで
L字の左右反転でも上下反転でも、E字F字H字T字それぞれ上下左右反転だろうと対応できたわ
全周
Sub all4()
Selection.BorderAround True
End Sub
上辺抜き
Sub nontop()
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlContinuous
Selection.Borders(xlEdgeLeft).LineStyle = xlContinuous
Selection.Borders(xlEdgeRight).LineStyle = xlContinuous
End Sub
下辺抜き
Sub nonbottom()
Selection.Borders(xlEdgeTop).LineStyle = xlContinuous
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlContinuous
Selection.Borders(xlEdgeRight).LineStyle = xlContinuous
End Sub
あと、左右は上下の真似してそれぞれxlNone するだけの、都合五つのマクロで自由自在
罫線の色とか種類を変えたいなら、それぞれに加工加えて >>348さん
ありがとうございます。
参考にします。 >>348
そんなことするなら素直に
>セルごとに隣接判定をして罫線を描く/描かないの処理
を実装すればいいんじゃねえかと
Sub test()
Dim r As Range
Dim r2 As Range
Set r2 = Selection
For Each r In Selection
If Not isSelect(r, xlEdgeTop) Then r.Borders(xlEdgeTop).LineStyle = xlContinuous
If Not isSelect(r, xlEdgeBottom) Then r.Borders(xlEdgeBottom).LineStyle = xlContinuous
If Not isSelect(r, xlEdgeLeft) Then r.Borders(xlEdgeLeft).LineStyle = xlContinuous
If Not isSelect(r, xlEdgeRight) Then r.Borders(xlEdgeRight).LineStyle = xlContinuous
Next
End Sub
Function isSelect(testRange As Range, index As XlBordersIndex) As Boolean
On Error Resume Next
Dim r As Range
For Each r In Selection
Select Case index
Case xlEdgeTop
If r.Address = testRange.Offset(-1, 0).Address Then isSelect = True
Case xlEdgeBottom
If r.Address = testRange.Offset(1, 0).Address Then isSelect = True
Case xlEdgeLeft
If r.Address = testRange.Offset(0, -1).Address Then isSelect = True
Case xlEdgeRight
If r.Address = testRange.Offset(0, 1).Address Then isSelect = True
End Select
Next
End Function
こんな感じか。行数制限あるからやってるけど、1行If は推奨しないぞ ああ
Dim r2 As Range
Set r2 = Selection
の2行はいらん For i =1 to 500
Sheets("A").Cells(1,1)=i
Sheets(Array("A", "B", "C", "D", "E")).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\out.pdf"
next
というふうに、シートAのA1セルにiを入れたあと、複数シートを一つのpdfにすることを500回繰り返したいのですが、150回くらい行うと「この操作を完了するにはメモリが不足しています。扱うデータ量を減らすか、他のアプリケーションを終了してください。使用できる目盛りを増やすには、以下を検討してください。・64ビット版のMicrosoft Excelを使う。」というエラーが出ます
これを解消することはできないでしょうか?
ネットで検索してもSetしたものをNothingすればいいと書いてあるのですが、そもそもSetしてるものがないので‥ >>354
試してないけどPDFを作成するたびにビューアが起動するから?
OpenAfterPublish:=False 'ビューアー起動の有無設定
を追加してみたらどうかね >>355
レスありがとうございます
すみません、記載省略してしまったのですが、ビューワーの起動はしないようにしています チャットgptに聞いたところ、ActiveSheet.ExportAsFixedFormatはメモリを使用するので、複数回やればエラーになる可能性があるとのことでした。しかし新しいブックを作成し、そこに貼り付けてpdf化、新しいブックを閉じることによって、メモリの使用を抑えることができるとことでした
それで試してみたのですが、結果は変わらず‥
新しいブックを開いてそこで作業して閉じたとしてもメモリの使用量は変わらないのでしょうかね? >>354
Win10,Excel365,64ビット版でそのサンプルコードを動かしたけどエラーが出なかった。
64ビット版にすれば?
あとは実際のワークシートの内容、コードの内容にもよると思うけど、
・シートA〜Eは毎回選択する必要はないかと。Forの前に持っていったらどうなる?
・PDFを出力するコードの下に「DoEvents」を追加してみる どなたかコードを作成いただけませんでしょうか。マクロ初心者で恐縮です。
やりたい作業としては
・範囲指定してある部分の印刷
・.pdfで印刷→デスクトップに保存
・保存ファイル名がセル(I8)の値を入れたい
よろしくお願いします。 >>358
職場のパソコンなので環境を変更するのは難しいです
doeventsを入れたところ、エラーは出ないのですが、やはり150回ほどループしたタイミングで強制再起動となってしまいました
タスクマネージャーで見ていたところ、メモリがどんどん増えていきます
色々調べたのですが環境によるものみたいです
素直に、100回ループさせたら一度EXCELを終了させ、メモリを解放してから再度EXCEL起動して続きからマクロを回すことにします
ありがとうございました 32bit→64bitでどのくらい支障がでるんだろうか
顧客とのやり取りとかで支障がでるのが嫌で移行できないでいる
逆に64bitで32bitでの作成物を扱うのには特に支障はないのかな? Sheet対象を辞めてRange対象にしてみたらどうか
いきなりout.pdfに出力するのを辞めて新規ブックに追加していって、最後にそのブックをpdfでは
メモリ不足から逃げる手立てを一考 >>362
なるほど‥
新規ブックを開いて、pdf化したいシートを順々にコピーしていき、最後に一回だけpdf化するということですね
デメリットとしてはpdfが一つにまとまってしまいますが、運用に支障はないのかもしれません
ありがとうございます
関係者に聞いてみて、それでも問題ないならその方向で行こうと思います 出来上がったpdfを分割までやればいいだけでは?
コマンドラインで動く外部ツール使えばできるような >>364
後出しで申し訳ないのですが、実は出来上がったpdfをメールで送って、相手方で印刷するのが今回の運用だったのです
なので「pdfを全て開いて印刷するのは結構面倒だよなぁ」とは思っていました
しかし一つのpdfにできるのであれば、その問題も解決できるので、一つの方が今回は都合が良かったりします
pdfを分割して置かなければならない別の機会があれば、そのようなことも検討したいと思います
ありがとうございました そういうことを平気で衆人環視の環境で書き込める人は 間違い無く病んでる
適しているかどうかは実際にやってみないといけないでしょ?
最後の大きく成ったブックをPDF化するときにエラー吐いて完走しなかったら
元も子も無いんだし 単なる思い付きで書いただけなので検証を
相手が居るならすり合わせも大事だし ダメ出しされたら再検討だし
ところで、初手のout.pdf(このネーミングも如何なものか、とちょっと思った
Outputの意味なのか、Out of Orderとかの意味なのか、いずれにしろ経営陣から
したら眉を顰めてしまう単語 ま、それは置いといて)には、どう蓄積されるのか
興味があった これ走らせたらC:\out.pdfにページが追加されてく?
C:\out.pdfが(2)(3)(4)・・とか増えてく? 誰か教えて >>367
すみません、out.pdfというのはネットから適当に拾ったコードなので、自分のコードではチキンとした名前をつけています
これを走らせるとout.pdfが上書きされ、一番最後のpdfしか残りません
また、さっそく一番最後だけpdf化を試してみたのですが、ダメでした
50個回分をシートに蓄積してpdf化を繰り返したところ3回目まではうまく行ったのですが、4回目(160ループ目)くらいからpdfが文字化けしてしまいました
どうもpdf化の回数は関係なく、どれくらいのデータ量をpdf化したかによって上限が来て、それ以降は文字化けするような仕組みみたいです
.ExportAsFixedFormatを使用せずにworksheet.printoutメゾットでpdfに印刷するようにしたら、画質は劣るものの、全てpdf化できました
長々とありがとうございました 次は添付ファイルのサイズ制限に引っかかって、結局分割することになると見た
そしてVBAからメールを連続送信する方法を聞きに来て、最後にPDFがいくつあっても簡単に一括印刷できることを知るまでがセット >>367はコマンドラインツール使ったことなさそう >>359
それくらいならChatGptが良いコードを書いてくれるはずだよ 業務でvba上手くいかないので質問させてもらってもよろしいでしょうか? 業務でvba上手くいかないので質問させてもらってもよろしいでしょうか? エクセルシートで他システムから吐き出したデータの列の位置や内容がバラバラのため、整理してからまた、他のシステムにデータを取り込むため、列の削除や移動をマクロと変数を使って、ユーザにパラメータを入れてもらって実行することをしたい。
変数にパラメータの値を入れられるが、その後のデータセットからデータの型がとエラーに、なりうまくいかない。
変数はstringsです。 致命的に説明が下手くそなやついるじゃん
376みたいなやつねw >>376
なにしようとしてるかよくわからないけど、列番号とか指定したいならInteger型にしないといけないんじゃない? これに下記コードを〇〇できるように書き換えてくださいってソースコード貼付ければいい感じに直してくれるよ
https://www.perplexity.ai/ >>379
ありがとうございます。
会社でやっているのですぐにはわかりかねますが、再度説明し直して書き込ませていただきます。 自分の能力以上のことを要求されたら
断るのも仕事ですよ 断る勇気も必要ですよ と書きたかったんだろうけど、断ってばかりじゃ評価下がるしな
どんどん周りの人間の評価が上がり続けちゃったら、遠く無い将来に窓際に追いやられるし
おちんぎんもらってチャレンジできるなら、やらないよりはやった方が自分のためにも成る
もらったデータがどういうファイル形式なのかに依りけり
csv(Comma Separated Valuesの略で、各項目がカンマ(,)で区切られたテキストデータ)なのか
txt(中身が文字だけのデータ)なのか、それ以外の形式なのか
より実務に即した回答が欲しければ、じぶんの環境を提示するのもだいじ 取り敢えず叩き台で
https://www.crie.co.jp/chokotech/detail/264/ こんな作業をしていてどこで躓いてる、とかを できないものはできない
請け負った仕事には責任があるんだから最後までやりとげる
能力がないなら評価も低いのは当たり前 今日から始めた初心者ですが
予測変換の決定でエンター押すと改行されてしまうのですが、
それをさせない方法ありますか?
スペースで決定なのはわかるのですが、慣れません。 >>387
VBAのVBEの話ですね
一般的なエディタと挙動が違うので混乱してますが
慣れれば問題ないですかね 376ですが自力で本日できました。
回答頂いた方ありがとうございました🙇 質問の意味も分からなければ、
回答も役立たず
ただのスレ汚し VBAの質問なのですが
運送系事務でコース表の各店舗に数量を記入する作業があるのですが
この数量記入を例えば入力用というシートを作り一元管理したいのですが
配送を4社に振り分けている関係で月曜日でも月曜@、月曜➁、月曜➂、月曜C、と
シートが4つに分かれておりシステム上これは変えられないと言われました
店舗も例えばセブン、ローソン、ファミマ、サンクス、ミニストップ、と色々あり
100店舗ほどあるのを該当店舗があるシートへ移動し数量を入力するという…
現状でやり始めた事はデータベースを作りキーワードで検索できるようにし
ドロップダウンリストでセブンを選んだらセブン全店が表示されるようにしました
これを利用してオプションボタン等で月曜を指定し店舗名の右セルに数量を入力すると
月曜日シートにある同名店舗の右セルに入力した数量が反映されるという形にしたいのです
ここまで書いて思ったけどこれってVBAで解決させる物でしょうか?
vlookupとかの関数の領域? すいません素人に毛が生えた程度の知識しか無いもので
ご教授いただけると幸いです >>391
ある程度複雑になるとVBAを使わないと何処に何があるかわからなくなって積む
特に他人からするとブラックボックス化する
ドキュメントを残すことができるなら良いけど ワークシートの内容が固まりきってもう変更は無い、新しいものの追加はない、ならVBAでもいいけど自分なら関数で作る。
VBAで作った方が後々のメンテナンスが大変になる。 >>391
現状を正しく理解できないからなんとも言えないけど、関数かvbaかって質問なら、関数でできるなら関数、できないならvbaってしか答えられないと思う
関数って言っても組み合わせ次第では色々出来るから、vbaでしかできないと思っていても、工夫したら関数でできましたって事なんか腐る程あるし 現行のシステムの改良/改善なのか? それをベースによりよいシステム化をしてもいいのか?
月曜だけで4シートとあるが一週間分で28シートが現状で存在するのか?
100店舗ほどもあるシートに移動して入力した数量はどこの何に反映されるのか?
入力元のデータは指示書のようなカタチでまとまったものがあるのか?
或いは各店舗からの要請があって、それを元に質問者側が曜日で振り分けているのか?
4社に振り分けているとは?下請けの意味?配送コースの4車輛の意味?
コンビニを例えに出しているが、例示が悪いのかどうか、コンテナ(カゴ)に種々雑多な商品が詰め込まれた
イメージが付きまとってしまい、面倒臭いのはもっと他にあるだろうにと思ってしまうが、
あくまでも4社への振り分けが面倒なだけで、積み荷はもっと単純なものなのか(一店舗に一品とか)
全体のボリュームも知りたいところ
物流の観点から言うと、ピッキングなのか仕分けなのか 似たようなものだろと言われるかも知れないが
そのどっち側なのかでも設計も変わるし成果物も変わる ↓参考までに
https://www.keyence.co.jp/ss/products/autoid/logistics/role/function-safekeeping.jsp 曖昧な情報で皆様を混乱させてしまい申し訳ありません
現状でやっている作業の前提条件としては
曜日毎のコース表シートが4つあり
1シート内に曜日毎に決められた店舗の組み合わせで4~5コース存在している
店舗に出荷される数量が前日に確定し全店舗数量一覧が"紙ベース"で来る
数量一覧を元に該当店舗に出荷数を順次入力していく
月曜@〜月曜Cと分かれているのは下請け配送会社4社に振り分けた形で
月曜@にはA社担当コース、月曜➁にはB社担当コースという形になっています
各曜日シートに数量を記入したらその4つのシートが完成版で共有されます
完成版シートの仕様は変えられないと言われてしまったので
せめて数量入力を一元管理して効率化したいと思っていますが
>>391で作った入力用シートの入力情報を各曜日に転記さたいと思い
ChatGPTを使ってみましたがどうしても上手く行きませんでした
上記作業を持ち回りでやっている人間が3人いて入力作業効率化の提案をしても
「良く分からないからいい」「新しい作業を覚えたくない」「そうやって楽する事ばかり考えるな」
作ったという意見を頂いているのでシステムがブラックボックス化しても問題ありません
他作業と並行しながら2〜3時間かかる入力作業を続けたいそうです >>397
ごめん、結局最終的に何がやりたいのか全然分からないからアドバイスができない
「他作業と並行しながら2~3時間かかる入力作業を続けたいそうです」って言うならそれでいいんじゃない?
と思うけど、聞きたいのは多分そういうことじゃないよね?
言葉で説明されてもこっちはシートがどうなってるのか分からないからなんとも言えない
「東京から大阪まで行きたいけどどう行けばいいですか?」って聞かれても新幹線もあるしバスもあるし飛行機もあるから、なんとも答えられないよね?
それが「東京から大阪まで◯日◯時までにつくように新幹線で行きたいんですけど、どの新幹線に乗ればいいですか?」って聞かれたら答えられる
まずは関数なりvbaなりで自分でやってみて、分からないところのみを聞かないと誰も答えられないと思うよ あと、無駄な情報が多すぎ
ここは質問をして答えるスレなんだから運用までは面倒見きれない
完成版を変えちゃだめとかブラックボックスが~とかは運用の話であって、その話をされても「はぁ」って感想しかでない 【VBA作成 依頼】
5ちゃんねるHTMLを WEBクエリしたんだが、見づらい。
タグ『< >』で改行させるVBAコードを 誰か作ってください。 無料で。
https://i.imgur.com/XMdGvUd.jpg 曜日毎のコース表シートが4つあり : それ、火曜日水曜日って続かないってことだよね?
28シートあるのか?の問いに応じずに同じことを繰り返すってことは、そういうことだろ?
つまり、曜日毎は関係無くて、4コース用に4シートがあるだけ
面倒だけどそれぞれの店舗シートに入力したら、その4シートに反映される ということだろ?
その100店舗前後のシートを探すのが面倒だから入力用に新たに1シート設けて、そこに入力したら
店舗のシートに反映されて、尚且つコース用シートにもまとめられる と? そおゆうのが欲しいと? >>397
結論から言うとそんなの余裕でできる
その前に、あのさ、君結構アタマいい人でしょ?
話を聞く人の労力もうちょっと考えてわかりやすい説明しようよ
・曜日7日
・コース4〜5
・下請け4社
・コンビニ5社(セブン・ローソン・ファミマ・サンクス・ミニストップ)
この4次元マトリックスがどういう風に表になってるのか
口だけで上手に説明するのって難しいし、読む側の読解力にも依存する
ひな形でもいいから自分で簡単なの作ってスクリーンショットとってあげるぐらいしなって
読んでる方はいろんな形式の表が頭に浮かぶんだけど、一体どれなのか特定できないもんだからまともなアドバイスできないわけよ
いろんな人からいろんなアドバイス聞きたいなら、まずどうやればできるだけ多くの人に正しい情報を伝えられるのか工夫しな
https://i.imgur.com/cf3VhMk.jpeg >>400
タグをvbNewLineに置換するだけ
自 分 で や れ
. みんなの環境は32bit? 64bit?
世間はどっちが多いんだろう
最近は64bitにしても影響少なくなったと聞くけどどうなんだろう? MacのVBEの中だけ、
controlキーを使ったショートカットが無効になってるんですが
仕様ですか?
カーソル移動のショートカットが使えないので困ってるのですが
Macの方はどう対応されてますか? 2021年以降は32bit版のWindowsが原則販売されなくなったんで、Officeも64bit化が急速に進んでると思われる >>408
まだまだ32bit使って所が多いから
以前64bitにしたら客先で原因不明のエラーでまくったことがあってトラウマに
そのころはMSも32bitを推奨してた
ただ自分の周りくらいしかしらないから世間一般ではどんな感じなのかなと思って
ちなみに取引のある某測定器メーカは外に出すファイルは未だに「xls」に変換するなんてルールが残ってる >>409
そうなんだ、混在によるトラブルが少なくなってきてるなら自分も64bitに変えたいな 取引先が無数にあると、とんでもない環境が残ってるところがあるもんなあ
うちの下請けにもWinXPのとこがあるし
業務用アプリと機器がVista以降サポート外で、それを作ってた会社もなくなってリプレースできないそうだ 32bitのほうが省メモリなので場合によっては32の方が速い >>416
もしかして、まだWindows95使ってる?
それならその意見も一理あるね 64はパターセーフしろって言われるんだけど、そのくらいエクセルのほうで面倒見てくれんものか
スタート直後に羽根を外そうとしても警告してくれないBウイング並みに気がきかん PtrはPointerの略
PtrSafeはポインタセーフ パターセーフからそれ読み取れるのすごいわ
脳が勝手にptrをポインタと変換してしまうから、
何言ってんだコイツとしか思えなかった >>417
意味不明だな
Win95はメモリ8MBでも動作するように設計されたOSだが64bitアプリはサポートしていないぞ 32ビット版のExcelをやめられるところはまだ少ない。
ようやく64ビット版に置き換えられる大企業が出てきた程度。 Dim i as long と宣言してたのに
i = なんちゃらかんちやら とかいうコードで
iの価が32000程度を、超えるようなとき、over flowという
エラーになることがあります。
Dim i as long なら、32000を少し超えてもover flow
しないのに不思議です。
なんちゃらのとこには定数3とかの数式なのですが
ヤケクソで定数3を、 3# にしたらoverflowせず正常に動作しました。
なんでoverflowしたのか、憶測でも構わないので
誰か教えて下さい
ま、おそらくintegerと見做されたのでしょうが
どうして、Dim i as long 宣言したのに、なんか腑に落ちません >>426
数式中に使っているそれぞれの定数がIntegerの範囲内で、その合計がIntegerの範囲を超えるとオーバーフローするらしい。
定数もあらかじめ変数に入れたりして対策するみたい。
https://www.bold.ne.jp/engineer-club/vba-overflow そういや32bitから64bitにしたら、
Adoで取得したレコード数をlong型の変数に入れる時に型がおかしいとかいうエラーが出たことあるな。
longlongにしても駄目で、clng()したら動いた。
ワケわからん。 >>429
型ぐらいマニュアルに書いてなかったか? >>430
マニュアルなんてあるの?
VBなら電話帳より分厚いのがあったけど。 ADOを使うにあたって適切な参照設定が選択されているか >>431
今どき紙とか光学メディアなんか使うわけないだろ
マニュアルと言ったらWEB上のオンラインマニュアルのことだよ AutoFilterもしくはAdvancedFilterで行を抽出する
条件が2つまでしか指定できないので、3つ以上のときは条件を配列変数へ代入するというのがまずよく分からんが
条件にワイルドカードを指定するときは配列要素の3つ目以降は無視されるという制限を知らずに、1日ハマった Excel VBAの嫌なところはUTF-8のテキストファイルを扱うときだな
UTF-8とは相性が最悪で入力して出力するときになぜか一部がどこかに消える >>426
iがintegerだとされたんじゃなくて、右辺がintegerだと判定されて、右辺の計算でオーバーフローしてる
>>428
定数の値じゃなくて、定数の型できまるはず
結論はConstにもちゃんと型指定しろ、ってことだ
ちなみに#は倍精度浮動小数点数らしいぞ
>>429
ADOのバージョンは?
一部バージョンでライブラリがばぐってたはず >>425
やっぱりそうだよね?自分の周りでも64bitに置き換えてる企業ってほぼないので
しかしここでは64bitが当たり前みたいだし、この手の質問を過去にもしたけどまともな回答得られたことないしで、自分の知らないところでは64bitが当たり前な業界もそれなりにあるのかな?と思ってしまった
64bit移行は取引先が多ければ多いほどハードルが高そう
世間一般的に32bitを切り捨てられるタイミングはいつ頃になるのかな
「xls」ですら切り捨てられない企業を見てると、そんなのは当分先になりそうなイメージ
もしくはMSが完全互換を達成してくれるか イロイロ、ありがとう
さて、ま、念の為、何というか、
Dim i as long
Dim x as long
Dim y as long
Dim BDATA(約25000000) as BYTE
For x = 0 to 3840 - 1
For y = 0 to 2160 - 1
i = 3840 * 3 * y + 3 * x
BDATA(i) = 255
BDATA(i+1) = 0
BDATA(i+2) = 0
next
next
は、モチロン、駄目なプログラミング
さて、いや。呟きです。
とにかく、ありがとう >>442
いわゆる大手企業だけど64bit導入済みだよ
元々アドイン禁止だから影響もほぼなし
一部VBAを多少手直ししたくらい Doevents 入れないのだ
これでいいのだ
バカボンのパパなのだ Do
Dim i as long
Dim x as long
Dim y as long
Dim BDATA(約25000000) as BYTE
For x = 0 to 3840 - 1
cells(1,"A") = x
DoEvents '''✦✦DoEvents 入れてみた \(^o^)/
For y = 0 to 2160 - 1
i = 3840# * 3# * y + 3# * x
BDATA(i) = 255
next
next
って感じでやると A1のセル、すなわちセルA1が
xの値がドンドン更新表示され、面白いです。
面白いから、これで、良いのだぁぁぁぁぁぁ >>447 自己スレ
でも、DoEvents なくても
xの値は表示されるな🤔 なくてもヨイのだ。
少しギコチナイ動きになる気がするが、
気のせいなら、気にしなくてヨイのだ。🥳 Excel VBAでDVDドライブをオープンさせることはできますか?
部署内のPC端末のDVDドライブを一斉にオープンさせるドッキリをしたいです >>441
型指定しないと、値によって型が決まる
32767以下の整数だと自動的にIntegerになる 業務アプリをVBAで書いてるとこがあってな
明治時代に創業してみんなも知ってる一部上場企業だよ
膨大な古いアプリを今さら改修とかできないから、なかなか64bitに移行できないんだよ んー、?
Dim b(40000) as byte
Dim i as long
─途中 省略─
for i=0 to 40000
b(i) = 128
b(i+1) = 128
b(i+2) = 128
next
は、上手くいく予感を感じます。
もしかして、b(i+1) = 128で
iが32000一寸超えたあたりで
なんかある気もしますが、杞憂のような気もするし
実験するのも面倒だな
だってOSや実行環境やバージョンで、
実験結果に再現性がない気もするし
てか、64bitのEXCELにすれば、
配列の要素数的に動画も丸ごとメモリに読み込ませられる
ぢゃーーーん。メモリが、なくなって
障害が、発生が、するなんてことは、アリエナイ❓
b(i+clng(1)) = 128 にしなくてもOkかな
b(i+1#) = 128 にしようかな それとも
b(i+1&) = 128 にしようかな
&は文字連結だけどこの場合は
ま、1をlongで解釈というか
んー、まぁいいや。 東証一部というか東京一部というか
東証プライムというか東京プライムというか
とにかく、変な名前に変更するのは、反対
64bitにするのは、反対の反対の反対の…なのだ
というか、東証一部なら名門だね。
というか、富士通とかNECとか東芝とかパナソニックとか
社内のは、まだ32ビットのエクセルなのかな❓
これらも、一部を除いて東証一部上場だな ん、いろんな人による
いろんなアドバイス、ありがとう
i = 3840 * 3 * y + 3 * x
でオーバーフローエラーになったら
今度は、
i = 3840 * 3 * y + 3 * x + 32768 - 32768
って、修正してみようかな❓
ゼッタイ、上手くいくハズだよね❓
でも、面倒だし、次回も3は3#にしゃおうかな
by 姑息な対応するデバッグプログラマでした >>0454 1h40min前の自分に返信してあげる。
いま、1h40min前の自分の通り実験したけど、
❌ i = 3840 * 3 * y + 3 * x + 32768 - 32768
オバーフローエラーになっちゃたよん。
ちなみに、#とか定数にヤケクソでつけてもいいけどさ
やっぱり、&の方がヨイ
🙆 i = 3840& * 3& * y + 3& * x って感じでバッチリだ
でも、
❌ i = 1& - 1& + 3840 * 3 * y + 3 * x
の様な気もする。∵イロイロやってみた感触
というか、#とか&を定数の後にくっつけるのってヤヴァイ
様な気もするが、とにかく、珍しく、EXCELがバッチリ動いた\(^o^)/ >>455 5min前の自分に返信してあげる
その数式ないの定数 3とか3840とかの全て、全て、全部に
Clng(3)とかClng(3840)に置き換えなさい。
神からお告げなのだ。ていうか、今実験してみた結果ぢゃ
でも、&とか#の方が短くて見易い >>451
64bit問題生じて何年経ってると思ってるんだよ
流石に後手に回りすぎ VBAには、on error goto という、
エラーが発生しても、エラー発生の行でエラー発生せず
処理を続行させちゃう ウレピィー機能が存在がするようぢゃ、
i = 3*なんちゃらかんちゃら数式 ……🐌
BDATA(i) = 128
というコードで🐌の行でオバーフローエラーに
なってももしかするとErrをトラップ💃
BDATA(i) = 128 を実行させれるコードも可能ぢゃ
モチロン、配列BDATAの内容はメチャクチャだが
気にしなければ、これでヨシ(๑•̀ㅂ•́)و✧
だって、エラー発生しちゃったらやだろ😎
いや、それより、ドンドン64ビットのエクセルに
移行して、ドンドンバグを潰そう。
テーブルが壊れてバグ発生させても、キニシナイ
ていうか、その方が、バグ対策のノウハウが
バッチリになって株価急上昇の予感がしてきました。
東証プライムどんどん📈しろっう。
てか、そうだ今日は、平日だっけ?
株価をチェックしなければいけないので、では
また今度だ >>454
i = 32768 + 3840 * 3 * y + 3 * x - 32768 >>453
NECはLANPLAN、LANWORDだよ。 以下のコードで構文エラーになる、ならない区別がつかなくて質問します。
クラスモジュール
Function 背景色(ByVal range1 As Range, ByVal range2 As Range)
Dim lng_color As Long
lng_color = range2.Interior.Color
range1.Interior.Color = lng_color
End Function
標準モジュール
Sub test()
Dim rng1 As Range
Dim rng2 As Range
Dim mc As New Class1
Set rng1 = Range("C3") 'C3の色を
Set rng2 = Range("A3") 'A3に適用する
Dim str As String
str = mc.背景色(rng1, rng2)
End Sub
これで、str=の部分をなくすと構文エラーになってしまうのはなぜでしょうか? Functionだから? callで呼んだり、Subに変えては。 >>464の言うとおりだと思うけど、Subにしても Call はつけないとダメかな
それか引数を囲うカッコをつけないか ごめん、クラスモジュールだとどうだか分からないや
>>465は撤回します
ごめんなさい >>462
VBAの謎な仕様の一つ
Functionの戻り値を受け取らない時、Functionは関数ではなくステートメントの一種と解釈されてしまう(らしい)
ステートメントの書き方が、VBAでは「命令と引数を空白で区切る」というルールになっているから
ステートメントの具体的な例を挙げると、
Dim a, b
これを
Dim (a, b)
と書くとエラーになるのと一緒
Callで呼んだときに挙動が変わるのは、こんどは関数がCallステートメントのパラメータになるから、構文の解釈が変わる
さらにややこしいことに、引数が1つだとエラーにならない
これは、カッコが演算子とも解釈できてしまうから
a = b
を
a = (b)
と書いても、無意味だけどエラーにならないのと同じで、カッコが必要なケースではそのまま解釈され、必要ないケースでは演算子とみなすことが可能なので結局エラーにならない 皆様ありがとうございます。
VBA学習を始めて間もないので、RangeがなぜStringに入るのだろう?
などと考えて悩んでいました。
とりあえず空白にすればいいのかな?と思い、
mc.背景色 rng1, rng2
としたらエラーなく実行できました。 workbookとworksheetsを両方変数で繋げるにはどうしたらよいのでしょうか?
それぞれsetでwb, wsとした場合、
ws.cells(n,n)やwb.worksheets(n).cells(x,x)なんかは問題なく動くのですがwb.ws.,,,,とするとエラーが起きてしまいます ワークシートの親ワークブックは特定されるので指定は不要
wsだけで使えば良い
相互参照したいなら
set ws = wb.Worksheets(n)
set wb = ws.Parent >>472
Setしたwsにはwb要素も含まれてて変更できない
複数のブックでシート名を共通にしたい時はWorksheetオブジェクトじゃなくて文字列にシート名を入れる
Dim stnam As String
stnam = "Sheet1"
wb.Worksheets(stnam)
みたいに書く ListBoxの要素をクリックしても枠線が表示されるだけで
青色に反転しないことが時々あるのですが、何故でしょうか? エスパーするとデザインモードになっていたりマクロ禁止状態だったりするから どうもListBoxの端っこをクリックするとListBox自体がアクティブになり
前回選択していた要素にフォーカスが当たるようです(フォーカスするだけで選択はしない、青色にも反転しない) VBAベーシック合格したから、スタンダードも挑戦したい。
その前に 「日商プログラミング検定 STANDARD VBA」をAmazonで買って読んでみたけど、
載ってるプログラムが糞すぎて話にならない。
俺が10行で書ける奴を40行ぐらいでやってる。
買って損した。 >>180
ChatGPTで教えてもらった。
これからやってみるw
Sub GetVegetableInfo()
Dim sheet1 As Worksheet
Dim sheet2 As Worksheet
Dim lastRow As Long
Dim i As Integer
' 「Sheet1」と「Sheet2」を取得
Set sheet1 = Worksheets("Sheet1")
Set sheet2 = Worksheets("Sheet2")
' 「Sheet2」のA1:B5を順番に処理
For i = 1 To 5
' 「Sheet1」で条件に合う最後の行を取得
lastRow = sheet1.Cells(sheet1.Rows.Count, "A").End(xlUp).Row
Do While lastRow > 1 And (sheet1.Cells(lastRow, 1).Value <> sheet2.Cells(i, 1).Value _
Or sheet1.Cells(lastRow, 2).Value <> sheet2.Cells(i, 2).Value)
lastRow = lastRow - 1
Loop 続き
' 購入年月日と価格を「Sheet2」に記入
If lastRow > 1 Then
sheet2.Cells(i, 3).Value = sheet1.Cells(lastRow, 3).Value
sheet2.Cells(i, 4).Value = sheet1.Cells(lastRow, 4).Value
Else
sheet2.Cells(i, 3).Value = "条件に合うデータが見つかりません"
sheet2.Cells(i, 4).Value = "条件に合うデータが見つかりません"
End If
Next i
End Sub こういう文を自分で分かるようになるまで1行づつ勉強していけば良いのかな。 Excel2019だから仕方ないけど、2021や365ならワークシート関数で簡単に出来る内容だね。 構造体の項目名を取ってくることって可能
Type type社員
番号 As Long
氏名 As String
所属 As String
住所 As String
電話 As String
End Type
こんな風になってる場合、
「番号」、「氏名」とかの項目名を取ってきたい >>489
VBAでは無理
VB(.net)ならできるんだけど >>490
そもそも、こういう計算関係の問題ならChatGPTの方が人間よりも数万倍能力高いのに、どうして人間がやらなきゃいけないのか? >>491
てことは、構造体の中身を一括でワークシートに書き出すことも不可能?
Cells(1,1)= type社員
みたいなことはできない? 千里は約3900kmだから歩くのはちょっと無理かな >>494
「千里之行 始於足下 (千里の道も一歩から)」は2500年前の中国が発祥の言葉
古代中国の単位で換算すると千里は415kmだから、実は江戸~伊勢神宮の460kmより短いという >>492
失業者が増えるのはまずいから、わざと無駄な仕事を増やしてる
どこの業界でもね Excelもそのうち完全自動化になって手作業が無くなると聞いたしね。 完全自動化にはならない
少なくとも仕様をExcelに伝えないといけない
しかも正確に
これは結構大変だと思う 何かの記事か動画で、ケースの中にノーパソがあって、csvから自動で読み込んで手作業の如く加工したり関数が自動的に入力されているのを見た記憶ある。
将来的に完全自動になるとかなんとか それだけなら今の技術でもできる
問題は入力をどう捌くか
仕様は人間にしかわからないし
ケース分けはすぐに複雑になるので
うまく指示しないと
すぐに保守不能になる どんなにいいものでも頭の悪い人には宝の持ち腐れになるな DIM 社員番号 As Long
DIM 社員氏名(99) As String
DIM 社員所属(99) As String
DIM 社員住所(99) As String
DIM 社員電話(99) As String
では、🙅ですか❓ >>512
ChatGPTにできない事でスキル上げしないと将来無いと思ってる。 ChatGpt、間違っていたり動かないコードを提示される場合あるみたいね。 そら完全じゃないからな、やれば分かるよ
でも理解してればすごい便利 わざわざ聞くのはコマンドを知らないから?
Excelなら記録でわかるから機能を知らないからか?
もしくはキー入力が遅い?
文法すら分からないってのは流石に使えないだろうし 普段色んな言語扱ってると思い出せないときとかあるからね
「この言語ってlengthとcountどっちだったっけ、これanyとか使えたっけ?」
「配列ってnewとかだっけ」
「あれこの言語const,define,var,val,letどれが使えないんだっけ」
「Integerはintでいいんだっけ、あれInt32だっけ」
みたいな細かい所を確認したりせずに
まるっとどーんと一旦サンプルとして形にできるからラク
アルゴリズムとかはそこから見直せば良い
vbeはcopilot対応してないし(よね?) 色んな言語使ってない人は迷わないってことならそれでいいんじゃね まあそらVBA専従なら自分で書きはじめたほうが早いかもしらんね VBAの知識あります
でも職層も低く若手に馬鹿にされまくってますって化石おじさんいるわ
絶望的に発想もセンスも乏しい
そんなことVBAでやるまでもないそんな処理意味ないけどってとこまで
まるでお前らです >>519
xxx まるっと
o まるごと
変な言葉使うな。方言らしいけど。 保存に失敗したのか何なのか分からんが
標準モジュールの中身が突然消えた(フォームは残ってる)
復旧も無理そうなので、今度の連休にまた最初から書き直すことにする windowsにもExcelにも自動バックアップ機能あるぞ
うっかり上書き保存しても前のファイルが取り戻せる
ぐぐって設定しとけ 今度からそうする
自分の知らないうちにどこか分からない場所に勝手に保存される
というのがなんか嫌で、あまり使ったことなかった ポクは、自動バックアップは、よく解らんけど、いつの間にか
自動バッチリアップされてるけど、何か、ヤダから、
標準モジュール内のVBAコードは、丸ごと手作業で
シート内に、コピペしてる。文字化けもほぼ皆無
場合によっては、メモ帳に貼り付け、テキストで保管
ま、念の為だから、保管したテキストも数日でゴミ箱にポイだ
BY 🤡 あっそうだ、コメント行で、'とかあうのが
シート貼り付けで、消えたように見えるので、
ポクは、コメントは、'は一文字ではなく、
'''''ポクはやり方はバッチリだから文句いうな
って感じで、'は沢山つなげております。 >>524
コード触る前に枝番違いで保存するようにしてる
小変更なら下一桁、大きく変更したら上の桁をという感じ 男はゴミ箱の中に溜めたが多い。女はゴミ箱に溜めない、即消去する傾向があるw 恋愛を引き出しにゴミ箱に例えただけだよ。男っていつまで未練タラタラじゃん。 >>524
Office365で同じような現象がありましたが、古い2010でマクロブックを開いたらちゃんと標準・クラスモジュールが見え、エクスポートできました
あと、OSをシフトキーを押下したまま(完全な)シャットダウンするとよいという情報もありました
後者はうろ覚えなので、間違いだったらスマヌ >>535 の投稿者ですが
僕は465ではありません お世話になります。Microsoft365を使用しております。
納品書作成で別シートのマスタからvlookupで商品名に対応する単価を引っ張って来ています。ただ、全社共通単価の商品と、取引先ごとに単価が違う商品があります。
単価が違う商品のために取引先ごとにシートを分けて各社のマスタをつくり、それとは別に共通マスタ(全社共通単価商品リスト)を作って、一つのファイルで各社納品書を作成というのをしたいです。
例えば
シート1:納品書原本
シート2:トヨタマスタ
シート3:ホンダマスタ
シート4:全社共通マスタ
シート1のA1セルにプルダウンで、トヨタ、ホンダ、を選択する。
トヨタを選んだ場合は、トヨタマスタから単価を引っ張ってくる。
もしトヨタマスタに当該商品がない場合は、共通マスタから引っ張ってくる。
ということをやりたいのですが、できますか?
ChatGPTに投げてみましたが、トヨタに当該商品名がない場合→ホンダ→全社共通検索するみたいな感じで、ちょっと芯をつけませんでした。(同じ商品名でも単価が違う)
ちなみにトヨタとかにしてますが扱う商品は食品です。
例えばキャベツは全社共通単価だけど牛肉は会社によってグレードも違うので単価が異なるみたいな感じです。
また野菜は時価なので共通マスタの単価修正も頻繁で、会社ごとにファイルを作るのは大変なので一つのファイルでやりたいと思った次第です。
これよりもっと簡単な方法でも結構ですので、アドバイスなどご教示いただければ幸いです。よろしくお願いします。 トヨタに当該商品名がない場合→→全社共通検索する
でいいと思います >>539
早速ありがとうございます
そのようにしたいのですが、現状のこのコードをどう改良したら良いのか教えていただけませんか?
=IF($C11="","",VLOOKUP($C11,'共通マスタ'!$A$2:$F$49,3,FALSE))
A1にトヨタまたはホンダを選択→まずは当該マスタから検索、ヒットしなければ共通マスタから検索 >>538
365で、もうVSTACK関数も使える状況ならVlookupの対象配列の部分を
VSTACK(if(A1=ホンダ,ホンダマスタの配列, トヨタマスタの配列), 全社共通マスタ)
みたいにすればいけるんじゃない 1アイテム(商品)に複数の単価枠を設けておく
共通単価・トヨタ単価・ニッサン単価・ホンダ単価・時価A・時価B えtc(ニッサン嫌いなのかな)
取引先(売上先)選択とアイテムとをセットでキーにして、どの単価列から引っ張るか の工夫をする
メリットは、商品マスタがひとつ(1Sheet)で済む 単価変更時アッチコッチ探さずに済む
漏れ・誤記入などの心配が減る
ま、かなりアイテムにボリュームありそうな気もするが、Excel案件なんだろうか アドバイスありがとうございます
色んな方法がありますね脱帽します
今晩色々試してみてまた相談に来るかもしれないのでその時はよろしくお願いします
ありがとうございました いや、こんなのがわからんような馬鹿しか雇えない会社は素直に販売管理アプリを買えよ 最近 VBA→C#→Pythonを使ってきたけど
Pythonが使いなれた今、VBAやC#を使おうと思うと絶望的な気分になる >>545
どういうところに絶望を感じるのですか? Pythonが使いなれた今、VBAやC#は忘れてしまった >>547
暗記していないといけないと思っているタイプ?、 おれ、pythonでGUI作ろうとして絶望的な気分 正しいコードを暗記して書かないと
ってのが一番の軸にある奴はVBAに限らず昔から仕事出来ないって言われてるよね
いつまで経っても平のまさにお前ら
AIを鵜呑みにはせずやりたい事をChatGPTで形にして自分や他者でトライしてアイデアと発想を足してくのが出来るスタイル
そんなのも正しく出来ないようじゃとか言ってる限り後輩に追いつけないよ 静的型付けというだけで萎える
さらに、End if や Next i とかがマジでめんどくさい。
短いマクロくらいだったら問題にならないが、規模が少しでかくなると、この少しずつの煩わしさが絶望感になるw >>538ですがchatGPTにききながらとりあえずやっとできました。
でも取引先が多くなると式が長くなりすぎて微妙なんで何かいい方法ないでしょうか?
今こんな感じです
=IF(ISBLANK($C9), "",
IF($A$1="トヨタ", IFERROR(VLOOKUP($C9, トヨタ, 2, FALSE), "エラー: トヨタのデータが見つかりません"),
IF($A$1="ホンダ", IFERROR(VLOOKUP($C9, ホンダ, 2, FALSE),
IFERROR(VLOOKUP($C9, 共通マスタ, 2, FALSE), "エラー: 共通マスタのデータが見つかりません")),
IFERROR(VLOOKUP($C9, 共通マスタ, 2, FALSE), "エラー: 共通マスタのデータが見つかりません"))
)
)
>>542さんのやつなら短くできますかね? いや、こんなのがわからんような馬鹿しか雇えない会社は素直に販売管理アプリを買えよ >>557
これいけたと思ったけどなんか色々やってるとなわかダメでした
むだなレスすみません 単価シートを分けるのがダメ
コード割り振る時に、大・中・小分類を駆使
取り引き多い順とかで、野菜01、共通02、肉03、、 とかの大分類とし
共通の中でも中分類を設けて調味料001、乾物002、菓子003、、とか
その下に小分類があれば、商材の増減やらにも対応できる もっと細かにしてもいいけど
肉の豚のしゃぶしゃぶ用なら03002005とかの一連のコードで呼び出すようにする >>561
主張がよくわからんけど
ユーザー別に商品コード割り振れって言いたいの? chatGPTにこれじゃダメって言ったらいいんじゃね そもそも馬鹿な人が考える解決方法なんてものは馬鹿な方法である可能性が高い。その方法が実現できても周りが迷惑を被るだけ。
この問題が解決できてもまた馬鹿なことを言い出すのは見えている。
だから、こんな馬鹿に解決させようとしていることが間違えている。 意味の無いコードって無意コードって奴? それ生成するのにどんな苦労あるん?
そのIDと商品を結び付けるテーブルが別にひとつ必要に成るんだが、その手間は? アホで無い回答を求む chatGPTにForで回す以外のやり方があるのかを聞いてもありませんの一点張り
ネットで調べたら、ないはずの物が見つかるんだよな chatgptが提示したコード自体が動かない事もあるしね。 Dim a() As ......
Call Piyo(a)
......
Sub Piyo(ByRef a() As Variant)
......
こういうコードで何故か「型が一致しません」エラーが出て
Sub Piyo(ByRef a As Variant)
のように直すと出なくなったけど、理由がよく分からない >>569
馬鹿だからわからないだけだろ
馬鹿者なかったらすぐにわかる ByRefとか俺にとっては意味不明だから、Sub Piyo(a)でいいと思うよ >>557
今の形をベースとするならこんな感じ? 取引先がもっと多いならIFSかSWITCH関数に変えて、あとExcel365なんでLET関数を使えばもっと短くできる。
=IF(ISBLANK($C9), "", IFERROR(
IF($A$1="トヨタ", IFERROR(VLOOKUP($C9, トヨタ, 2, FALSE),VLOOKUP($C9, 共通マスタ, 2, FALSE)),
IFERROR(VLOOKUP($C9, ホンダ, 2, FALSE),VLOOKUP($C9, 共通マスタ, 2, FALSE))),
"エラー: データが見つかりません"))
でも、他の人も言ってるとおり元の単価表の作り方を見直した方がいい。 は? 商品アイテムを一意で管理するために、主キーと成るようなコードを割り振った方がいい
と言ってるんだが? RDBMSに移行していく場合にも有効だろ?
大中小分類をそれぞれ2-3-3桁の数値に置き換えて、上二桁が01なら野菜の商品群、02なら共通群・・
中三桁が001、002・・ 千も分類できるんだから大抵は賄えるだろ? 下三桁も一緒
何も001から順番に詰めてく必要も無い 005から始めようと自由
将来増えると予想される部分を空けておくことも可 特定の888とか999とかをオリジナル商品に宛ててもいい
取扱品目のボリューム次第では2-2-2桁での設定でも一向に構わない
何人がこのシステムを利用するか案件がまったくもって不明だが、有意コードを使わずに運用する方が
よっぽど面倒臭く成るだろ? 「こんなもの使えねえ」の不評に満ち満ちてしまう
初心者や初めて触る人間相手でも、それなり判り易くしなきゃ運用面で落第の烙印押されちまわあ
2-3-3桁とかに整えておけば、いずれドロップダウンリストを使って絞り込んでいくことだって可能 トヨタとかホンダとか車メーカーを書いたせいで「オンリーさんか?」と思い込みがちだけど
全商品が全取引先に向けて売上対象なんだろうから、商品(単価)マスタを分けるなんてのは愚の骨頂
有意コードはアホの理由が、正規化とか言うんなら そんな発想のがすっとこどっこいののーたりん
そこまで大規模でも無さそうだし、セキュアを求められてる訳でも無い Easy to operate に徹すべき
元々がAccess使いだからこそ尚更そう強く薦める 躓くところはそこじゃ無いだろ、と >>574
有意コードによる判り易さの根拠ゼロかよ
値と型の分離もできないコードをVBAスレで推奨する老害w 家で作ったエクセルマクロファイルを職場に持ち込めない場合、みんなはどうしてるの?
ソースコードを印刷して職場で打鍵? 持ち込めないならデータの方を持ち出せばいいんじゃなくって?
Googleスプレッドシートにでもコピペ >>578
外部からのメール送信は勤怠報告などに限られているのでソースをメール本文に書いて送ったら後で何か問題にされるかもしれません。
>>579
ソースをGoogleスプレッドシート上に用意しておいて、職場から参照すればいいってことですか。なるほど。アクセス禁止ページでブロックさえされなければいけそうですね。 フォームにtab付けてその上にlistview乗せた時、tab切り替えたらlistviewがズレる。回避方法たのむ >>576 ちょっと何言ってるかわからない 判り易さの根拠? 書いた通りだが? 理解できない?
頭ゼロ使うのが不安なら、11だの101から始めたっていいんだぞ? 頭カタイのはどっちなんだ?
数値と文字列が混ざったらパニック起こしちゃうのか?
そもそも、対案を提示して「こっちのがよっぽどメンテナンス・イージー」とかを主張するなら兎も角
「馬鹿」「アホ」「老害!」しか連呼できないような奴ほど、現実に対応できなくて相手を罵倒すること
でしか自己主張できない年寄り気質だろ そおゆう脳年齢に差し掛かってるんじゃないのか?
老害じゃ無い対応策を書いてみたまえ 有意コードを使わずに済む賢い手順をご教示してみたまえ
それすらできずにネットで大口叩くのは、むしろ惨めだろ ちがうか? 本当だよな。馬鹿だの低能だのばかり書いているヤツはみんなが納得するお手本を示して欲しい。
職場でも平気で人を見下したり傷つける事ばかり言っているヤツなんだろうな。 5chにまともな回答しても期待しても・・・
基本、マウンティングしか考えていないコミュ障のサルばかりなのだから いつも思うけど、たかだか仕事の道具でしかないExcelでスキルのマウンティング取って意味あるのかい? 同じ道具でも、使う人によって結果は変わるんだぜ
同じ包丁を使っても、シェフと主婦の作る料理は全然違うだろ?
あ、ここ笑うところね >>587
別にExcelスレに限った話でない。
匿名をいいことに(匿名でなくても)
何かにつけてマウントしたがるサルは
5chに限らずあちこち溢れている。 予定調和・お約束のように
「ブーメラン」とか書き込んじゃう、
ニヒルを決め込んだモナー系も、一種のサル いや、訂正するわ。
サルに失礼だった。
今こたつで膝の上に乗って寝ているうちのネコにすら劣る。
まともな感情すら、持っていない。 >>583
根拠書かれてないし、
相手を攻撃してくるような奴に知恵を授けるのはタダじゃやりたくないからな
主キーを有意コードにするのはやめとけって話だけでもタダで教えたこと後悔してる あ、でもTwitterと比べればまだ優しいかな。
どんぐりの背くらべと言われたらそれまでだけど 主題・本筋とは無関係に、いきなりひとつの回答をした相手に向かってバカだのアホだの老害だのと罵るだけの奴は
攻撃的じゃあ無いってぇのか? どんな感性してんだ
案件に対して回答はひとつこっきりじゃ無いんだ 人それぞれの解決方法があっていい 「それじゃあ○○の時に困るから
こうした方がいい」とかならまだしも「そんなやり方してる奴はバカ」 これが何の解決に至るんだ?
書き捨ててそれっきり むしろ話に混ざって来んな と言いたい 質問者が攻撃してる訳でも無し
主キーはひとつだけしか用いてはいけないとでも思ってンのか? いくつ使ってもいいんだぞ? 限度ってもンはあるけど
そもそもExcelにPrimary keyの概念は無いだろ データベース的に使おうとした時に「あったら楽」程度のもの
商品コード探す時に、「野菜の・・01だな」「夏野菜の・・070か」「レタス・・050っと」で、01-070-050
ハイフン要らんけど、まぁそういうのがイチバン人口に膾炙してるだろ 言うまでも無く固定電話番号や郵便番号が典型的な例
そこまで書かなきゃ論拠だと理解できないレベルらしいからご丁寧に書き記してやるけど
携帯電話で090が枯渇して已む無く080、070を使い出すようなボリュームでも無く、有意コードを使わない理由は希薄
すでに書いたが、数値と文字列でパニック起こすような人だけには「使うな」とアドバイスするけど
反論するならもっと有意義な解説して見せりゃいいじゃねーか おれに教えたくない、とか ちゃんちゃらおかしいわ
教えられるだけの素地すら持ち合わせて無いだろ その辺の野良記事読んで知ったかしてるだけの薄っぺらさしか伝わらんわ >>572
レスありがとうございます
この式で完璧に動きました
まじ凄すぎです
とりあえずこれを使いつつ、単価表見直してもっと良いものしたいと思います
助かりましたありがとうございます >>594
VBAのスレで人に忖度したコードを定義することについて、
デメリットよりメリットを主張するならVBA使うのに向いてないよ そういうトコだぞ デメリットをつぶさに解き明かして反論するならまだしも
相談者やおれだけじゃなくて、他の人々だって読んでる点を考慮しない
単に向いてないで結論付けてるだけじゃ、誰だってどういう理由でダメなのか理解に苦しむ
そのダメな理由が尤もだ!彼の言う通りだ! と成って有意附番が廃れてくならそれがスタンダードに成ってくんだろ
反証もしないで相手を貶してるだけじゃ誰も付いて来ない デメリットの事例をふたつみっつ書くとかならともかく >>598
他の人は兎も角、嫌いな奴に知恵を付ける真似をしたくないからな
煽ったって具体的には教えてやらねーよ ダメだこりゃ。昔は本当に建設的なスレだったのに、いつからこんな酷いやりとりになった? 煽ってくるやつは一人だけだから誰も相手しなきゃいなくなるのに、みんな我慢できずにレス付けちゃうから
つまり全員の責任 勝手に絡んできてバカアホ老害連呼してるくせに、説教されたら「嫌いな奴」かよ 小学生か
与太記事あたりを理解もしていないまま受け売りしてみたはいいが、実務と対比しても、どこがどう
「使ってはいけない」隠れた瑕疵に繋がるのか、ちゃんと自分で説明もできないレベルなんだろ 情けない
罵倒しときゃ向こうが黙ると思い違いしてたら、思いも掛けず反撃してきやがってアタフタしてるサマが
目に浮かぶようだ 反撃じゃあ無いけどな 論理的にお伺いしてるだけだ 言葉がガサツってだけで
どっちがこのスレに不要な人間かは、ROMってる連中にお任せしときゃいい
所詮、コッチの根拠は固定電話番号みたいな方法が大多数に馴染んでる ってだけだから、もしその一点
を崩せる反証があるなら、それ一発でこっちはしおしおのぱーで溶けて消えるのに、それすらできない
推して知るべし って奴だな 元々の質問では商品コードなんて聞いていないのに勝手に持論を講釈して反論がきたら逆ギレ
みっともない
こんな大人にはなりたくないね 自論に反論 ってもんじゃねーだろ バカアホ老害と、見ず知らずのアカの他人から真実を指摘されたから
じゃあってんで倍返ししてただけだ なんだ?当人か?
設計がおかしいっつーのは初手の頃から指摘してる 初っ端にトヨタをドロップダウンで選択して?該当するシートの
商品リストを引っ張って来る? 一品一葉の納品書なら兎も角、扱い品目は食品だって後述し出してる
それだと複数明細がある納品書を想像するのが一般的だろ 一品ごとに納品書書き直してたら手間が掛かってしょうがない
一行目はそれで引っ張れても、二行目以降はホンダや共通をドロップダウンし直すのか?
幸い各明細の左端のコードで複数シートから引っ張れる数式をご教示賜ったようだが、パフォーマンスはどうなんだ?
1シートから検索するのと複数シートから検索するのじゃ複数倍面倒だ 1秒で返るデータが複数秒掛かるようなもの
ま、それが許容できるレベルだったとしても、今度は日常の運用でメンテナンスに難儀する
商品の増減の都度、アチコチのシート探さなきゃいけなくなる うっかり間違ったシートに記入して、当人が気付かずに
居たりしたら、全く別の品目引っ張って来たり該当ナシ判断されて改めてマスタ登録し直したり ゴミマスタに成り果てる
今のうちにマスタ整理しなさい 付け焼刃で継ぎ接ぎシステムなんか作られた日にゃあ、現場の人間が大いに迷惑する
そおゆう老婆心だ 二度手間三度手間を予想できるだけに、ちゃんと設計しなさいと忠告してる
基本のキを疎かにしてたら、しっぺ返し喰らうのは開発した本人なんだから おまえら外野には無関係なんだろうけど 平日の昼間に長文投稿してるやつにVBAとか教わりたくないです・・・ 話脱線しすぎでしょ? VBA廃止は結局ガセで今後もバリバリ使われていくと予想できるよね? 長文w ボクは原稿用紙一枚分もの文字を見るとパニックになります って自白かw 新聞読めないひとか
あ、いけね 差別に成っちまう 訂正しないし反省もしません
ひと昔前ならいざ知らず あ、LINEとかSNS世代はスマホ画面に収まって無いと苦痛を覚えるとかか
今だに長文にケチ付けてるような奴は、ザコのヒエラルキーの中でもトップレベルだぞ 精々精進しろよ
社会人としてやってくのに自分が苦しむだけだ がんばっていっぱいもじよむことになれてください
長文だろうと短文だろうと、丁寧極まりない文章だろうとガサツな言葉遣いだろうと、どれもこれもに対応できて
ようやく多様性への柔軟な対応に適応できるっつーもんだ 出来ない奴はどんどん落ちこぼれてくだけ
こちとら老害だからそんなことどもには無頓着でいいんだがな それでもあんたら(いつの間にか複数相手かよ)
よりはよっぽど柔軟だと自負できる
だいたいが、無意味に他人を侮辱してじぶんの溜飲下げてるだけの奴に向かってサシで噛み付いてただけだ
その意図に確信や信念でもあるのか?と探ってたけど、何にもない からっぽのすっからかん野郎だと判明したから
倍返し十倍返しの言葉でぶん殴り続けてやっただけの経緯 にも拘らず
ソッチ側の尻馬に乗っかって一緒に成って無分別に一人を叩くだけの奴に成り下がった自分を顧みて恥ずかしく無いのか 社外システム導入って…それ別にエクセルで出来るますよね?
じゃあやってみろってまぁ簡単だからいいですけど
~~
Pythonの方が上なのはいいんだけどそのPythonをそちらの部署で今どんだけ活用されてます?全部検討中?去年から?うち同じ事をVBAで既にやっちゃってますけど…
昨日のギスギスした社内会議 Python ExcelVBA OfficeScript でどれが生き残るかと言えば、Pythonだな。 VBAはVB、VBS系じゃなければねえ
Pythonとかjsに標準が置き換わるって話が進めばよかったのに消えたかな >>614
js(wsh)からExcel使えるじゃん >>611 多様性を尊重しろ、なんてことは書いて無い 多様性の時代に対応できる適応力を
身に着けるよう努力しろと言ってる
ちゃんと相手の主張を読み取れないから、そんなあさってのレスしてご満悦
多様性のたった三文字に脊髄反射・パブロフの犬で煽りレス 情けない >>618
> いけね 差別に成っちまう 訂正しないし反省もしません
の部分のことじゃね
助詞のなるを成るとして無学を晒してたりするし、
自身が書いたことを把握できてないあたり、
「長文」じゃなく自身が書いてる「長文w」で合ってるんだろうね はいそうです
乗り遅れないように必死に勉強して完璧にマスターしておいてください >>619
事の発端は、無暗矢鱈と他人に罵声を浴びせる「だけ」の奴が跋扈したのを助太刀 というか成り代わって応酬
そ奴等が詫びもしないのになんで噛み付き返した方が謝らなきゃいけないんだ という意思表示
「寛容のパラドックス」とはその点 というのは、書いた人に聞かなきゃいけないけどな 本人なのかな?
確かに無知蒙昧・無芸大食・低学歴・昼行燈のバカアホの老害だから、おれ自身は人様から見下されるのには慣れてるが
たどたどしい質問してくる人や、勘違い・見立て違いで回答してしまった人などに向けての罵詈雑言は許容できない
罵声浴びせたら噛み付き返して来やがった、なんだこいつ? どっちがイカれてるんだろうな
ま、今後も意味も無く他人を貶したり貶めたりする奴が出てきたら、遠慮会釈無く長文で応酬するからそのつもりで 要約すると、馬鹿馬鹿言われて図星で悔しかったということですね >>625
また長文wかよ発端も嘘じゃん
発端は質問者に対して あ ん た が アンチパターンを勧めたことを咎められたからだろ
質問者や他の回答者に責任転嫁してんなよ
見下されるのに慣れててもプライドだけは高いのなw どのレスのことを言ってる? レス番なり安価なり打ってみ?
あと、ここじゃ他人の迷惑かも知らんから誘導してくれてもいいし >>625
長文だと自動的に文字が小さく表示されるのかな?
内容よりもそこが気になる。 先輩方、Pythonを勉強してVBAを見下す立場になれるよう頑張ります! PythonかVBAかなんて、ニッチな選択だな。
英語ができるようになったほうが道が開けると思う。 英語なんかできて当たり前なんだわ
今はもう一つ、ヒンディー語か広東語ができないと話にならない VBE のイミディエイトをクリアするマクロだそうです。
http://dailydoseofexcel.com/archives/2004/06/09/clear-the-immediate-window/
GetKeyboardState とSetKeyboardState でCTRLキーを押すことをやってるんですが、
CTRLキーを解除するときになぜApplication.OnTime でDoCleanUpをしなければいけないのかがわかりません。
たしかに
Call DoCleanUp
にするとイミディエイトが消されない。
Win11+Ofiice2016で動作するさせるためにAPIの宣言を64bitにする必要がある。 存在しないシートがVBEのプロジェクトエクスプローラーに表示されるという症状が出た
シートのプロパティを見ると何故かThisWorkbookになってる
Excelではシートを表示できないので削除できない
新しいブックを作成して必要なシートとマクロをコピーした モジュールのエクスポート/インポート機能を使わないで、複数ブック開いてコピペとかしてるとありがち 再起動して直るものは、メモリ上にめっちゃ無駄なものがロードされてるのが理由 質問する人間はどうしてOSとExcelのバージョンを書かないのだろうか? メモリ不足? 可能性は200%より少ない
それより、回避出来ない排他制御かも
ていうかさ、
A.xlsm には、
Cells(5,"x") ="処理完了"
というコードがあって、かつ、
結構重たい処理
B.xlsm も、それなり重たい処理だが
Cells(5,"x") ="処理完了"
のような、コードなし。なし、なし。
さて、A.xlsmとB.xlsmを2つ開き、
A.xlsmのを実行すると、通常、モチロン、
A.xlsmのセルx5に"処理完了"と表示だ
しかしA.xlsmを実行中に
B.xlsmにフォーカス?するとさ、時々
B.xlsmのセルx5に"処理完了"と表示される
B.xlsm、B.xlsm、B、 B、 B.xlsmに表示
これはメモリ不足は根本的原因ではなく
🟥🟩
🟦🟨のWindowsの並列処理の排他制御の
モピロン、致命的欠陥❓❓❓
致命的、致命的、致命的だけど致命でなく
ポクは生きてます。ので安心してね〜
てか、何やかんやで、デッドロックてか、無限ループ❓ ま、メモリが不足すると、排他制御が怪しくなり
最悪、ファイル出力を伴う処理では、
最悪、ファイルが破損する致命的事象はよくありそう
でも、致命的であり致命でないからヒトには直ちに安心安全death
てか、スケッチ&なんとかで、
メチャデカい静止画を上書き保存する時、レマークが表示される
前に、スケッチ&なんとかを閉じると、その静止画が破損する確率が
30%位あるだよな。使用のパソコンのメーカーは
モチロン、🇯🇵の超有名ブランドだから、やはりOSの致命的欠陥なのかな
ま、このOSは、安全性を重視するシステムにはヤヴァイかも
違ってるかな❓ >>642
コードが悪いだけ。
Cells( と書くと、その時アクティブになっているワークシートに書き込む。
A.xlsmの指定したシートに確実に書き込みたいならcellsの前にThisworkbookとかWorksheet( とかつけて書き込む対象をはっきりさせる必要がある。 そゆこと めっちゃ無駄なもの = メモリ不足 と認識したのかも知れない 書き方が悪かった
ヒト側から見たら誤動作に見えても、プログラム側は指令された動作しかしない
あの国で乱立してる新築無印廃墟マンションで例えるなら、「その部屋をノックしろ」とだけ
書かれてたら目の前のドアをノックしてしまう 〇地区の東側から何棟目の12Fの何番目の・・
とかまで書いていれば、ちゃんと目的のドアをノックする まぁ、これも例えが悪いが
そもそもメモリ不足な状況に陥ればOS側から警告される >>641
常識がある人はそもそも質問せずに自力で検索する
その方がタイパがいいと知ってるから 自分が悪くても装置や他人のせいにするのが日本人の本性 ルール通りの文法で書いてエラーはでてない
前の人が作ったシステムをそのまま使ってるので自分は悪くないって
どっかの政治家みたいな 会社の昼休みに自主的に作ったVBAの著作権って誰のものになるの? 会社の電気代で動く会社のPCで作ったVBAだから著作権は会社のものになる? >>644
>Cells( と書くと、その時アクティブになっているワークシートに書き込む。
どこにコード書いてるかで、そうとはかぎらんがな >>649
ごく一部に、社員側に権利を認めてくれるとこもあるど、それは今の日本では例外扱い
会社の規則に明記されてなかったら会社の物 設計段階からすべて一人で作って管理保守、動作保証までしっかりできれば個人のツールで使用を認めれくれるかもしれんが
それでもシェアウェアにして上司に認めれもらって使用料出してもらう程度が関の山
下手に社外に情報出したら機密情報の漏洩とかで訴えられるかもしれんし、職場でもめるのは良くないだろう >>656
内容による
ソースコードに著作権があるかどうかの裁判はいくつもあったけど、プログラムの処理内容によって判決が変わってる VBAプログラマなぜ職人扱いなのですか?
Javaとかだとプログラマって言われるのに >>658
Excel VBAは同じことをするのにいくつもやり方があるから。
古いのでどう書いてもスマートにならないところも悪い意味で職人と呼ばれる。 求人表に書いてほしいわ、プログラマではなくて、VBA職人募集って。 プログラマは複数の言語を知ってるのが普通
職人は特化型、VBAとかCOBOLしかできない人のことなので、たぶん悪口 LISP特化だとLISPエキスパートって呼ばれるのに、、、
VBA 土方とかVBA ニコヨンとか酷い >>666
構造化プログラミングをしていないことが多くて評価が低い 身一つで客先のPCだけ借りられればササっと安易なシステムぐらい
作り上げてしまえる 人呼んで流しのVBA屋 銀さん >>668
それをやられて困っている大企業ばかり
本人だけがわかっている状態はやばい 大企業でそれは無いだろ 大企業なら困ってもどうとでも成るだろ
そんな程度で困ってる大企業なんか、もっと他の困った事態でどんどん淘汰されちまう
それがたとえ中小・零細だろうとも、どんどん募集掛けて血の入れ替えすりゃいいだけ
業務に支障が出る作業なのに「困ったこまった」連呼してても何にも変わらない
どころか業務停滞で業績ダウンまっしぐら ズバリ
https://note.com/shift_tech/n/nf116fe6b993c
なるほどわからん
ここ、githubご本家にあるVBAのトピックには855のリポジトリが
https://github.com/topics/vba-excel
なるほどもっとわからん
わからんことに挫ける人にはむつかしく、わからんことにワクワクする人だけが使えと >>672
コードをエクスポートしてそれをGitで管理してるみたいだね
VBEと直接の連携はできない様子 .xlsmならzip解凍して上げときゃいいんじゃね?
しらんけど GitHub本体よりGitHub Gistの方が、
簡単なVBAソースコードの共有には、敷居が低くていいかも?
GitHub本体のアカウント登録は必要だけど、imugurと同じようなものかと。 やっぱこうVBAも人工知能てきに
フレームワークでGITHUBでDOCKERしないといけないね VBA必須案件て、そんな、寄ってたかってnetで共有してまで制作するものかね?
一社が独占して受注して、世界中に散らばったデジタルノマド・リモートワーカーに作成してもらう?
そんな用途でしか使い道が無いような
もっとちっぽけな案件で社内やせいぜい特定の一社に委託して制作してもらうのが関の山では?
バックアップや履歴管理とかの用途なら、もっと他の手段だってたーくさんあるだろうに
背伸びーして絡ませてみても、先方の都合であんなことやこんなことが頻発して支障のが多いような
下請け孫請けひ孫請けってぇヒエラルキーの下っ端に居ると使わざるを得ないのか? 個人の業務を効率化出来る
配布も容易なので部署内の複数人で共有も便利
この域に留まるもんでしょ
そんな大がかりなことやってられっか 夢見たいんだよ
小汚いビジネススニーカーにチノパンとかじゃなくてさあ
スーツびしっと決めてホワイトボードの前でプロジェクト会議
VBA言語で、SQLServerと連携し
フレームワークとしては、、、とか知的デスカッションしてさあ
今回のアジェンダは、シナジー効果でえ、アグリーとか言って
そんでGitHubをリポジトリにしてえ、
カッコイー >>670
情報分析関連とか管理会社などが属人化していることが多い さっきカフェで「マイクロソフトさんびゃくろくじゅうご」と言っていたやつがいた。 助けてください!
リストボックスに30個の項目があって「最大3個まで」複数選択できるようにしたいです。
3個に制限をかける方法が全く分からず…
ご教示いただけないでしょうか? 一つだけ選択できるリストボックを3つ用意すればいいんじゃね みんな大好き OFFICE TANAKA のサイトへ行って、リストボックス 複数選択とか探せ
で、その情報分析とか管理会社とかは、大企業のカテゴリーに入るのかね? 因みにどこよ?
https://reashu.com/data-bunseki-kaisha/#15
ここの、データ分析企業 15選の中のどれとどれなんよ?Excelつことるんかね?
おふぃす・すりー・しっくすてぃー・ふぁいぶ 別に大好きでは無いが。通は真髄さんのサイトを参考にするらしい。 リストボックスで複数選択できる場合
最後に選択された項目を知るには、直前の状態を保存しておいて差分を比較するしかない?
もっと良い方法ある? 良い方法かどうかは本人次第だが、リストボックスのそばに「直前値」とかのセルを設けておいて
選択した値を放り込んでおく 毎回上書きに成るはずだから「直前」のものが残る
セルじゃ不味ければテキストボックスでも そんなわかりにくいコントロールを使うのは意味がわからない 画面に糞長リストボックスが存在するのはどちらかと言えばダメなUIに該当する
コンボボックス3つ並べた方がメンテもし易いしスマートだよ >>688
別のリストボックスまたはテキストボックスを用意して、リストボックスをクリックされたらそちらにどんどん転記して、そこの表示項目を3個に制限するとか。 リストボックスを質問した者です。
みなさん、ありがとう!
いろんな発想があって勉強になります。 自力で調べて試行錯誤すれば30分もあれば解決できただろうに 普段利用してる既存のアプリやWebのサービス画面を参考にしなよ
その中でリストボックスから3つだけ選択させるなんて馬鹿な事してるやつなんてないだろう >>696
結構あるよ
なぜそのサービスを選んだのか(3つまで)
みたいな 複数選択はリストボックスじゃなくてチェックボックス使うだろ普通は
作る手間よりは使いやすさで選ぶべき
できるのとやっていいのは違う おソースがずっと固定ならそれでもいけるけど、変動するんじゃね?
占有面積の関係でもズラッと30項目広げておけない、リストボックスでやるかあ、もあるだろうし
まあ、使い勝手悪ければ利用者からクレーム来て直さざるを得ないだろうけど OutlookやWordなどと連携したマクロを書きたいのですが
体系的に書かれた本やサイトはないですか?
本「Excel VBAによるOffice連携プログラミング」は古すぎ? リンクだけ置いて去るとか、ここもヤフー知恵袋みたいになったな マクロの実行中に、読み込み中とか更新中みたいな途中経過表示を出したいんだけど、
DoEventsを3行くらい書かないと表示が更新されないんですよ。
2003の頃は全く書かなくても更新されたのに。
何でそんなことになった? 「何で?」と問われても、主導権はアチラ側にあるんだし
機能改善にしろ新機能追加にしろ便利機能の排除にしろ、中の人がそうしたなら従うしか無い
GoogleにしろMSにしろ「ほらよ」と黙々と更新し続けるだけ 理由なんか言わない
使うか使わないかはコチラ側の判断
散々世界中から非難を受けて、元に戻した機能とかあるのか? 記憶に無いが
精々が、アプデでヘマこいて取りやめて一旦戻したとかぐらい >散々世界中から非難を受けて、元に戻した機能とかあるのか?
Windowsのスタートボタン >>704
パソコンの性能が低いか、同時にたくさんのアプリを開くとそうなりやすい コンソール入力ってVBAでできないのですか?
Inputboxじゃなくコマンドプロンプト画面でキーボード入力したい 割とどうでもいいからよく調べてはいないけど、たしかにさいきん、以前と同じように書いていてもApplication.StatusBarの反映がされないことがある気がするな >>712
コマンドプロンプトからExcel起動できるよ >>712
何がやりたいのかわからん
フォームにテキストボックス置いて背景真っ黒にしとけ 全社員が参加する部門方針発表会の部代表でプレゼンやらされたけどVBAによる自動化って堂々と答えたわ
いちゃもんつけてくる部署がいたらそこの部署の方針をボロカス追求しようとと思ったけど突っ込みはなかった 突っ込みはなかったんじゃなくて、相手にされなかったのかなw
俺なら、「ノーコードで自動化して皆さんの無駄な作業を無くします!( ー`дー´)キリッ」 だな。 外資メーカーだけど中身なんてこんなもんだよ
AI導入を検討とか社外の総合システムの検証を進めるとかどこの部署も毎年ふんわりワードばっかり
俺の部署はVBAでシンプルに毎年効果出してる
昭和すぎるけどそんなもんよ ノーコードはバージョンアップで動かなくなり、メンテできる要員もいなくなり、導入当初にもて囃されるだけでただのお荷物となる 新技術に飛びつくのは素人
ちゃんと仕事ができる人は、普及率と安定性で選んでトラブルを回避しつつ開発コストを下げる PowerAutomateは糞
ぜんぜんノーコードじゃない
outputとかtriggerBodyとか必須だし
変数ないとまともに組めない
VBAの分かりやすささいこう >>722
それはあなたの能力の限界じゃなくての話かな? あれはHTTP要求がプレミアムなのがなぁ
それならVBA使うわ >>725
ノーコードも理解できる人ならコード書けるしChat GPTとかで補助させたりもできるんだよな グループでの業務ぇボタン1クリックでどこまで自動化出来るか挑戦してる
とは言っても糞長いコードじゃなくプロシージャの組み合わせだけど
隣の部署の毎年ライセンス料払って使ってるシステムは既に越えてる >>727
ちゃんと詳細なマニュアルも書いてるか?
属人化は将来困ることになるで
人間なんて事故や病気でいつ死ぬかわからん 嫌な職場だったら、俺が辞めてから1年後に全システムを破壊するようなプログラムを仕込めるスキルが欲しい(笑) >>728
コメントはバチクソ丁寧に残してユーザーフォームからマニュアルに飛べるようにはしてある
でもVBA自体いじれる人が職場におらんね
>>729
うちの職場は使用期限でもつけといたらまぁ誰も対処できんレベルだよ 効率化のための技能を持っていないやつが効率化を語るなと言ってやれ コメントってオタマジャクシなのが嫌
ちゃんとREMってしてほしいのに 自分の魂のコメントを吹き込む手段だし
これは精子だよ コメントが精子だろうがオタマジャクシだろうがどっちでも良いけど、
ブロックコメントの手段がないのが残念
いちいち編集ツールバーをクリックするしかないのかこれ 自作VBAにつけたツール名が商標登録されていたら問題になりますか? 前前任者が作ったVBAを揉めて現場異動にった前任者がわざわざパスかけてったけどそれをしれっと解除してメンテして使ってる
飛ばされた後に仕事回らんだろ?結構困ること出てきた?とか聞かれたわ
大丈夫ですぅでスルー
良い歳こいて職層低い奴はしょうもないな >>740
便利だからなおのことキーボード操作で楽したい
怠惰を極めたい >>738
細かい事だけ拘ってVBAのセンスもなさそうだよなこういうやつ >>722
5chにもRPAスレがあるけど、
まったく話題になってないからほとんど使いこなせてないんだろうな。
RPAを使いこなせるやつなら、VBAだって使いこなせるし、VBAのほうが楽。 PowerAutomateは糞だし
PowerAppsは下呂
まるっきり意味なし
連携するなら
歴史と伝統と格式と品格と気品のあるVBscriptがあるというのに
せめてPowerShellまでなら許せたが あんなダブルクリックで動かない面倒臭いやつが?
batに偽装して使っとるわ .ps1だってダブルクリックで動かせるだろ
デフォルトじゃ動かせないってのならその通りだけど >>744
読んでて中山きんにくんとコラボして欲しいな、とか思った💪 しかしどんなに良コメント残しても属人化は避けられんね。
VBAに詳しい人間なんて社内に数名いれば恵まれている方だし。 そもそも属人化して良い業務だろ。
覚えるのめんどくせえってやつばかりなんだし。 そんな後ろ向きな姿勢で仕事をしている連中は
おちんぎん上がって勢い付いてバリバリ仕事したくてうずうずしてる若手に追い越されて
年下の上司から(チッ! 使えねぇな)とか思われながら、あごでコキ使われる定め
良くも悪くも、間違い無く将来は彼らの手中なんだから、追い越されないよう必死でやり続けるか
あきらめてスピンアウトしてくか(業務用アプリに手を加えて業務妨害したりするのは犯罪です) 所詮エクセルの機能なんだから関数と変わらんよ。関数のほうが難しいくらいだ。 まあVBAやって一番良かったことは、他の言語に入っていくときに変数や分岐条件、
演算子と言ったものの概念はわかっているから表記を学び直すのが主になることかな。 VBAさえわかっていれば他言語など小学校の算数ドリルのようなもの 新しく作ったり辞めた人が作った使えないマクロを復活させて改良したりしてるがすげー人扱い
そして新しい言語は何も習得していない 去年あたりにVBAが廃止されてエクセルにPythonが導入されるって噂あったが
何だったんだ? デマもいいとこ >>757
あれは中の人が私的なブログがXかなんかに願望を書いてただけ
関係者の発言だから本気にした人が多かった
VBAは廃止せずにPython追加って話もあったけど、それも中止になった >>757
取りやめになったよ
ブログでの発言がソースだろ?
そのブログで開発中止、
openpyxlやxlwingsといった優れたアドオンがあるからそっち使ってねとも書いてたろ VBAとかPY損でロジック実装やるより
EXCEL関数でロジック実装が、難易度高いけど操作性サイコー
VBAとかのロジックって、それを実行する時のクリック面倒
EXCEL関数でのロジック実装したヤツなら、
値をセルに入力したら勝手にてか自動で実行されるし、ちょー便利
IF文まで、関数だなんて、クレージーだから、EXCEL関数サイコー
分岐は、EXCEL関数で、どうにかなる。
てか、繰り返し(FOR〜NEXT)はEXCEL関数はそんなのは無い?
多分ナイ。だからEXCEL関数はダメ🙅。スナワチ消去法で
EXCEL VBAがサイコー。消去法でだけど。 >それを実行する時のクリック ん?イベントドリブン知らんのか つこてないんだろうな
意図的にクリックを要求した方が安全な場面と、勝手に動作させた方が操作性がいい場面とか、使い分けするだけ 改善発表の質疑応答で
「マクロってデータを壊したりマクロ自体が壊れるリスクも高いと思うんですがその辺の管理は出来てるんですかぁ?」
と言うあまりに恥ずかしい質問がきて答える前に少し笑ってもうた
大卒ばっかりの間接部門でもこんなレベルの奴もそりゃいるか
レベル低い会社にいる俺も同じだわな マクロ走るとアンドウ消えるからイベント駆動は意外と嫌われる wordみたいにundoの制御まで含めてやらせて欲しいよな どうしてそこまでundoが欲しいか分からない 無駄で雑な入力ばかりしてるってことなのか?
せっかちでチャカポコ操作したり勇み足でクリックしちまったりの、おっちょこちょいさんなのか?
undoをマクロで書いておけばいいんじゃないのか?
生涯でundoがどうしても欲しい!と成ったことが無いのでさっぱり理解できない >>770
undoをマクロで書くにしても標準のアイコンから操作できないのが気持ち悪いし、
他人に使わせることもあるからなるべく責任を負いたくないってだけ
自分の想像力のなさと思慮の浅さを自慢するな マクロ実行させてドジ踏んだら責任を負わされる環境なのか おかわいそうに
実行して元に戻せなくした本人はお咎めなしなのか イージーな職場だ
元に戻す程度の作業に、なんでそんなにビクビクしてなきゃいけないんだ
そもそも元データは保全確保しとくもんだろ その元データを引っ張ってきてあれやこれやするもの
いや、単におれの想像の遥か先の業務をしてるのかも知らんけど 因みに事務系データ以外? 中国企業のロゴが入ったデータ公表しても責任取らん奴もいるというのに ある工場で昔むかし作られた製品出来高の入力フォーマットが今のディスプレイの解像度ではあまりに小さいから
解像度設定を変えただけなのに文句言うやついたな。
あんなもん車のミラーと同じで使うやつが合わせるものであってその程度の設定すら知らないのに事務職面ですか。 あった方が助かるって話を頑なに否定する奴、
undoに家族を殺されたんだろうか ん?おれのこと?
イベントドリブンの話から、マクロ走らせるとundo効かないと成って、要るのか?な流れと思ってるが
関数だってひとつのイベントドリブン セルの値が変化したというトリガーで結果を反映させてる
で、話は逸れそうだけど、ひとかたまりのデータをあれこれ加工してる最中にはundoもあるかも知らん
それはひとりで作業しているケース 自己責任でデータを思うがまま処理してたっていい
それが例え一人だろうと他の作業者が同じ作業をする可能性があるなら、制作側はオペミスにも対応
できる作りにしとかなきゃいけない 初級と中級のボーダーはそんなとこにもあると思う
オペマニュアル作っとくからそれに従え ならそれでもいいかも知らんけど
マクロは定型業務を簡略化するための一つの手段 操作を自動化 作業の入り口と出口が一方通行で
定められた単純作業というならマクロ走らせない手は無い 途中の試行錯誤は無いのだから
そこにundoの出る幕なんかある訳無いだろ あるとしたら入り口に戻るだけ
容易に入り口に戻れるようなシステムにしとけ フールプルーフ対策してないシステム組むな
https://xtech.nikkei.com/it/article/COLUMN/20060206/228659/ とか
http://excel-mania.com/vba/event.html とか、他にもいっぱい出て来るけど、ちょっとした
処理でも、せっかくのイベントドリブンのメリットを享受しない手はないだろ
まぁ、そんな意味合いだったが、どうなんだ >>766
大学出なのにそんな質問する奴はヤバい以上だろ >>780
管理体制を説明できない事も問題
目くそ鼻くそ 標準のDefenderひとつで、悪意あるマクロはブロックされる
大抵のお漏らしは、外部からの添付ファイルとかを無頓着に開いたりすることで起こすのが殆ど
社内にDefenderすらすり抜けられるマクロを組めるほどのハカーが居たなら、むしろ大抜擢して
システム部門任せて、尚且つネットワークセキュリティの商売できるほどにまで成長させられる
質問者の意識はふた昔前のままで停滞したままだ、考察に値しない と、バッサリ切り捨てる 大学出って全治全能の神様だと思っていた万年派遣社員の俺 >>786
理系文系でも違うし、学部もそれぞれあって全知全能とか微塵も考えんやろ
大学って小中高含めて一番勉強せんしw >>787
嘘だろ
寝ても覚めても勉強し続けたのなんて学部の3年間くらいだわ 派遣やってるような男はVBAスレにいる場合じゃないだろ…
人生組立直せよ >>788
尊敬します
本来そうあるべきでした
大学で一番真面目だったのは、研究室入ってからだな
徹夜で没頭したこともあった。世の中に無いもの、一歩未来なものを作るのは楽しかった(工学部) そおやって、毎度あきらめてばかりだから何にも変わらない・変われない
人生、いくつになってからでも発奮すればやり遂げられる
客先の社長だが、50代半ばぐらいだったと思うが、俺のブラインドタッチ見て触発されてか
それから4〜5ヶ月後に行った時には見事なブラインドタッチでメール書き込んでた
「すごいですね」「あんたの見て悔しかったからなw 必死で覚えたよw」と笑ってた 年商5億ぐらいの会社
おかしいな? じゃあ、おれも年商5億に成れてもいいはずなのに 金融機関ではいまなおCOBOLが現役だ
とある金融機関がCOBOLからモダン言語に移行させようと膨大な予算を使ったが大失敗し
全国のATMが動作停止する重大事故を何度も何度もおこし、毎週末はかならずメンテンナンスでATMが使えなくなるという最低最悪の醜態を晒した
これを受けて他金融機関は、COBOLからモダン言語への移行を必死に避けるようになったという
さて、このCOBOLだが、ローカル変数がなく、すべてグローバル変数になるという言語仕様である
1950年代当時はそれが当たり前だった
身近なものでは、1980年代マイコンに内蔵されていた行番号つきBASICだってすべてグローバル変数しかなかった
そこでCOBOL開発現場では、EXCELでグローバル変数を管理しているという
変数管理が面倒なため、ここでVBA言語がしっかり活用されているらしい
VBA言語が、COBOL言語を支え、日本の金融期機関を支えているのだ
つまりVBA言語なくして、ATMすら使えないということだ
VBA言語は偉大なり まぁ地方では昔の98がまだ現役で使われてるところもあるって話聞いたことあるしね 派遣にしかありつけないのは氷河期世代。当時、新卒からして派遣社員とかザラにいたからね。 >>798
>活用されてる「らしい」
w
合体するまえの一つは、COBOL以外も使ってたのよね
外野の浅い記事程度のことならリンク貼る方がいい。あなたがここに書くより信憑性あるから 少しく興味もをって軽くググってみたけど、日本国内だけの問題じゃあ無さそう
アメリカでも六〜七割のBANKがいまだにCOBOLだと 民間企業ならまだしも政府機関でも使ってて
あろうことか予算削減の筆頭に祭り上げられてて、コロナの失業給付の時には想定外の申告件数でパンクしたとか
レガシー過ぎるのも厄介
しかし、銀行内にメインフレーム用に専門のシステム開発部門を作るものだろうか?
専門部署があるとしたら、一年365日毎日COBOLつこてられるんだから、そこまで戸惑うものだろうか?
大抵は外注でなんとかとかかんとかとかの大手IT企業に丸投げではないのだろうか?
そういった専門部門がグローバル変数ごときを把握しきれていないのは大問題では無いだろうか?
よしんば膨大なグローバル変数だとして、それをExcelで? いやいやいや、データベースに入れとけよ、と
大手IT企業の名折れだろ、と 月次のアプデで思わぬ動作したらどうすんねん、と
COBOL専用の開発支援とかもあるだろうに(ものっそ古いけど)
https://www.hitachi.co.jp/Prod/comp/soft1/cobol/product/function/function_dev02.html
ソース解析だってお手の物だろうに(古いけど対象も古いからちょうどいいかも知らん)
https://www.hitachi.co.jp/Prod/comp/soft1/cobol/product/function/function_dev01.html
どこの銀行の与太話真に受けてるか知らんけど、事実だとしたらとんでもないんだけどな
万が一にも、委託された側が個人的にそんな使い方してたとしても、大問題 >>803
>しかし、銀行内にメインフレーム用に専門のシステム開発部門を作るものだろうか?
バカが何想像してもムダ
グローバル変数……そんな程度のこと問題になってると考えてることさえバカ COBOLなら俺に聞けスレがあたったきがしたけど見たらなかった なんだなんだ? >>798 のご高説が眉唾だったから、軽くググった、と書いておいたんだが?
無知蒙昧のおれでさえ、ちょっと・・なおハナシだと確信したから反論のつもりで書いたが
反論を反論するってぇことは >>798 の一味なのか?>>798 を擁護する側に成るんだがいいのか?
それとも、いつものバカって書きたいだけの人達なのか? よっぽど追い詰められてンだな、人生 >>809
文章内全部が反論になってると考えるバカ 人格への攻撃はまあ、心が広いから見逃してやるけど、書かれてる「内容」に対しての
意見・修正・注釈・反論・異論とかは書けないのかな
バンクシステムの中の人なんてそんなもんだとでも言うのかな
文章内全部が反論←何言ってるか分からない 全部反論じゃなきゃいけないのか?
疑問やらに辿り着くための経緯を書いて無きゃ、唐突に結論だけ書いても話は通じないだろうに バカは日本語わかってないからな
省略を補完する知識もないから全部解説してもらわないといけない
そんな輩にイチイチ説明せんよな 昔COBOLを見て、なんだBasicと大して変わらないじゃないかと思った事がある。
でも最近思ったんだよ。
俺がCOBOLだと思っていたそれは、実はBasicだったんじゃないかって。 >>815
まあ命令語が変わる+αと考えればそうだったかもね
しかし、それを動かすのが大変だったろ?
だったらBASICじゃない
(マシン(実行環境)が何だったかにもよる) >>815
変数を定義する場所が決まってたりBASICとはかなり違ってる印象だけどな
第二種情報技術者をCOBOLで取った世代だけど 話題ないのか?じゃあおまいらのパソコンのスペッコ教えれ それはプログラム関係ないから却下だ
一番最初に覚えたプログラミング言語(初級レベルで可)なら教えてやってもいい BASICを覚えたのは1980年
こんなに使い続けるとは思わなんだ オレも82年に N60-BASIC
BASICはずっと使えてコスパ最高ですな NECはマイクロソフト製のBASICを採用してたから、ローカルルールがVBAに似てるんだよな
$記号で文字列型を指定できたり、複数のNextがカンマ区切りで1行に書けたり いまだにそれを使う場面って、どんなとこ?
そして、それを稼働させる環境って、最新のマシン上でも動作すンの?ロートル機器を労わりながら?
ほんとに趣味とかで極プライベートなことで動かしてるってだけなら聞きたくも無いけど >>758
Pythonは導入されているぞ?
古いバージョンに追加するとは発表していない。 >>826
BASICのほとんどはマイクロソフト製だぞw 使い捨ての関数をさっと書くときにタイプ数を減らせるから重宝してるよ
dim a%,b$
みたいに書ける
これは
Dim a As Integer, b As String
と等価
ほかにも省略できる記法がたくさんあるけど、そこらの参考書にはまったく書いてない >>829
8bit時代に大きなシェアを持っていたSHARPは独自のBASICを内製してたから互換性が低かった >>831
独自も何もBASICに標準なんてないからシェアが正義だよ 下の2つのコードをそれぞれ試しましたが空のブックが残ります。エクセル自体を閉じるにはどうすればよいですか。
office2021です
Application.Quit
ThisWorkbook.Close >>835
この2行を続けて実行
Application.DisplayAlerts = False
Application.Quit >>836
回答ありがとうございます。
実行しましたがまだ空のブックが残ってしまいます。 強制セーブは?
ThisWorkbook.Save >>839
そうです。複数のブックを保存して閉じるコードを書きました。
wbPaths = Array( _
これだと上手くいかなかったので、最後のブックだけ分けて保存したらブック自体を閉じることが出来ました。
ActiveWorkbook.Save
Application.Quit
相談にのっていただきありがとうございます。 ネタ途絶えたので二番目に覚えたプログラミング言語(初級レベルで可)
(引き続き最初の言語もどうぞ)
Z80アセンブラ
最初のBASICと合わせてプログラムとはを本当によく知ることができたよなとつくづく思う
インタプリタがいかに遅いのか、CPUは本当は早いwのがよくわかった
レポート用紙にハンドアセンブルしてた。学生で金なかったから(泣)
2種試験はアセンブラで簡単だったな…
大学研究室では68000でアセンブラ書いたな… 書きやすい。8086は糞w(懐かしい…遠い目) 何よここ?50代から60代しかいないの? 80年代とかのキーワードで驚いた 5chはジジイの巣窟ですよ。
子供は他所で遊んだ方が良いですよ。 加齢臭キツいのは仕方無いけど、だからって初々しいコ達を貶めるのはどうなんだ?
えびばでぃ Welcome な好々爺を演じるぐらいの配慮は必要だろうに
演じる事すら出来ずに、残り少ない自分の人生悲観して、その八つ当たりをしてるにしか見えんが
それは老害でしか無いし、そんな言動しかできないんなら、その辺の土手で黄昏てろ、としか 5chは老害の巣窟ですよ。
子供は他所で遊んだ方が良いですよ。 >>848
5chは老害の巣窟ですよ。
あきらめて他所で遊んだ方が良いですよ。 まあ、それは 他のスレッドだとじぶんが付いていけないからなんだろうな
唯一自慢できるのがVBAなんだろう、たぶん 人生の勲章がVBA
退役軍人が懐かしい酒場に入り浸って昔語りし続けてお互いの傷を舐め合ってるような景色
前世紀の遺物だよ 死に掛けのヨボヨボじじい共
しかし、地球の危機が宇宙の彼方からやって来たとき、彼らが!!・・ VBAじゃ出番無ぇな 例の零細企業でワープロを使えるのを自慢していた馬鹿じゃないの? なんでBASIC絡みのスレって>>842みたいなアセンブラ爺さんがたまに沸くんだろう。いや、俺もジジイだけどさ。 そりゃBASICの高速化といえば機械語しかないからでしょ >>842
インテル8086のように移行期の互換性を考えていないCPUがデファクトスタンダードになることはない
インテル自身も64ビット化では失敗作を作って、AMDのx64規格に救われた。 課で唯一のVBA使い
要望に応えてどんどん部内で共有する処理システムを強化してしまっている
土台で処理するtxtデータが12万を越えた
ライセンス料払ってたソフトをやめて社内運用でコスト削減
時代に逆行しすぎ テキストデータが12万というのは、ギニュー隊長の戦闘力のことでも言っているのか? わざわざ糞つまらん事を連投して面白いとか思ったのかな 12万文字でも12万行でも多くないし、12万といういまとなっては大きくないサイズは、いったいなんなんだ? IoTとかで取り込んだCSVとかのテキストデータが12万行とかだろ まだ88万行おk
すぐにパンクしそうではあるが そんな時こそ前処理でPowerQuery! とか、当人は意気込んでるんだろうな
いずれにしろ部内の要求に応じてるなら、現状ではハリキリマンということで、評価はアゲアゲ
それをやっかんで戯言吐きにきた、と Windowsとエクセルのバージョンが上がったら今まで使ってたVBAマクロが動かなくなったっていう経験ある人いますか?
そんなことは普通起こらない? ある。
基本的な機能使ってるだけならまずないが、
参照設定使うとか、特殊なことやってるとよく起きる。 >>867
同じバージョンでも再インストールとかで今まで32ビット版だったExcelを64ビット版に変えるとちょっと凝ったマクロでエラーになる事がある。
ググれば結構例は出てくるので修正は出来る。 いやでも80年代からおぢさん達は飽きずに挫折せずに続けている事には尊敬できる。
昭和の人って忍耐力半端ないイメージがあります。 確かに、スピルとか言う他のセルにも影響を及ぼす計算式(?)には驚いた。
自分は某福祉NPOでパソコンの助っ人みたいなことをしているが、パソコンの更新が進まず、エクセル2010がまだ多数残っているので新しい機能を使わずに(勉強せずに)済んでる。 新しいPCに変えたら、SendKeysを使うとNumLockが解除されてしまうようになった
普通にNumLockを押すようにコードを足せばいいんだが、
問題は今までNumLockを押したらIMEがオフになるようにしていたから他のキーに変えないと駄目になったのが辛い Static WshShell As Object
Set WshShell = CreateObject("WScript.Shell")
Shell pathname:="notepad.exe", windowstyle:=vbNormalFocus
WshShell.SendKeys "^V", True
WshShell.SendKeys "^(+S)", True
Set WshShell = Nothing
こんな感じで回避した 実際は3行目に
Application.Wait Now + TimeValue("00:00:02")
を入れてる。メモ帳が立ち上がってしばらくしないとメモ帳自体がSendKeysを受け付けなかったので。 ちなみにメモ帳の受付開始のタイミングがWindows 10と11とで違っていて、
Wait Nowは11に対応するための処置。 やはり、メモ帳の受付開始のタイミングがWindow10と11では違うよな
俺は新メモ帳が嫌なのでサクラエディタでやる事にした
どちらにせよwaitは必須だけど もしかしたらタブ形式を使用停止すれば一緒になるかな? テキストファイルなんて直接イジれば良かろうなのだよ
WordやTextBoxなんかもあるし VBAでSendkeysは使うな、が鉄則
機種・環境依存、送るタイミングの遅延等など、開発時どんなに検証して安定させたつもりでも、利用者の
機器構成・起動させている他アプリとの相性・アプデ・えtc で容易に不安定に成る
不安定だけならまだしも、思わぬアプリに予定していないキーを送って誤動作の事態に陥ったりまで
自分だけで使うなら兎も角、他のマシンでも使う可能性が1_でもあるなら、それは以降のメンテ対応に
頻繁に追われる要因を埋め込んでるも一緒に成り果てる 楽で便利を求めてムダな苦労をする
ネットに繋いでいないスタンドアロンとか、ごく限られた利用環境とかならまだしも
って、15年ぐらい前にタガミ君が言ってた それ以来ボクはその教えに従ってる 別のアプリをコントロールしたいならAPIを使え
ウィンドウが開いたかどうかもAPIなら確実にチェックできるし、OSやパソコンの性能が違ったり、途中で誰かが触っても大丈夫なように作れる
それこそメモ帳を起動して文字入力程度ならぐぐればいくらでもサンプルが出てくる sendkeyで苦労した層からしたら全力回避だな
昔は情報も技術も無かったから使ったことあったけど、今ならRPA(使えるなら)とかもあるし、ウィンドウが開いたかwinapiでも確定できるし Officeスクリプトとは是如何に?
VBAから移行?
Power Automateとは違うのか? 外出なんかする暇あったらパソコン触っていたいんでしょ?
他に興味沸かないもんね 投資のツール作ってるので今はムリ
山の上の方の桜が散るまでには見に行くつもり 外に出なくても窓から満開の桜が見えてる俺は勝ち組ってことでよろしいか? >>896
うちも窓からと車で走ってる土手にズラッと並んでるけど、マジマジ見るのは遠くへ出かけて見る桜だけだな じゃあアレか?俺がお前らの頭を引っ叩いて、「キモヲタみたいにパソコンばっかやってねえで外の桜を見てこい!」って言えばどうなるんだ? >>899
フッそいつは残像だ、お前の力はその程度か、ならば桜と共に散れ って言う >>899
はあ?そんな事したらぜってー許さねえよ 関数や機能で出来るならその方がいいけど繰り返しや一括処理でVBAに勝てるわけないのに
なんじゃこりゃってくらいものっすごい長い数式をセルに入れてドヤられるのもイライラする >>904
マクロ仕様の警告出る出ないは大きく違うから仕方ない LETのような長い計算式を見やすくする機能はどんどん追加してほしいよね
画面幅超えるような式見るとちゃぶ台ひっくり返したくなる いまだにちゃぶ台なのかあ なんかちょっと切なくなった 和式生活送ってたらちゃぶ台くらい普通だろ?
と思ったら脚たためないとちゃぶ台とは呼べないのか
うち掘りごたつだから座卓と呼ぶらしい
勉強になった ヒーターが出っ張ってて足がみすぼらしかっただけだよな >>909
それはGoogleスプレッドシートの話とごっちゃになっているだけだろうな >>917
あなたは今のコタツを知らない
使えるの意味が違う 布団をはぐると、コタツとはわからない、テーブルとしてまったく違和感なく使えるデザインになってる 関東でも内陸だと座卓は冬はコタツになる。
まともな座卓もない家に育ったのかな? ヒーターが部分が出っ張っているコタツなんていつの時代のコタツだよw
安物を使っていただけなのに、いまになってそうではないものがあると気づいたのか? 自己流で課内のデータ処理システム作らされて15人規模で共有してたけど
他部署にまで配布すんじゃねーよ
僕のデスクトップのデータが処理出来ないんですけど?とか内線電話きてキレそう >>922
何コタツに必死になってんだか
あ、そういうことか。可哀想にw 座卓がないような家庭だったんだろ
コタツのイメージが小さくて安いものだった貧乏家庭だったのは馬鹿にしているわけではないが、ものを知らずに最近は、最近はと言い出したら、高齢者の仲間入り。 大きなテレビとコタツが必ずあった時代は平成で終わり
最近の家庭はどっちも買わないって知ってた >>926
コタツじゃなくて座卓だ
安いコタツをコタツと呼ぶのはかまわないが、座卓もコタツが多い
狭い家に住んでいると大きなテレビはそもそもいらない。立派な座卓もいらない
冬がさほど寒くない地域と札幌なみの気温になる東京都や埼玉県の内陸は、室温を上げる暖房は非効率すぎてエアコン暖房はやらない。
都心のオフィスビルも床は温まらない。不動産屋が語るイメージと実際は異なる。 度を超えた長い式、エラーになってる時あるからもはやお手上げ。
どこから取ってきたんだと言いたい長い式ね Microsoftが作ってるアドインの「Excel Labs」の導入をおすすめします。
数式機能が入ってて、各種検証も使えます 結構マルチな機能でかーなり便利な出力システムをVBAで作ろうと思ってる
具体的なイメージは全くないけどすげー!ってレベルのもんを何とか作りたい >>932
今一部でブームな投資系はどうだろ
投資先の分析、複数口座をまとめて管理などあれば便利
複数証券会社、銀行またがってこれらを統合活用、管理できるのは無いと思う
マネーなんちゃらが一部まとめだが完全じゃないのよね
すでに複数先で投資してないとモチベ上がらない(検証できない)だろうが >>933
ごめん、そんな高尚なもんじゃない
分析職場で色んな機器からピコピコ出てくる色んな種類のExcelやcsvのデータをシュババって類別して計算させて社内サーバーに累積させていくような
専用システムっぽく作りたい
ユーザーフォームにボタンを何個も作ってそこで全部制御出来るみたいな
ここだと自分の仕事を楽にする小技として作ってる人が多い?
複数の機能を追加して課や部で当たり前に使われてるツール作ってる人いるかな? >>934
作ってる人も作れる人もいるでしょ
ポイントは色々あるけど、仕様をまとめてくれる人が必要
難しすぎる構成にしないで、別の人でもメンテできる範囲にしとかないといけない
これがなかなか難しい >>934
分析なら power queryや Access DB使ったら楽なのにと思っても、使える人はほぼいない
もし社内でoffice365使ってるならAccess使える
これ使えるようになるとめちゃ便利なんだけどね
(DB機能はもちろんレポートが優秀) >>936
パワークエリやアクセスは無理なんだわ
俺ももうおっさんだし勉強する脳がない
データベースってほどじゃなくあくまで別のワークシートに出力させたり計算させたりの処理がメインで値は少しずつ蓄積されてくだけ
ということでVBAで勘弁してほしい
一部アクセス使ってるのも上司がエクセルに統一すると言うてる
おーこれすげーじゃんやるじゃん
レベルのシステムをVBAで作りたい ユーザーフォーム至上主義おじさんだからとにかくこれを制御パネルとして専用システム、専用ソフトっぽく作りたい
あと自分がいる時はアメーバのように組み替えて直して要望があればすぐメンテも出来るように作るけど自分がいなくなったらゴミになっても全然構わない
別の人が見て直したきゃ勝手に直せスタイル
かなり職場を効率化させようと野望を企んでる その、分析機器から出て来るデータファイルって、大抵はメーカーが指定したマシンに繋がってるとかで
「ネットに繋げないでください」みたいな制限無い? アプデのせいでアプリが誤動作するとかいう理由で
繋いだことに依る故障やエラーは保証外です なんていうのも稀によくあるんだけど
そういう縛りが無ければ、分析結果をサーバーの特定領域にデータ転送して、あんなことやこんなことを
するのは容易だと思うけど、その縛りのせいで已む無く部署別に単独で処理するっきゃない、という現場が
多いような気がする 気がするだけだけど それと、そういった機器は結構高額なものが多くて、会社から買い与えられた段階で何だかわからないけど
得体の知れない特権階級意識みたいのが芽生えてしまって、おれさまと俺様が許した奴にしか、ぜってー
触らせねえ!なんぴとたりとも近付く事すら許さねえ!がるるー に陥って、にっちもさっちもいかなく
なる場合も有ったり無かったりする 上の方の根回しが出来なきゃ絵に描いた餅(画餅)に終わってしまう
誰もが容易に扱えるように成ると、自分の立ち位置がヒラに逆戻りしたような気にでも成るんだろうか
まぁ、それは、システムを制作する側にも言えることだけど >>939
社内のセキュリティも糞厳しいから出力されたデータのみ通信可能なよう申請も出して運用してる
仰る通りでメーカー機器のPCはOSアップデートないし基本スタンドアローンだね
そのPCでは基本分析ソフトしか運用するな、他の事やったら保証できないと言われてるけど出てきたcsvの吸い出しは大丈夫ですよと言われてる
だからVBAは別のPCでやる
csvデータの複数の情報を条件によって分岐処理して社内サーバに400くらいあるワークブックに入れていきたい
csvを魔術師のように華麗に確実に処理させたい
ただ計算とかあってどうしたらいいのかまだまださっぱり >>937
>値は少しずつ蓄積されてくだけ
>一部アクセス使ってるのも上司がエクセルに統一すると言うてる
蓄積されているデータ扱うならDBにしとくのが普通と思っていい
excelでDBもどきのロジック組んでも、やらなくていい労力使ってるだけ
メンテ性も落ちる
今のアクセスのツール?がDBに相応しい処理ならエクセルにするのは愚の骨頂
ムダに移行後ツールを新規に作って、さらにDBの使い勝手、発展性を全部捨てる行為
まあそうは言ってもリーマンはしょうがないのもわかる
>おーこれすげーじゃんやるじゃん
>レベルのシステムをVBAで作りたい
スゲーのはまずメンテが難しくなると思ったほうがいい
スゲー=メンテが難しくなっても知らん
なら止めない(それっぽいこと書いてましたね)
スゲーのを作るんじゃなく、適材適所でエクセルもパワークエリもアクセスもそれぞれ相応しい場面で効率的に使えるジェネラリスト(大げさ)を目指す方がよっぽどマトモ(あるべき姿)です
これらを駆使したシステムこそ真のスゲーシステム
(IT関連社員からの理想論でした。無理せずできることやりましょw) >>944
正確には元IT関連でFIREして西の方の田舎でノンビリ
近くなら昼飯交通費でアドバイス行けるんだけどね >俺ももうおっさんだし勉強する脳がない
パワークエリーってクエリーって付いてるからAccessのクエリー(SQL)みたいなもんだと無視してたら違ったw
これ↓見て、便利に使えるとこあるじゃんってわかったのよね
そこから活用するようになった
(まずはexcelの範疇ですし)
とりあえず11章全部目を通してみて
おぉ~ってなるとこあるはず
【初心者向け】パワークエリ入門:ETLツールを使ってエクセルデータを簡単に整形・統合しよう!(1/11)
https://ittrip.xyz/soft/excel/lesson1#google_vignette 重複起動させないコードを作成してみた。自己流です。
これで、上手くはいってるようですが、
皆様はどのようにコーディングしてますでしょうか?
Private TTT As String
Sub 四角形角度付き1_Click()
Dim dt As Long
'''重複起動チェック
If TTT = "" Then '初回での起動時(つまりTTT = "") では、重複起動チェックしない。
Else
dt = Abs(DateDiff("s", Time, TTT))
If dt < 60 Then ''''重複起動チェック 60秒内の起動は断固阻止!!!
MsgBox "60sec以内に重複起動∴重複した処理中断!あと" & CStr(60 - dt) & "秒 待ってネ"
Exit Sub
End If
End If
TTT = Time
'''本処理
〜ファイル書込みがある少々重い処理 60秒位かかる〜
End Sub 年齢なんてただの値 勉強はいくつになってもできる。 >>947
それ二重起動が問題なんじゃなくて、本処理という部分の実装がおかしいんだぞ?
ファイルの読み書きを同じフォルダ、同じファイルでやることがおかしい。 >>947
そもそも本処理が非同期というか、別スレッド、別プロセスとかになってないと…
そのメッセージ出せるか?出てるのか?
それと、クリックしてはいけないのなら、そもそもクリックできないようにしておくのがbetterなUI
(仕様は詳しくわからんけど)
ボタンenableをFalseとかにしておく MsgBox "60sec以内に重複起動∴重複した処理中断!あと" & CStr(60 - dt) & "秒 待ってネ"
はでる。
ちなみに、図形(オートシェイプ)をクリックで
Sub 四角形角度付き1_Click()が起動する仕組み
10秒ごとに図形をクリックし、その為にmsgboxの[OK]を
10秒未満でクリックし続けると
「あと50秒まってネ」
「あと40秒まってネ」
「あと30秒まってネ」
「あと20秒まってネ」
「あと10秒まってネ」となり
そして、その後は本処理実行できるが、また
「あと50秒まってネ」
「あと40秒まってネ」
「あと30秒まってネ」
… となる。かなり忙しくクリックしまくればだけど >>951
その「あとn秒まってネ」を出っ放しにしといても本処理は止まらず動いてるのかね? 海外赴任で職場を去った前任者女性のコード見て新データに合わせて改良してるけどコメント丁寧で見やすいなぁ
俺はこんなにわかりやすく次世代に引き継げるだろうか >>952 鋭いご指摘ありがとうございます、
「あとn秒まってネ」を出っ放し中は、本処理は止まってる模様
「あとn秒まってネ」の[OK]をクリックし
「あとn秒まってネ」の表示が消えると本処理は再開となりした 「あとn秒まってネ」の意味は
❌ 本処理が完了が、あとn秒 ではなく
⭕ ボタンクリックするのは、あとn秒 の意味です。
MSGBOXの表示は、
ドンドンクリックするな、あとn秒後にクリックしろーー
という 旨の変更で検討します。 面倒でなく、本処理が止まらないのを優先なら
図形(オートシェイプ)自身、またはその横に「h:n:sくらいまで実行中」のように書いて、クリック時の処理は実行中フラグONなら直ちにexit sub
(クリックに無反応。書いてあるのだから無反応で構わない)
本処理終了で↑のメッセージ消去とフラグOFF
メッセージ書くとこ無ければ、メッセージ出すだけのuserFormを作成して表示
これで表示するだけなら本処理は止まらない(このForm表示で少しつまずくかも)
クリック時の処理は実行中フラグで……は、最初のと同じ
本処理終了でForm消去とフラグOFF
いまパッと思いついたのはこんな感じかな >>956
図形クリックしてから「ダメだよ」って示すのではなく、「今クリックしてもムダよ」ってユーザーに予め示しておくのがBetter
本処理が例えばもし30秒で終わったら、直ちにクリックできるようにもなってないといけない
90秒かかってしまったら、それまでクリックで本処理に突入してもいけないだろう(多分) 本処理終了の判定が出来ないから60秒なんて糞みたいな判定をしているんでしょ
何故出来ないのかは本人にしか分からないから何も言えないけど糞 俺の塩(カップ焼きそば)を美味しく作るための時間が60秒なんだから仕方ないだろ おそらく本処理にdoeveがあるからクリック反応するんだろう
本処理止まるから終了は判定可能
時間を予め決め打ちはマズイ
ステータスバーに進捗出すのも手
しかし10万ループずっと更新するのもムダ
この場合は1000ループに一回更新とかにする
多数の個別処理がある場合は、ステップにバラつきでるけど個々に進捗出すしかない
xx処理中…(33/123)
とか エクセルの学校に相談しよかな
面識もない俺の師匠があそこにはいる Acrobatのライブラリを使って
PDFに文章追加したいのですが、フォントに CODE 128 の指定ができません
以下のページを参考にコードを書いています
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11140444616
field.textFont = "CODE 128"
field.textFont = "CODE128"
どちらもダメでした
ご存じの方いますか? OutlookVBAでメールの添付ファイルをスレッドごとで別々のフォルダに格納したいのですが、良い方法はありますでしょうか。
現状“RE:”を無視する形で同一件名をフォルダに落とす形で考えたのですが、色々と無理がありそうです‥ >>966
フォントインストール済みです
Acrobat で編集してフォントを CODE 128 に手動で変更すれば
バーコードになります >>965
色々との中に日本語説明力も入れといてね >>967
「Code 128」は試した?CODEじゃなくてCodeな
それがだめだったらフォントのPostScript Nameをちゃんと調べな >>968
結局無理ということですか?返信メールにつくRE等の挿入文字は表記に揺らぎがあったりするので、、 課の改善テーマがVBAによる一元管理なんだが俺しか作ってねぇ
出来た?じゃねーんだよ
あ~それ組めば出来るっしょみたいな奴らが何にもやってねー >>973
課のテーマならまず課長が組めるようにならないとお話しにならない
もし課長が元々組めるなら、お前ができるからって押し付けんなって反発はされるだろうが、努力して組めるようになったんだから反発するのは「改善の努力したくない」と宣言するようなもん
やらないやつを追い込め。今や小学生からやることだからバカ扱いで構わない >>967
実行するとエラーになる?
スルーされる?
もう忘れちゃったけど、
Javascriptでやらないと反映されないのが何かあったな なぁ、盛大な野望持ってると前に言うたやん
言われたからパワークエリを少し調べて見たけど全くわからん
access、VBA、パワークエリ
の関係性をマジで噛み砕いて教えてほしい >>977
ありゃ、難しかったですか…
閃かなかったならパワークエリーが便利に使えるところが無いからかもしれない
使えるとこないならもちろん覚えなくていい(しかしこれから使えるとこあるかもなので何ができるかは記憶に残しておこう)
例えばexcelシートのデータをAccessのリンクテーブルで使おうとすると、一行目が項目名でないといけない
だけど、個人的にシートにまとめたデータとか、上の方に表題や解説を書いてたり、表は3列目以降にあったりする
それらのムダな情報を除去して、必要な表データを取り出せるのよ。元のシートはそのままに
純粋な表データになったらAccessDBのリンクテーブルとして使える
(リンクテーブルとは、普通はDB内に作成するテーブルと似たものをexcelのシートの表データで代替するもの。シートの値を変えるとAccessからもその値が見える。DB内に読み込んでしまうと、最新を常に読み込まなくてはならなくなる=不便)
続く >>977
DBは例えば商品テーブルと売上テーブルがあったとして、それらから共通の商品コードを紐づけにして、関連データを得る感じ
これらはそもそもDBとはどういうときに便利に使えるかをまず知らないといけない
自分の仕事(分析)に使えそうかをそこで判断してからです
まずは1つのテーブル(データ)から始めることもある
例えばシートのフィルターを使うと思うが、各項目間の条件はandでしかできない
値がxxで始まるという条件は2つしか書けない
などの制限がある(だよね…)
Accessのリンクテーブルにするとクエリー(SQL)で自在に条件指定できる
これに当てはまれば、これだけでもAccessにする価値ある
(入り口は簡単なことでいい。使えそうなネタが無いのに勉強もする気起きないだろうし)
私が新しいことを勉強するときはまず必要な(便利になる)ネタを探す。見つかったら勉強始めること多い >>979
前にも書いたけど、パワークエリとAccessのクエリは別物です
自動車と言っても、エンジン車、HV、EVとか動力機構が別物みたいなもん
共通なとこは、元のデータをゴニョゴニョ加工して別の形で取り出す仕組み、な感じ >>979
AccessのVBAはexcelと似たような立ち位置
シンプルなことならVBA使わなくてもできる
しかし規模が大きくなったり便利に使おうとしたら必要になる
もちろん覚えることはAccess固有のことのみで可。しかし、多分使えるようになるのは簡単ではない
excelのブック、シート、セル、シェイプ等がどう関連してるかというオブジェクト関連図があればほとんどの操作は簡単?なように、Accessも関連図探してくれば想像の範疇に置けるとも言える
VBEでF2で出るオブジェクトエクスプローラ(だっけ)をよく活用してるなら、効率よくVBA書けるとも思う うーんムズい
超膨大なデータを扱う訳じゃなく多少の効率とか最適かは置いとくとぶっちゃけVBAで強引に何とかなっちゃう感じのものかな?
数台の分析機器がそれぞれの独立したワークブックの下の行にデータが1行ずつ累積されていく
俺のVBAはそれを開いてシートコピッて自ブックに持ってきて不要な行を削除して列を変えるの作っただけでね
実行すると自ブックに複数のコピられたシートが集まる
同シート内でもサンプルの種類がまちまちにあるそいつらをサンプル毎に分かれてるブックにデータを飛ばしたい
うーんむずい accessは正直使わないんだよな
使用頻度なんて99.999%でexcelだし
従ってaccessは脳から消去
パワークエリを引き続き覚える Accessは1ファイル2GBの上限あり
これに引っかかってUnion Queryで動きが取れなくなり
Excelのデータ モデルに戻ったでござる >>985
1ファイル全部入っている必要はない
テーブルは別出しでもいいし、デカすぎるテーブル一つを外だしでもいい
それよりテーブルデカくなれば、SQL server express(まだあるっけ?)
無料でやりたいなら、postgre(綴不明)とかもある >>987
2GBはファイルサイズの話だから仮にクエリに1バイトも使ってなくても上限は迎える
他人の脳みその性能気にする前に頭の上の蠅を追うべき >>989
全部入りで1GBとか超えてきたらテーブル別出しを検討していい
(これからもデータ増えていくなら)
そうするとテーブル以外のフロントエンド部のファイルがコンパクトになって、それによるメリットもある >>990
excelに行くのがありえない大きな間違い 何故Excelの最下行を移動させてるし たぶんそれぞれの端末で個別のExcelファイルに取り込んでるんだろうけど、
サーバー側にひとつだけExcelファイルを設けて、そこにそれぞれの計測器からのcsvを入れる方が一般的では
個別のファイルの列(項目)のMaxを設定して、計測器ごとの生データから必要な列に割り当てるようにしたほうが
百倍楽なはず まさか、計測器の分析アプリがExcelに直接データを埋め込んでくれてる訳でもあるまい
難しく考えるからより面倒に成る Think easy シンプル・イズ・ベスチャ 10年間での期間最大とか
いくつかの項目での前時間コマとの差とか
10地点合計の時間軸串刺し合計とかやるので、
Union Queryせざるを得なかった >>992
データモデルはデータの持ち方でしかなく、
Accessからアクセスしたっていいんだぞ 2026年にサポート終了するので、
Access使ってるところはShare PointとかPower Appsに移行しろ
つうことかと >>993
最下行に移動させてるわけじゃなくそういう仕様でcsvでもない
300行のデータ、追加されて301行のデータ、追加されて302行のデータ
と設備が累積データを上書きしてく
そのブックは弄れないから最新の累積データだけ常に引っ張る
今のところは >>995
EXCELのデータモデルをkwsk
accessのデータモデルではだめな理由も このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 323日 5時間 42分 3秒 5ちゃんねるの運営はUPLIFT会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《UPLIFT会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
4 USD/mon. から匿名でご購入いただけます。
▼ UPLIFT会員登録はこちら ▼
https://uplift.5ch.net/
▼ UPLIFTログインはこちら ▼
https://uplift.5ch.net/login レス数が1000を超えています。これ以上書き込みはできません。