Excel VBA 質問スレ Part54
■ このスレッドは過去ログ倉庫に格納されています
ExcelのVBAに関する質問スレです コード書き込みや作成依頼もOK 最近プロによる書き込みが多々見うけられますが 彼らに絡むと話がこじれるので質問したい方は適当にスルーしてください ※前スレ Excel VBA 質問スレ Part53 http://mevius.5ch.net/test/read.cgi/tech/1524823358/ >>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でくっつけてテーブルにすれば良いのでは?そっから書式はどーにでもなる >>421 Do while Not EOF(filNo) Line Input ♯filNo,strtxtLine ReDim Presrve arrline(cntLine) cntLine=cntLine+1 Loop 実際はこれでtxtファイルを読み込んでから1行ずつ見ていって判定処理したいんだけど、無理かな? >>424 無理じゃない テキストファイルを配列に読み込んで処理すればいい 配列はワークシートのセルとまったく同じ構造なので、ワークシートで動くプログラムが作れたらRange (Cells)の部分をArray型に置き換えるだけ i=1 range("i:2").select でエラーが返ってくるのはなぜなんだぜ? 変数を含んだ行をコピペしようと思って、これでシンプルにできると思ったらできなかった 平成30年のつもりで H30 = 2018 とかやってた時に Range(“A30:H30”)が”A30:2018”と解釈されたら困るだろ VBA昨日から始めたんですが 小数点第1位の繰り上げ処理がしたいけどわかりません cells(1,1)=cells(1,2)/3とか簡単なやつをひたすら書いてるだけなのですがどうか力を貸してください >>430 worksheetfunction.roundupで良いんじゃないの? >>431 すいません、切り上げです。 >>432 マクロの結果が123.1だったら124にしたいってことです >>433 切り上げたいセル=そのコードでいけますか? worksheetfunction以外ないでしょ。 わざわざvba使う意味がよく分からないけど。 切り上げ程度の簡単な処理でも、VBAだけで全部作るよりWorksheetFunctionの方が速い? 知らん実際に作ってみろよそして共有してくれ 家じゃexcel無いしめんどい めんどいのに意味のないレスはしたくなる馬鹿のジレンマ ジャップ企業「わざわざ車輪の再発明をするこたぁねー」 アップル「iPodでウォークマンを再発明しました!」 アップル「iPhoneで携帯電話を再発明しました!」 アップル「iPadでタブレットを再発明しました!」 iPodがウォークマンの再発明としか思えないから 日本からああいう製品は出なかったんだろうな アップルの成功はAppStoreをオープンにしてアプリを爆発的に増やしたこと 日本企業はオープンにせず独自企画が好きだもんな iPodの頃なんて大して注目されてなかったし どこがじゃ。 全然オープンじゃねえだろ。 iPodのインパクトだろ。 こういうものはガジェオタが飛びついて一般に浸透してくから、最初は一般に注目される必要は無い。 デザインの力は大きかった。 条件付き書式って名前とかタグみたいな個を識別できるようなプロパティないの? 条件にごちゃごちゃ付け加えると重くなるからvba側で操作したいんだけど 特定できそうなところでなんちゃって判定するしかないのこれ ない上に知らん間に増殖する 全消しして追加がいいよ >>446 > ない上に知らん間に増殖する そうなんだよね 条件付き書式の整理とか統合とかのコマンドがほしいわ >>447 確かに欲しい。でも作ろうと思えば作れる事に気がついた。 追加されるとは考えられないしやるか・・ ACCESSのフィールドをExcelに転記するとき、 例えばそれぞれ 1 2 3 4 5 と入っているレコードを 下から3つを転記したい(3、4、5の順で)場合どのようにすればよいのでしょうか? CopyFromOrdersetでRowsMaxを3にすると1、2、3となり、下の3件3、4、5の順では転記できないでしょうか? SQLのORDER BYを使うと5、4、3の順となりなかなかうまくいきません。 どなたか解決策を教えていただけないでしょうか? >>451 https://msdn.microsoft.com/ja-jp/library/cc408450.aspx >コピーは Recordset オブジェクトの現在の行を開始点として行われます。 らしいから、現在行を3行目にしとけばいいんじゃない >>451 https://msdn.microsoft.com/ja-jp/library/cc408450.aspx >コピーは Recordset オブジェクトの現在の行を開始点として行われます。 らしいから、現在行を3行目にしとけばいいんじゃない >>452-454 早速にありがとうございます。 確かに転記後にソートでどうにでもなりそうですね。 できれば転記時にできればとおもっておりました。 カーソル位置を3行目にする事で解決はおっしゃるとおりですね。 ただ私の最初の前提が不十分な解説のため申し訳ありません。データが増えていった場合でも下から3つを取り出したい場合はどうすればよいか苦慮しています。 ExcelVBAのように、Offsetが使えたらデータが増えていっても下から3つだけを取り出すという風にできていいなと思うのですが。 >>455 topを使って馬鹿はいい加減に引っ込め >>455 現在行をn-3行目にしとけば良いんじゃない >>456 単純にtop取るんじゃなくて、descでorder byしてtop取ったやつをもう1回order byする必要があるんだが そんなSQLがすらすら書けるようなレベルのやつはこんな質問しないし もう一回order byは必要無いだろ。 Excel側で対処すれば良い。 >>457 こいつみたいに、後から出てきて回答してることをグタグタ書く馬鹿も来なくていいよ >>458 それが自分でできてりゃ >SQLのORDER BYを使うと5、4、3の順となりなかなかうまくいきません。 てな事にはなってないだろう マクロ・VBAの勉強がしたいです どのような方法で勉強を進めるのが理想でしょうか エクセルのレベルはVLOOKUPなどのメジャーな関数を使える程度のレベルです ちなみに会社員です >>463 何をしたいのか明確な目的が必要 楽したい!ってモチベーションがないと続かないよ トライ&エラーを繰り返すこと 教本だけでは身に付かないから、実践は必ず必要 vloookupをdisる様になったらエクセル使いとして一人前 >>463 今からプログラミングを覚えるならVBAなんて化石言語はやめましょう 言語的に近いC#がいいと思いますよ VBA程度の事は全て出来ますしもっと色々と出来るので推奨 体系的に勉強する価値なんてないよ やらなきゃいけないことをググって試してみての繰り返し プログラミングのスキルやセンスを磨きたいなら他の言語で学んだ方がいい >>463 こんなところで聞かなきゃいけない時点でもうダメだな >>463 VBAを覚えて何がしたいのか知らんが、仕事で活用するなら まず、エクセル関数をもっと覚えて関数で何とかできるようになりましょう 事務処理ならエクセル関数だけで大概のことはできる VBAが必要な場面はあまり無いと思う。せいぜいファイル操作くらいか すいません、processingについてのスレッドはありますでしょうか? 使いわけでしょ。 数千あるチェック項目の内、1日100個ぐらいずつをチェックしていき、その集計結果で1日の結果を関数で出し、更に1ヶ月のト―タルなんかを関数でやってたら重くてどうにもならなくなったりするし。 銀行でDBから取ってきたデ―タが辻褄があってるかを調べるなんて仕事をしたことが有るんだが、その為にシステム組んでる側の(と言ってもそいつが組んでる訳じゃない)奴がチェック用に用意したsumproduct多用ブックは酷かった。 触る度に5分とか10分とか待たされた。 VBAで組んだら一瞬になったけどね。 自動再計算を切るのも諸刃の剣だし。 プログラマじゃない普通の会社員がExcelを使うのにVBA勉強すんのは普通だろ。 なんで不必要なC#とかやらにゃならんのだ。 プログラマってほんと頭でっかちやな VBAって二十年くらいなんの進歩もないよね この言語を覚えて次に全く役に立たないじゃん キャリアアップの為にも意味ないよね ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.1 2024/04/28 Walang Kapalit ★ | Donguri System Team 5ちゃんねる