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/
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とか簡単なやつをひたすら書いてるだけなのですがどうか力を貸してください
0434デフォルトの名無しさん
垢版 |
2018/06/28(木) 14:23:59.86ID:vmNCa+jC
>>431
すいません、切り上げです。
>>432
マクロの結果が123.1だったら124にしたいってことです
>>433
切り上げたいセル=そのコードでいけますか?
0436デフォルトの名無しさん
垢版 |
2018/06/28(木) 17:03:23.93ID:vmNCa+jC
関数でだけでいいですよね。
ありがとうございます
0437デフォルトの名無しさん
垢版 |
2018/06/28(木) 17:16:56.61ID:gmVEqVTK
切り上げ程度の簡単な処理でも、VBAだけで全部作るよりWorksheetFunctionの方が速い?
0439デフォルトの名無しさん
垢版 |
2018/06/28(木) 21:14:43.44ID:5sS5K7lt
めんどいのに意味のないレスはしたくなる馬鹿のジレンマ
0441デフォルトの名無しさん
垢版 |
2018/06/29(金) 14:09:13.49ID:pKfq68i8
ジャップ企業「わざわざ車輪の再発明をするこたぁねー」
アップル「iPodでウォークマンを再発明しました!」
アップル「iPhoneで携帯電話を再発明しました!」
アップル「iPadでタブレットを再発明しました!」
0442デフォルトの名無しさん
垢版 |
2018/06/29(金) 14:32:14.75ID:JaOW7x6U
iPodがウォークマンの再発明としか思えないから
日本からああいう製品は出なかったんだろうな
0443デフォルトの名無しさん
垢版 |
2018/06/29(金) 15:12:37.97ID:mqfybBJV
アップルの成功はAppStoreをオープンにしてアプリを爆発的に増やしたこと
日本企業はオープンにせず独自企画が好きだもんな
iPodの頃なんて大して注目されてなかったし
0444デフォルトの名無しさん
垢版 |
2018/06/29(金) 18:29:20.51ID:izu8oDQ2
どこがじゃ。
全然オープンじゃねえだろ。

iPodのインパクトだろ。
こういうものはガジェオタが飛びついて一般に浸透してくから、最初は一般に注目される必要は無い。

デザインの力は大きかった。
0445デフォルトの名無しさん
垢版 |
2018/06/30(土) 06:54:28.54ID:9Ry7JbLA
条件付き書式って名前とかタグみたいな個を識別できるようなプロパティないの?
条件にごちゃごちゃ付け加えると重くなるからvba側で操作したいんだけど
特定できそうなところでなんちゃって判定するしかないのこれ
0447デフォルトの名無しさん
垢版 |
2018/06/30(土) 12:09:38.19ID:CxGNiw/z
>>446
> ない上に知らん間に増殖する
そうなんだよね
条件付き書式の整理とか統合とかのコマンドがほしいわ
0449デフォルトの名無しさん
垢版 |
2018/07/03(火) 15:03:44.94ID:Jdc/5p+U
>>447
確かに欲しい。でも作ろうと思えば作れる事に気がついた。
追加されるとは考えられないしやるか・・
0451デフォルトの名無しさん
垢版 |
2018/07/03(火) 23:35:17.33ID:sZmhnLl0
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の順となりなかなかうまくいきません。
どなたか解決策を教えていただけないでしょうか?
0455デフォルトの名無しさん
垢版 |
2018/07/04(水) 07:21:03.50ID:Ets3rlLA
>>452-454
早速にありがとうございます。
確かに転記後にソートでどうにでもなりそうですね。
できれば転記時にできればとおもっておりました。
カーソル位置を3行目にする事で解決はおっしゃるとおりですね。
ただ私の最初の前提が不十分な解説のため申し訳ありません。データが増えていった場合でも下から3つを取り出したい場合はどうすればよいか苦慮しています。
ExcelVBAのように、Offsetが使えたらデータが増えていっても下から3つだけを取り出すという風にできていいなと思うのですが。
0457デフォルトの名無しさん
垢版 |
2018/07/04(水) 18:30:51.27ID:uOrTSuCX
>>455
現在行をn-3行目にしとけば良いんじゃない

>>456
単純にtop取るんじゃなくて、descでorder byしてtop取ったやつをもう1回order byする必要があるんだが
そんなSQLがすらすら書けるようなレベルのやつはこんな質問しないし
0460デフォルトの名無しさん
垢版 |
2018/07/04(水) 19:03:04.14ID:uOrTSuCX
>>458
それが自分でできてりゃ
>SQLのORDER BYを使うと5、4、3の順となりなかなかうまくいきません。
てな事にはなってないだろう
0462デフォルトの名無しさん
垢版 |
2018/07/04(水) 22:03:13.56ID:gFgZc5FG
EAK
0463デフォルトの名無しさん
垢版 |
2018/07/05(木) 07:07:56.16ID:tfdDHYdR
マクロ・VBAの勉強がしたいです
どのような方法で勉強を進めるのが理想でしょうか
エクセルのレベルはVLOOKUPなどのメジャーな関数を使える程度のレベルです
ちなみに会社員です
0464デフォルトの名無しさん
垢版 |
2018/07/05(木) 07:22:05.89ID:ydS/c7Yy
>>463
何をしたいのか明確な目的が必要
楽したい!ってモチベーションがないと続かないよ
トライ&エラーを繰り返すこと
教本だけでは身に付かないから、実践は必ず必要
0467デフォルトの名無しさん
垢版 |
2018/07/05(木) 08:33:49.18ID:rMERr/jv
>>463
今からプログラミングを覚えるならVBAなんて化石言語はやめましょう
言語的に近いC#がいいと思いますよ
VBA程度の事は全て出来ますしもっと色々と出来るので推奨
0468デフォルトの名無しさん
垢版 |
2018/07/05(木) 08:39:30.09ID:9AXPA/lJ
体系的に勉強する価値なんてないよ
やらなきゃいけないことをググって試してみての繰り返し
プログラミングのスキルやセンスを磨きたいなら他の言語で学んだ方がいい
0470デフォルトの名無しさん
垢版 |
2018/07/05(木) 18:59:11.64ID:d3LrKkRn
>>463
VBAを覚えて何がしたいのか知らんが、仕事で活用するなら
まず、エクセル関数をもっと覚えて関数で何とかできるようになりましょう

事務処理ならエクセル関数だけで大概のことはできる
VBAが必要な場面はあまり無いと思う。せいぜいファイル操作くらいか
0471デフォルトの名無しさん
垢版 |
2018/07/05(木) 19:22:05.35ID:RM/sNIBL
すいません、processingについてのスレッドはありますでしょうか?
0472デフォルトの名無しさん
垢版 |
2018/07/05(木) 19:26:01.95ID:gxCIuarn
使いわけでしょ。
数千あるチェック項目の内、1日100個ぐらいずつをチェックしていき、その集計結果で1日の結果を関数で出し、更に1ヶ月のト―タルなんかを関数でやってたら重くてどうにもならなくなったりするし。

銀行でDBから取ってきたデ―タが辻褄があってるかを調べるなんて仕事をしたことが有るんだが、その為にシステム組んでる側の(と言ってもそいつが組んでる訳じゃない)奴がチェック用に用意したsumproduct多用ブックは酷かった。
触る度に5分とか10分とか待たされた。
VBAで組んだら一瞬になったけどね。

自動再計算を切るのも諸刃の剣だし。
0473デフォルトの名無しさん
垢版 |
2018/07/05(木) 21:09:35.03ID:YSTvTCwo
プログラマじゃない普通の会社員がExcelを使うのにVBA勉強すんのは普通だろ。
なんで不必要なC#とかやらにゃならんのだ。
プログラマってほんと頭でっかちやな
0474デフォルトの名無しさん
垢版 |
2018/07/05(木) 21:17:37.90ID:fo69RQFS
VBAって二十年くらいなんの進歩もないよね
この言語を覚えて次に全く役に立たないじゃん
キャリアアップの為にも意味ないよね
■ このスレッドは過去ログ倉庫に格納されています

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