Excel VBA 質問スレ Part54
■ このスレッドは過去ログ倉庫に格納されています
ExcelのVBAに関する質問スレです コード書き込みや作成依頼もOK 最近プロによる書き込みが多々見うけられますが 彼らに絡むと話がこじれるので質問したい方は適当にスルーしてください ※前スレ Excel VBA 質問スレ Part53 http://mevius.5ch.net/test/read.cgi/tech/1524823358/ >>324 VBAスレで吠えるトンスルランドの寄生虫WW >>323 そしてセル数のぶんだけ重くなる。 規模によるけどね。 色付けても検索とか抽出とか面倒なだけだから自分なら記号でも埋めるかな。 色付けるとすれば視認性をあげるためのオマケ。 わかったつもりになってUIを根底から否定してしまったプロさんw >>317 開始時刻から終了時刻まで一定間隔でマクロを実行するには? http://www.max.hi-ho.ne.jp/happy/YNxv9c134.html を使って >>321 のDir関数を使って指定のフォルダをチェック みたいな感じで >>317 こんな馬鹿に管理させる馬鹿会社があるのか アマチュア事務員VBAerしかいない中小企業なんてこんなもんでしょう >>326 >そしてセル数のぶんだけ重くなる。 ? 条件付き書式だらけのワークブックなんて開くのもしんどいわw >>332 条件付き書式「だらけ」? ひとつで十分だよね? >>333 ああ、>>323 は>>317 の個別の事例に特化した話だけをしていたってわけね 俺は(恐らく>>326 も)てっきり>>323 は一般論を話しているものと思ったよ 「本題とはそれるけど」って書いてあったからかなあ 一般論としてはセルの背景色は条件付き書式で塗りつぶすべきなんていう馬鹿な話はないから >>334 そりゃだって>>317 の画像で言えばB列に条件付き書式を設定すれば十分だし、 色はおまけで値で管理したいだろう? >>334 Excelの操作(データ整理など)で、 条件付き書式でセルの文字色や背景色を変更するのは一般的なことだと思ってたんだが、どういう点がバカなんだろ? アマチュア事務員さんの一般論とプロの一般論は異なるということだね プロはセルに一個一個色を設定するなんてめんどくさいことはしないよ 状態が1つ変わるたびに別の状態を同期させるようなコードは手続き的で非常にメンテナンスしにくい まずは問い合わせで解決することを考えよう これを覚えてまた1つ賢くなったね事務員さん 今のエクセルは下手なVBAerが組んだらゴミの山生成するから気をつけたほうがいいのは間違いない >>338-340 馬鹿は何も考えない方が良いんだってよプロさんw >>336 それも度を過ぎると再計算が走って重くなるからVBAで色を塗ってしまったほうがいいという一般論 度を過ぎたときにおこる問題を回避するのが一般論という その程度では重くならんだろ どんだけ巨大なモンスターブックだよ 重くなってから考えればいいと思うよ 仕様で決めたこと以外は極力手を抜こうぜ 金にならない仕事を勝手にやって問題起こして仕事増やす奴 FileCloseとSub Procの寿命について質問です。 作業中のSafe Backupを作成しようと思い、Shift+Ctrl+Sに @ "_01" で終わるファイル名を、"_00" でリネーム保存 A 続けて "_01"でリネーム保存して元のファイルに戻る といった動作を割り付けています。 この@の直後の時、"_01" はプロセス上にいないと思うのですが、SafeBackup は最後まで正常に走り、"_01" ファイルがプロセス上に戻ってくるのが不思議です。 内部的にはどのような動きになっているのでしょうか。 期間にあったものを抽出する検索ソフト作ってて、optionボタンそれぞれ1年前〜今日、2年前〜今日、全期間ってあってdateadd関数計算して全期間以外はうまく出来るのですが全期間ってどう計算したらいいですか? >>352 ネタ? その程度の事をここで聞かないと分からないの? 嘘だろ? 非建設的発言は良くないでしょ。 >>352 でも質問に情報が全く足らないな。 検索されるものは何なの? 別シートに日付のついたデータがあって、そこから検索するとか? DateAdd使ってるのも良くわからないな。 全期間ってのは他に検索条件が無ければ全データになっちまうと思うんだが。 >>354 テキストファイルから一列ずつ検索。 instr(1,strline,txtSrchWd) これてヒットしたら、スプリットで切って配列に入れて、(5)に入る日付と比べて正なら抽出したくてやってます。 現在の日付からそれぞれ1年、2年前は計算でうまく抽出出来ますが、全期間は一番古い日付調べておく必要があるんですか? >>355 全期間だから全部だろ、馬鹿なの? それとも前提条件を全部書かない馬鹿なの? 君vba出来るんでしょとか言われて簡単なプログラム作成任されて作ったけど管理めんどくさすぎん? 初めはここは数字しか入らんよて言われてたからisNumericだけ判定してたのに数字以外入れると止まっちゃうから漢字とか諸々の対応させられた そんな感じで他のinputとかアウトプットの要件がころころ変わる そして全然動かんねーとか言われるイラつく >>355 全期間ならば現在の日付からの計算は必要なく、一番古い日付を指定しなくともテキストファイルの最終行まで走らせれば良いのでは。 >>357 プログラムの仕様を決めるのはあなた あなたが使用者に対してルールに沿った入力を求めるのは当然 道具は正しく使われるから道具として機能するのであって、猿に道具を渡しても壊れて返ってくるだけ 会社の要求をどの程度受け入れるか、もう一度冷静に考えたらどうか 個人的には、猿には付き合う必要ないと思ってる >>357 人に使わせるような真面目なツールにVBAは無謀でしょ 品質担保しようとしたら凄まじいコストがかかる 自分しか使わない、数行で終わる、使い捨ての、エクセル操作に特化したマクロがVBAのターゲット >>307 一番簡単な方法はその都度オブジェクトブラウザで確認すること アイコン表示されているから一目瞭然 >>357 バカほど我儘な要求を平気でするからなぁ。で、「俺は忙しいからプログラムなんて覚える暇が無いんだ、暇なヤツはいいなぁ」とか吐かしたりさぁ。 俺は「お前のオツムに合わせてたらキリがねえわバカ」ってあからさまに言ってるよ。だいたい、数字を入力するところに平気で文字を入力して「何jこれエラーとかマジやってらんない」とか。 やってらんねえのはこっちだっての! 使い方守れない馬鹿も馬鹿だけど本気で業務システムを作ろうってんなら 誰でも使えるようにデザインする努力も必要 入力文字種を守れない馬鹿がいる環境なら自由に手入力させる余地を残すな とりあえずドキュメントなりマニュアルなりを作って 読まん奴まではフォロー出来ないとはっきり意思表示する そっから先は職場の人間関係の話なので何とも そういう人に使わせる前提のある程度しっかりした作りのアプリはエクセルみたいな非生産的なプラットフォームでは普通は作らないね エクセルは個人用のちょっとした処理をサクッと実行したい時とかに使うといいよ まあその個人用のちょっとした処理だと今度はPowerShellのほうが楽なんだけどな 帯に短し襷に長しってやつだ > そういう人に使わせる前提のある程度しっかりした作りのアプリ エクセルには無理なんやなく プロさんには無理なだけやんけw 言い訳だけは上手やねw下手やけどw VBAでUTF-8(BOM無し)ファイルを読み書きする最速の方法は何ですか? ADODB.Streamだと遅いしBOM無しにするための2度読み書きでさらに遅いし >>364 数字とか入力文字列の制限とかくらいはプログラム側でエラー処理するべきだろ。 >>367 程度にもよるが普通作る。 1回動かして終わりになる場合は作らんが。 >>369 アセンブラで最適化したDLLを作って読み込む >>369 nkfでBOM付けて処理して、ポスト処理で外すw 2007から2016に変えたらCSVの処理速度なんかがかなり低下した気がするんですが気のせいかな? >>369 コードページを明示的に指定するdllを作るのがいいんじゃないか? 俺はそうしてる。自動判定なんていらん。(言い過ぎ?) >>374 CSV言うても読み方も書かんとわからん。 workbook.openなんかはバージョン上がるにつれてどんどん遅くなってる。2003までは一瞬だったのに・・・ >>369 こいつ程度の頭でもできる最速の方法なのか? そもそも最速の定義は何なのか。同一ハードウェア上でという前提条件があるのかないのか等々 馬鹿は考えもなしに「最高とか最速」などの用語を使いたがる >>376 あー、基本workbook.openで開いてます… ここで結構時間かかってるのかな あと、セルの数字を一つ一つ計算したり置き換えたりって処理もかなり遅くなってるような 配列でまとめてとりこんで配列で吐き出すって感じの方が速いのかな まだ色々と確認中なのですがいろんな物がこれまでよりやたら遅くなってる気がして… 表計算ソフトなんだかた視覚効果なんかいらないと思うんだが何故かMSはそういうのに拘りがあるようで それいったら殆どの機能が不要になるけど 表計算の上に無秩序に機能を拡張したコンセプトのよくわからないソフト 素人にはこういうのがいいんだよ >>380 スマホタブレット世代の若いヤツはそれをいいとは思わないだろ。 誰かwbsのイナズマ線を自動で引いてくれるソース書ける人いない。。。? どこから初めていいかすら、分からない。 >>382 まずは息を30分停める練習をしてください。 それができたら来てください。 >>382 1. WBSの入力サンプルを用意する 2. 1に基づいてイナズマ線を手動で書いてみる 3. 2に基づいてどういう入力のときにどういう出力をすればいいのか整理してパターン化する 4. 3に基づいてコーティングする 5. 4を動かして2と同様の出力になるかどうか確認する >>382 > どこから初めていいかすら、分からない。 流石にその状態だとこっちもどこから教えたらいいかすら、わからん Excel 稲妻線 あたりでググって適当なアドイン使ったほうがいいんじゃね? Project買えばいいのに これだからExcel陶酔者は困るんだ VBAなんだから、何はともあれマクロの記録からだろ。 VBAの本に書いてあるコードをひたすらパソコンに写経して実行してればVBAできるようになりますか? >>382 まずはWBSとイナズマ線の定義を明確化して 全てはそこからだよ 「イナズマ線」でググったらこんなの出ましたけど? イナズマ線を簡単に引くExcelマクロを作りました http://www.fin-itnews.com/entry/2015/08/12/031032 Sub イナズマ線描画() 'FreeformBuilderオブジェクトを宣言 Dim InazumaLine As FreeformBuilder '始点を設定 Set InazumaLine '以降の点を結んでいく '繰り返し用変数i Dim i As Integer '列の位置固定用変数 '上から下にセルをなめていく。0以外の数値ならイナズマ線を引く For i '数値以外はスキップ If Not () Then '0もスキップ ElseIf 'イナズマ線を引く(正の数なら>、負の数なら<) Else End If Next i '終点を設定 'イナズマ線を描画 '見た目の編集(青の太線) >>386 Redmineでもなんでもいいけどオープンソース使えばいいよ ビジネスマンなら無駄な出費は最小限に抑えなきゃ イナズマ線でほんとにイナズマになるのってまずいんだから 直線引いとけばいいんじゃいないかな 1.シェイプの直線を挿入するのをマクロの記録で記録する。 2.記録されたコードの中で始点と終点と思われる部分を適当に変えて実行してみる。 3.2で得られた任意の2点で直線を引くマクロを2回実行し、その時1回目の終点と2回目の始点を同じ座標にする。 4.3の実行結果後、マクロの記録で2つの直線をグループ化するのを記録する。 5.n個の直線を引いた後で一度にグループ化するように処理を変更する。 6.n+1点の配列を引数にして上記を実行するようにプロシージャを作成。 マクロの記録は余計なコードが大量に含まれるから関係ないものを削除して実行を繰り返すと良いコードになる。 >>382 まずは全裸になって町を駆け抜けてくさい (´・ω・`)b 特にエラーがあるわけでもなくブレークポイントを設置しているわけでもないのに 黄色い矢印が出て止まるのってなんなんでしょうか 必ず起きるというわけでもなく出たり出なかったな上に続行ボタンを押せば特に問題もなく終了するので 発生原因がまったくわからないのですがこれバグかなんかですか? @2013 >>400 必ず止まるわけじゃないだろ。 バグかどうか分からんけど、わりとよくある。 PC再起動で直る。 ウィンドウフォーカスが外れるとオブジェクトが使えなくなってしまい止まるコードは良くある。 コーディング上の問題 >>400 「VBAProjectのコンパイル」を実行してからF5押してもダメか? たまーに同様のケースでこれで解決する場合があったんで。 >>400 エラー起きた後に続行すると動くって事は 画面が完全に表示しきれてないのに読み込もうとするからじゃない? 初心者ならエラー起きる箇所の前にwait入れる プロなら完全に表示しきったら次の処理に行くようにする >>400 多分バグ ブレイクポイントを設定したままセーブして 立ち上げ直すと起こる奴のことじゃないかな? そこにブレイクポイントを再度設定して 外してやって起きるか試してみ? セル内にアルファベットがあるかどうか判断する関数おしえて >>410 VBAじゃなくて関数でいいの? そしたら>>411 に聞いたら? きっと親切に教えてくれるよ なんでエラーが出たことになってんの? 全く理解出来ん。 Sumifsの引数って内部的にどうなってるんでしょう? ABABAB…って繰り返すので、 Byval何とかAs何とかってのが延々並んでいる状態? それとも繰り返し用の書き方がある? 2007でオブジェクトブラウザでみると、ずらずらと引数書いてあるな テーブル1に、row数が同じテーブル2を合体させたい データ、書式設定、条件付き書式やドロップダウンリストごとテーブル1に合体させたい。 どうやるのが無難ですか? 全く作り方が思い付かないからご教授お願いします。 @入力の所に数字を入れる。 Aup or downに数字が入れる。 例 入力45 up1 down2 Bupとdownを計算 -1 C入力45がコードのCとDの間で下のDとしてBで計算された-1上を選択。 D判定が×だから○まで上に上がりBを選択。 ※計算が+なら下へ、判定○ならその左のコードを取得、×なら○まで下へ。 ※上下に移動していって該当がない、移動なし、判定×ならエラー。 こんなのを作りたいんですが上下移動がどうしたらいいか分かりません。 https://i.imgur.com/rZ7HQjn.jpg >>420 ループが書けるなら何も難しいポイントはないと思うけど? >>419 テーブルで結合せず普通にRangeでくっつけてテーブルにすれば良いのでは?そっから書式はどーにでもなる ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.1 2024/04/28 Walang Kapalit ★ | Donguri System Team 5ちゃんねる