X



Excel VBA 質問スレ Part54
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2018/05/26(土) 20:37:37.74ID:Lty78diJ
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK


最近プロによる書き込みが多々見うけられますが
彼らに絡むと話がこじれるので質問したい方は適当にスルーしてください


※前スレ
Excel VBA 質問スレ Part53
http://mevius.5ch.net/test/read.cgi/tech/1524823358/
0331デフォルトの名無しさん
垢版 |
2018/06/16(土) 21:07:12.41ID:XHohijVT
>>326
>そしてセル数のぶんだけ重くなる。
0332デフォルトの名無しさん
垢版 |
2018/06/16(土) 21:08:34.68
条件付き書式だらけのワークブックなんて開くのもしんどいわw
0333デフォルトの名無しさん
垢版 |
2018/06/16(土) 21:19:39.41ID:XHohijVT
>>332
条件付き書式「だらけ」?
ひとつで十分だよね?
0334デフォルトの名無しさん
垢版 |
2018/06/16(土) 21:51:48.05
>>333
ああ、>>323>>317の個別の事例に特化した話だけをしていたってわけね
俺は(恐らく>>326も)てっきり>>323は一般論を話しているものと思ったよ
「本題とはそれるけど」って書いてあったからかなあ

一般論としてはセルの背景色は条件付き書式で塗りつぶすべきなんていう馬鹿な話はないから
0335デフォルトの名無しさん
垢版 |
2018/06/16(土) 22:01:21.03ID:XHohijVT
>>334
そりゃだって>>317の画像で言えばB列に条件付き書式を設定すれば十分だし、
色はおまけで値で管理したいだろう?
0336デフォルトの名無しさん
垢版 |
2018/06/16(土) 22:05:25.26ID:wwpjubpj
>>334
Excelの操作(データ整理など)で、
条件付き書式でセルの文字色や背景色を変更するのは一般的なことだと思ってたんだが、どういう点がバカなんだろ?
0338デフォルトの名無しさん
垢版 |
2018/06/16(土) 22:13:39.48ID:+7qeuaiQ
アマチュア事務員さんの一般論とプロの一般論は異なるということだね
プロはセルに一個一個色を設定するなんてめんどくさいことはしないよ

状態が1つ変わるたびに別の状態を同期させるようなコードは手続き的で非常にメンテナンスしにくい
まずは問い合わせで解決することを考えよう
これを覚えてまた1つ賢くなったね事務員さん
0340デフォルトの名無しさん
垢版 |
2018/06/16(土) 22:29:39.05ID:FpzMctyH
今のエクセルは下手なVBAerが組んだらゴミの山生成するから気をつけたほうがいいのは間違いない
0342デフォルトの名無しさん
垢版 |
2018/06/16(土) 22:43:30.84ID:Bzc+Z3iP
>>338-340
馬鹿は何も考えない方が良いんだってよプロさんw
0343デフォルトの名無しさん
垢版 |
2018/06/16(土) 22:44:27.40
>>336
それも度を過ぎると再計算が走って重くなるからVBAで色を塗ってしまったほうがいいという一般論
0347デフォルトの名無しさん
垢版 |
2018/06/16(土) 23:12:39.52ID:h5xcE8hP
>>342
なかなか釣れないね
0349デフォルトの名無しさん
垢版 |
2018/06/16(土) 23:52:20.14ID:IDYLbmOn
重くなってから考えればいいと思うよ
仕様で決めたこと以外は極力手を抜こうぜ
0351デフォルトの名無しさん
垢版 |
2018/06/18(月) 02:25:09.76ID:KIJFP7i7
FileCloseとSub Procの寿命について質問です。
作業中のSafe Backupを作成しようと思い、Shift+Ctrl+Sに
@ "_01" で終わるファイル名を、"_00" でリネーム保存
A 続けて "_01"でリネーム保存して元のファイルに戻る
といった動作を割り付けています。
この@の直後の時、"_01" はプロセス上にいないと思うのですが、SafeBackup
は最後まで正常に走り、"_01" ファイルがプロセス上に戻ってくるのが不思議です。
内部的にはどのような動きになっているのでしょうか。
0352デフォルトの名無しさん
垢版 |
2018/06/18(月) 07:11:35.78ID:teiB5Dus
期間にあったものを抽出する検索ソフト作ってて、optionボタンそれぞれ1年前〜今日、2年前〜今日、全期間ってあってdateadd関数計算して全期間以外はうまく出来るのですが全期間ってどう計算したらいいですか?
0353デフォルトの名無しさん
垢版 |
2018/06/18(月) 08:40:12.00ID:XqqBFg8U
>>352
ネタ?
その程度の事をここで聞かないと分からないの?
嘘だろ?
0354デフォルトの名無しさん
垢版 |
2018/06/18(月) 12:21:10.07ID:MeAHP2Rc
非建設的発言は良くないでしょ。

>>352
でも質問に情報が全く足らないな。
検索されるものは何なの?
別シートに日付のついたデータがあって、そこから検索するとか?

DateAdd使ってるのも良くわからないな。
全期間ってのは他に検索条件が無ければ全データになっちまうと思うんだが。
0355デフォルトの名無しさん
垢版 |
2018/06/18(月) 12:45:04.79ID:teiB5Dus
>>354
テキストファイルから一列ずつ検索。
instr(1,strline,txtSrchWd)
これてヒットしたら、スプリットで切って配列に入れて、(5)に入る日付と比べて正なら抽出したくてやってます。
現在の日付からそれぞれ1年、2年前は計算でうまく抽出出来ますが、全期間は一番古い日付調べておく必要があるんですか?
0357デフォルトの名無しさん
垢版 |
2018/06/19(火) 00:08:08.37ID:ndSRzvjj
君vba出来るんでしょとか言われて簡単なプログラム作成任されて作ったけど管理めんどくさすぎん?
初めはここは数字しか入らんよて言われてたからisNumericだけ判定してたのに数字以外入れると止まっちゃうから漢字とか諸々の対応させられた
そんな感じで他のinputとかアウトプットの要件がころころ変わる
そして全然動かんねーとか言われるイラつく
0358デフォルトの名無しさん
垢版 |
2018/06/19(火) 00:14:52.67ID:aJgkz5DG
>>355
全期間ならば現在の日付からの計算は必要なく、一番古い日付を指定しなくともテキストファイルの最終行まで走らせれば良いのでは。
0359デフォルトの名無しさん
垢版 |
2018/06/19(火) 00:48:51.59ID:k6tS4sBE
>>357
プログラムの仕様を決めるのはあなた
あなたが使用者に対してルールに沿った入力を求めるのは当然
道具は正しく使われるから道具として機能するのであって、猿に道具を渡しても壊れて返ってくるだけ

会社の要求をどの程度受け入れるか、もう一度冷静に考えたらどうか
個人的には、猿には付き合う必要ないと思ってる
0361デフォルトの名無しさん
垢版 |
2018/06/19(火) 06:09:54.39ID:Pu21NEEU
>>357
人に使わせるような真面目なツールにVBAは無謀でしょ
品質担保しようとしたら凄まじいコストがかかる
自分しか使わない、数行で終わる、使い捨ての、エクセル操作に特化したマクロがVBAのターゲット
0362デフォルトの名無しさん
垢版 |
2018/06/19(火) 07:29:40.94ID:mTLBhIvR
トレードオフで論破
0363デフォルトの名無しさん
垢版 |
2018/06/19(火) 07:36:01.81ID:3QD7URK7
>>307
一番簡単な方法はその都度オブジェクトブラウザで確認すること
アイコン表示されているから一目瞭然
0364デフォルトの名無しさん
垢版 |
2018/06/20(水) 18:04:43.14ID:jC8iZ17h
>>357
バカほど我儘な要求を平気でするからなぁ。で、「俺は忙しいからプログラムなんて覚える暇が無いんだ、暇なヤツはいいなぁ」とか吐かしたりさぁ。

俺は「お前のオツムに合わせてたらキリがねえわバカ」ってあからさまに言ってるよ。だいたい、数字を入力するところに平気で文字を入力して「何jこれエラーとかマジやってらんない」とか。
やってらんねえのはこっちだっての!
0365デフォルトの名無しさん
垢版 |
2018/06/20(水) 18:22:57.33ID:4RNQOdaM
使い方守れない馬鹿も馬鹿だけど本気で業務システムを作ろうってんなら
誰でも使えるようにデザインする努力も必要

入力文字種を守れない馬鹿がいる環境なら自由に手入力させる余地を残すな
0366デフォルトの名無しさん
垢版 |
2018/06/20(水) 18:39:01.82ID:toz5qFyw
とりあえずドキュメントなりマニュアルなりを作って
読まん奴まではフォロー出来ないとはっきり意思表示する

そっから先は職場の人間関係の話なので何とも
0367デフォルトの名無しさん
垢版 |
2018/06/20(水) 19:02:33.02ID:qDCLfWL3
そういう人に使わせる前提のある程度しっかりした作りのアプリはエクセルみたいな非生産的なプラットフォームでは普通は作らないね
エクセルは個人用のちょっとした処理をサクッと実行したい時とかに使うといいよ
まあその個人用のちょっとした処理だと今度はPowerShellのほうが楽なんだけどな
帯に短し襷に長しってやつだ
0368デフォルトの名無しさん
垢版 |
2018/06/20(水) 19:28:16.79ID:HhJafGKf
> そういう人に使わせる前提のある程度しっかりした作りのアプリ
エクセルには無理なんやなく
プロさんには無理なだけやんけw
言い訳だけは上手やねw下手やけどw
0369デフォルトの名無しさん
垢版 |
2018/06/20(水) 20:43:28.89ID:cuSrC+bt
VBAでUTF-8(BOM無し)ファイルを読み書きする最速の方法は何ですか?
ADODB.Streamだと遅いしBOM無しにするための2度読み書きでさらに遅いし
0374デフォルトの名無しさん
垢版 |
2018/06/21(木) 02:33:39.35ID:cblRaFU0
2007から2016に変えたらCSVの処理速度なんかがかなり低下した気がするんですが気のせいかな?
0375デフォルトの名無しさん
垢版 |
2018/06/21(木) 10:26:53.76ID:3AUOqUng
>>369
コードページを明示的に指定するdllを作るのがいいんじゃないか?
俺はそうしてる。自動判定なんていらん。(言い過ぎ?)
0376デフォルトの名無しさん
垢版 |
2018/06/21(木) 12:24:27.49ID:gHr1eedB
>>374
CSV言うても読み方も書かんとわからん。
workbook.openなんかはバージョン上がるにつれてどんどん遅くなってる。2003までは一瞬だったのに・・・
0377デフォルトの名無しさん
垢版 |
2018/06/21(木) 15:28:13.92ID:DWS517Dt
>>369
こいつ程度の頭でもできる最速の方法なのか?
そもそも最速の定義は何なのか。同一ハードウェア上でという前提条件があるのかないのか等々
馬鹿は考えもなしに「最高とか最速」などの用語を使いたがる
0378デフォルトの名無しさん
垢版 |
2018/06/21(木) 16:15:01.66ID:cblRaFU0
>>376
あー、基本workbook.openで開いてます…
ここで結構時間かかってるのかな
あと、セルの数字を一つ一つ計算したり置き換えたりって処理もかなり遅くなってるような
配列でまとめてとりこんで配列で吐き出すって感じの方が速いのかな

まだ色々と確認中なのですがいろんな物がこれまでよりやたら遅くなってる気がして…
0379デフォルトの名無しさん
垢版 |
2018/06/21(木) 17:46:03.54ID:G3PMV1Ez
表計算ソフトなんだかた視覚効果なんかいらないと思うんだが何故かMSはそういうのに拘りがあるようで
0380デフォルトの名無しさん
垢版 |
2018/06/21(木) 17:55:46.72ID:UNnnYLs6
それいったら殆どの機能が不要になるけど
表計算の上に無秩序に機能を拡張したコンセプトのよくわからないソフト
素人にはこういうのがいいんだよ
0381デフォルトの名無しさん
垢版 |
2018/06/21(木) 19:45:05.77ID:G3PMV1Ez
>>380
スマホタブレット世代の若いヤツはそれをいいとは思わないだろ。
0382デフォルトの名無しさん
垢版 |
2018/06/23(土) 22:52:17.92ID:UN4Qoivy
誰かwbsのイナズマ線を自動で引いてくれるソース書ける人いない。。。?

どこから初めていいかすら、分からない。
0384デフォルトの名無しさん
垢版 |
2018/06/23(土) 23:06:49.20ID:mwhtFBP0
>>382
1. WBSの入力サンプルを用意する
2. 1に基づいてイナズマ線を手動で書いてみる
3. 2に基づいてどういう入力のときにどういう出力をすればいいのか整理してパターン化する
4. 3に基づいてコーティングする
5. 4を動かして2と同様の出力になるかどうか確認する
0385デフォルトの名無しさん
垢版 |
2018/06/23(土) 23:55:59.49ID:v6rjk3zs
>>382
> どこから初めていいかすら、分からない。
流石にその状態だとこっちもどこから教えたらいいかすら、わからん
Excel 稲妻線 あたりでググって適当なアドイン使ったほうがいいんじゃね?
0388デフォルトの名無しさん
垢版 |
2018/06/24(日) 06:57:49.54ID:wKXyvT4A
VBAの本に書いてあるコードをひたすらパソコンに写経して実行してればVBAできるようになりますか?
0389デフォルトの名無しさん
垢版 |
2018/06/24(日) 07:22:58.28ID:wMUJPt69
>>388
3日でオッケー
0394デフォルトの名無しさん
垢版 |
2018/06/24(日) 11:16:27.44ID:/GbiIoLW
「イナズマ線」でググったらこんなの出ましたけど?

イナズマ線を簡単に引く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
'終点を設定
'イナズマ線を描画
'見た目の編集(青の太線)
0395デフォルトの名無しさん
垢版 |
2018/06/24(日) 11:37:54.91ID:I6qT+7Vz
>>386
Redmineでもなんでもいいけどオープンソース使えばいいよ
ビジネスマンなら無駄な出費は最小限に抑えなきゃ
0396デフォルトの名無しさん
垢版 |
2018/06/24(日) 12:13:16.69ID:+Dnac0xs
イナズマ線でほんとにイナズマになるのってまずいんだから
直線引いとけばいいんじゃいないかな
0398デフォルトの名無しさん
垢版 |
2018/06/24(日) 16:45:47.79ID:Lre4D6k1
1.シェイプの直線を挿入するのをマクロの記録で記録する。
2.記録されたコードの中で始点と終点と思われる部分を適当に変えて実行してみる。
3.2で得られた任意の2点で直線を引くマクロを2回実行し、その時1回目の終点と2回目の始点を同じ座標にする。
4.3の実行結果後、マクロの記録で2つの直線をグループ化するのを記録する。
5.n個の直線を引いた後で一度にグループ化するように処理を変更する。
6.n+1点の配列を引数にして上記を実行するようにプロシージャを作成。

マクロの記録は余計なコードが大量に含まれるから関係ないものを削除して実行を繰り返すと良いコードになる。
0400デフォルトの名無しさん
垢版 |
2018/06/25(月) 02:57:29.92ID:KNQSLrIZ
特にエラーがあるわけでもなくブレークポイントを設置しているわけでもないのに
黄色い矢印が出て止まるのってなんなんでしょうか
必ず起きるというわけでもなく出たり出なかったな上に続行ボタンを押せば特に問題もなく終了するので
発生原因がまったくわからないのですがこれバグかなんかですか?
@2013
0402デフォルトの名無しさん
垢版 |
2018/06/25(月) 08:03:49.23ID:g4f2HyLN
>>400
必ず止まるわけじゃないだろ。

バグかどうか分からんけど、わりとよくある。
PC再起動で直る。
0403デフォルトの名無しさん
垢版 |
2018/06/25(月) 08:30:31.52ID:0cxYdjFF
ウィンドウフォーカスが外れるとオブジェクトが使えなくなってしまい止まるコードは良くある。
コーディング上の問題
0404デフォルトの名無しさん
垢版 |
2018/06/25(月) 17:38:11.74ID:32Q0kwUe
>>400
「VBAProjectのコンパイル」を実行してからF5押してもダメか?
たまーに同様のケースでこれで解決する場合があったんで。
0405デフォルトの名無しさん
垢版 |
2018/06/26(火) 00:55:55.45ID:JcpFXbvc
>>400
エラー起きた後に続行すると動くって事は
画面が完全に表示しきれてないのに読み込もうとするからじゃない?
初心者ならエラー起きる箇所の前にwait入れる
プロなら完全に表示しきったら次の処理に行くようにする
0407デフォルトの名無しさん
垢版 |
2018/06/26(火) 06:58:14.23ID:6cpLrGqW
>>400
多分バグ
ブレイクポイントを設定したままセーブして
立ち上げ直すと起こる奴のことじゃないかな?
そこにブレイクポイントを再度設定して
外してやって起きるか試してみ?
0410デフォルトの名無しさん
垢版 |
2018/06/26(火) 19:28:17.51ID:/NQG0v2L
セル内にアルファベットがあるかどうか判断する関数おしえて
0412デフォルトの名無しさん
垢版 |
2018/06/26(火) 19:34:38.24ID:gqZ2opt6
>>410
VBAじゃなくて関数でいいの?
そしたら>>411に聞いたら?
きっと親切に教えてくれるよ
0415デフォルトの名無しさん
垢版 |
2018/06/26(火) 23:20:01.37ID:OOy83jKq
Sumifsの引数って内部的にどうなってるんでしょう?
ABABAB…って繰り返すので、
Byval何とかAs何とかってのが延々並んでいる状態?
それとも繰り返し用の書き方がある?
0419デフォルトの名無しさん
垢版 |
2018/06/27(水) 19:43:31.93ID:cmwRU+Lk
テーブル1に、row数が同じテーブル2を合体させたい
データ、書式設定、条件付き書式やドロップダウンリストごとテーブル1に合体させたい。
どうやるのが無難ですか?
0420デフォルトの名無しさん
垢版 |
2018/06/27(水) 20:21:28.84ID:fTvQb+z6
全く作り方が思い付かないからご教授お願いします。

@入力の所に数字を入れる。
Aup or downに数字が入れる。

例 入力45 up1 down2

Bupとdownを計算 -1
C入力45がコードのCとDの間で下のDとしてBで計算された-1上を選択。
D判定が×だから○まで上に上がりBを選択。

※計算が+なら下へ、判定○ならその左のコードを取得、×なら○まで下へ。

※上下に移動していって該当がない、移動なし、判定×ならエラー。

こんなのを作りたいんですが上下移動がどうしたらいいか分かりません。
https://i.imgur.com/rZ7HQjn.jpg
0421デフォルトの名無しさん
垢版 |
2018/06/27(水) 21:19:12.71ID:e0p/nHbu
>>420
ループが書けるなら何も難しいポイントはないと思うけど?
0422デフォルトの名無しさん
垢版 |
2018/06/28(木) 01:22:28.68ID:+QemlL/U
どんな状況で使うんだそれwww
0423デフォルトの名無しさん
垢版 |
2018/06/28(木) 01:31:07.58ID:yAlSsbFN
>>419
テーブルで結合せず普通にRangeでくっつけてテーブルにすれば良いのでは?そっから書式はどーにでもなる
0424デフォルトの名無しさん
垢版 |
2018/06/28(木) 07:43:13.21ID:xivqfK8L
>>421
Do while Not EOF(filNo)
 Line Input ♯filNo,strtxtLine
 ReDim Presrve arrline(cntLine)
 cntLine=cntLine+1
Loop

実際はこれでtxtファイルを読み込んでから1行ずつ見ていって判定処理したいんだけど、無理かな?
0425デフォルトの名無しさん
垢版 |
2018/06/28(木) 09:01:19.54ID:gmVEqVTK
>>424
無理じゃない
テキストファイルを配列に読み込んで処理すればいい
配列はワークシートのセルとまったく同じ構造なので、ワークシートで動くプログラムが作れたらRange (Cells)の部分をArray型に置き換えるだけ
0426デフォルトの名無しさん
垢版 |
2018/06/28(木) 09:56:18.70ID:0dK62kGd
i=1
range("i:2").select
でエラーが返ってくるのはなぜなんだぜ?

変数を含んだ行をコピペしようと思って、これでシンプルにできると思ったらできなかった
0427デフォルトの名無しさん
垢版 |
2018/06/28(木) 10:06:24.86ID:rXz6gjRS
平成30年のつもりで
H30 = 2018
とかやってた時に
Range(“A30:H30”)が”A30:2018”と解釈されたら困るだろ
0430デフォルトの名無しさん
垢版 |
2018/06/28(木) 12:37:51.72ID:vmNCa+jC
VBA昨日から始めたんですが
小数点第1位の繰り上げ処理がしたいけどわかりません
cells(1,1)=cells(1,2)/3とか簡単なやつをひたすら書いてるだけなのですがどうか力を貸してください
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況