Excel VBA 質問スレ Part54

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


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


※前スレ
Excel VBA 質問スレ Part53
http://mevius.5ch.net/test/read.cgi/tech/1524823358/
2018/06/27(水) 00:47:40.69ID:SUHeYO2q
>>415
馬鹿は死ねよ
2018/06/27(水) 02:45:33.38ID:a/7yKsza
ParamArray
2018/06/27(水) 15:38:51.10ID:KXFiZVY3
2007でオブジェクトブラウザでみると、ずらずらと引数書いてあるな
2018/06/27(水) 19:43:31.93ID:cmwRU+Lk
テーブル1に、row数が同じテーブル2を合体させたい
データ、書式設定、条件付き書式やドロップダウンリストごとテーブル1に合体させたい。
どうやるのが無難ですか?
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
421デフォルトの名無しさん
垢版 |
2018/06/27(水) 21:19:12.71ID:e0p/nHbu
>>420
ループが書けるなら何も難しいポイントはないと思うけど?
422デフォルトの名無しさん
垢版 |
2018/06/28(木) 01:22:28.68ID:+QemlL/U
どんな状況で使うんだそれwww
423デフォルトの名無しさん
垢版 |
2018/06/28(木) 01:31:07.58ID:yAlSsbFN
>>419
テーブルで結合せず普通にRangeでくっつけてテーブルにすれば良いのでは?そっから書式はどーにでもなる
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行ずつ見ていって判定処理したいんだけど、無理かな?
2018/06/28(木) 09:01:19.54ID:gmVEqVTK
>>424
無理じゃない
テキストファイルを配列に読み込んで処理すればいい
配列はワークシートのセルとまったく同じ構造なので、ワークシートで動くプログラムが作れたらRange (Cells)の部分をArray型に置き換えるだけ
2018/06/28(木) 09:56:18.70ID:0dK62kGd
i=1
range("i:2").select
でエラーが返ってくるのはなぜなんだぜ?

変数を含んだ行をコピペしようと思って、これでシンプルにできると思ったらできなかった
2018/06/28(木) 10:06:24.86ID:rXz6gjRS
平成30年のつもりで
H30 = 2018
とかやってた時に
Range(“A30:H30”)が”A30:2018”と解釈されたら困るだろ
2018/06/28(木) 10:15:49.57ID:qc1zg9zW
>>426
iを"で囲んじゃってるからじゃない?
2018/06/28(木) 10:41:16.13ID:LheEK93m
i人を囲ってるに空目した
430デフォルトの名無しさん
垢版 |
2018/06/28(木) 12:37:51.72ID:vmNCa+jC
VBA昨日から始めたんですが
小数点第1位の繰り上げ処理がしたいけどわかりません
cells(1,1)=cells(1,2)/3とか簡単なやつをひたすら書いてるだけなのですがどうか力を貸してください
2018/06/28(木) 12:41:28.62ID:p1qCM05F
右クリック
書式の設定
2018/06/28(木) 12:54:29.19ID:gmVEqVTK
>>430
切り上げ?繰り上げ?
2018/06/28(木) 13:15:42.35ID:bPOrcHIs
>>430
worksheetfunction.roundupで良いんじゃないの?
434デフォルトの名無しさん
垢版 |
2018/06/28(木) 14:23:59.86ID:vmNCa+jC
>>431
すいません、切り上げです。
>>432
マクロの結果が123.1だったら124にしたいってことです
>>433
切り上げたいセル=そのコードでいけますか?
2018/06/28(木) 16:57:32.15ID:fPRUk1BG
worksheetfunction以外ないでしょ。
わざわざvba使う意味がよく分からないけど。
436デフォルトの名無しさん
垢版 |
2018/06/28(木) 17:03:23.93ID:vmNCa+jC
関数でだけでいいですよね。
ありがとうございます
2018/06/28(木) 17:16:56.61ID:gmVEqVTK
切り上げ程度の簡単な処理でも、VBAだけで全部作るよりWorksheetFunctionの方が速い?
2018/06/28(木) 18:48:16.37ID:5Y4lXBcT
知らん実際に作ってみろよそして共有してくれ
家じゃexcel無いしめんどい
439デフォルトの名無しさん
垢版 |
2018/06/28(木) 21:14:43.44ID:5sS5K7lt
めんどいのに意味のないレスはしたくなる馬鹿のジレンマ
2018/06/29(金) 13:09:40.61ID:LHPd57hM
わざわざ車輪の再発明をするこたぁねー
2018/06/29(金) 14:09:13.49ID:pKfq68i8
ジャップ企業「わざわざ車輪の再発明をするこたぁねー」
アップル「iPodでウォークマンを再発明しました!」
アップル「iPhoneで携帯電話を再発明しました!」
アップル「iPadでタブレットを再発明しました!」
2018/06/29(金) 14:32:14.75ID:JaOW7x6U
iPodがウォークマンの再発明としか思えないから
日本からああいう製品は出なかったんだろうな
443デフォルトの名無しさん
垢版 |
2018/06/29(金) 15:12:37.97ID:mqfybBJV
アップルの成功はAppStoreをオープンにしてアプリを爆発的に増やしたこと
日本企業はオープンにせず独自企画が好きだもんな
iPodの頃なんて大して注目されてなかったし
2018/06/29(金) 18:29:20.51ID:izu8oDQ2
どこがじゃ。
全然オープンじゃねえだろ。

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

デザインの力は大きかった。
2018/06/30(土) 06:54:28.54ID:9Ry7JbLA
条件付き書式って名前とかタグみたいな個を識別できるようなプロパティないの?
条件にごちゃごちゃ付け加えると重くなるからvba側で操作したいんだけど
特定できそうなところでなんちゃって判定するしかないのこれ
2018/06/30(土) 11:04:23.50ID:WIsBWLki
ない上に知らん間に増殖する
全消しして追加がいいよ
2018/06/30(土) 12:09:38.19ID:CxGNiw/z
>>446
> ない上に知らん間に増殖する
そうなんだよね
条件付き書式の整理とか統合とかのコマンドがほしいわ
2018/06/30(土) 13:14:20.39ID:SwaI02yR
条件付き書式が設定されたセルを調べることは可能
https://support.office.com/ja-jp/article/8313ee09-b95d-444a-8103-6bbf3691e82b
2018/07/03(火) 15:03:44.94ID:Jdc/5p+U
>>447
確かに欲しい。でも作ろうと思えば作れる事に気がついた。
追加されるとは考えられないしやるか・・
2018/07/03(火) 20:55:45.98ID:t9iFA8ey
>>449
作って公開してくれ〜
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の順となりなかなかうまくいきません。
どなたか解決策を教えていただけないでしょうか?
2018/07/04(水) 00:45:48.22ID:pALk88+D
>>451
Sortすりゃいいだろ
2018/07/04(水) 02:15:12.29ID:uOrTSuCX
>>451
https://msdn.microsoft.com/ja-jp/library/cc408450.aspx
>コピーは Recordset オブジェクトの現在の行を開始点として行われます。
らしいから、現在行を3行目にしとけばいいんじゃない
2018/07/04(水) 02:16:31.79ID:uOrTSuCX
>>451
https://msdn.microsoft.com/ja-jp/library/cc408450.aspx
>コピーは Recordset オブジェクトの現在の行を開始点として行われます。
らしいから、現在行を3行目にしとけばいいんじゃない
2018/07/04(水) 07:21:03.50ID:Ets3rlLA
>>452-454
早速にありがとうございます。
確かに転記後にソートでどうにでもなりそうですね。
できれば転記時にできればとおもっておりました。
カーソル位置を3行目にする事で解決はおっしゃるとおりですね。
ただ私の最初の前提が不十分な解説のため申し訳ありません。データが増えていった場合でも下から3つを取り出したい場合はどうすればよいか苦慮しています。
ExcelVBAのように、Offsetが使えたらデータが増えていっても下から3つだけを取り出すという風にできていいなと思うのですが。
2018/07/04(水) 09:26:05.39ID:pALk88+D
>>455
topを使って馬鹿はいい加減に引っ込め
2018/07/04(水) 18:30:51.27ID:uOrTSuCX
>>455
現在行をn-3行目にしとけば良いんじゃない

>>456
単純にtop取るんじゃなくて、descでorder byしてtop取ったやつをもう1回order byする必要があるんだが
そんなSQLがすらすら書けるようなレベルのやつはこんな質問しないし
2018/07/04(水) 18:39:25.28ID:+s3AGVWW
もう一回order byは必要無いだろ。
Excel側で対処すれば良い。
2018/07/04(水) 18:41:40.31ID:pALk88+D
>>457
こいつみたいに、後から出てきて回答してることをグタグタ書く馬鹿も来なくていいよ
2018/07/04(水) 19:03:04.14ID:uOrTSuCX
>>458
それが自分でできてりゃ
>SQLのORDER BYを使うと5、4、3の順となりなかなかうまくいきません。
てな事にはなってないだろう
2018/07/04(水) 21:37:47.81ID:w3aVzChY
>>451
このあたりを参考にしてみ
http://www.accessclub.jp/bbs2/0051/beginter16860.html
462デフォルトの名無しさん
垢版 |
2018/07/04(水) 22:03:13.56ID:gFgZc5FG
EAK
2018/07/05(木) 07:07:56.16ID:tfdDHYdR
マクロ・VBAの勉強がしたいです
どのような方法で勉強を進めるのが理想でしょうか
エクセルのレベルはVLOOKUPなどのメジャーな関数を使える程度のレベルです
ちなみに会社員です
2018/07/05(木) 07:22:05.89ID:ydS/c7Yy
>>463
何をしたいのか明確な目的が必要
楽したい!ってモチベーションがないと続かないよ
トライ&エラーを繰り返すこと
教本だけでは身に付かないから、実践は必ず必要
2018/07/05(木) 07:38:50.41ID:p94kIUt1
>>463
Vlookupの欠点を知ってるよね?
2018/07/05(木) 07:44:26.36ID:nUGwrBqJ
vloookupをdisる様になったらエクセル使いとして一人前
467デフォルトの名無しさん
垢版 |
2018/07/05(木) 08:33:49.18ID:rMERr/jv
>>463
今からプログラミングを覚えるならVBAなんて化石言語はやめましょう
言語的に近いC#がいいと思いますよ
VBA程度の事は全て出来ますしもっと色々と出来るので推奨
2018/07/05(木) 08:39:30.09ID:9AXPA/lJ
体系的に勉強する価値なんてないよ
やらなきゃいけないことをググって試してみての繰り返し
プログラミングのスキルやセンスを磨きたいなら他の言語で学んだ方がいい
2018/07/05(木) 14:06:51.76ID:HAlufd/5
>>463
こんなところで聞かなきゃいけない時点でもうダメだな
470デフォルトの名無しさん
垢版 |
2018/07/05(木) 18:59:11.64ID:d3LrKkRn
>>463
VBAを覚えて何がしたいのか知らんが、仕事で活用するなら
まず、エクセル関数をもっと覚えて関数で何とかできるようになりましょう

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

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

自動再計算を切るのも諸刃の剣だし。
2018/07/05(木) 21:09:35.03ID:YSTvTCwo
プログラマじゃない普通の会社員がExcelを使うのにVBA勉強すんのは普通だろ。
なんで不必要なC#とかやらにゃならんのだ。
プログラマってほんと頭でっかちやな
474デフォルトの名無しさん
垢版 |
2018/07/05(木) 21:17:37.90ID:fo69RQFS
VBAって二十年くらいなんの進歩もないよね
この言語を覚えて次に全く役に立たないじゃん
キャリアアップの為にも意味ないよね
2018/07/05(木) 21:30:31.77ID:xKEzIF3G
>>473
プログラマじゃないとしても今時エクセルだけじゃ話にならんでしょ
誰だって日常的にディレクトリ階層とエクセル以外のファイルを扱う
ツールの拡張がスクリプト言語になってることは良くある
自分のWindowsを管理するにはpowershellを使うね
得に最近需要が高まってるのはREST APIやスクレイピング技術だな
いずれもVBAでもできんことはないが果てしなく古臭い構文と開発環境、貧弱なライブラリのせいで死ぬほど生産効率悪いんだよね
マゾにはオススメかもしれんがノーマルな人にはオススメできんな
2018/07/06(金) 00:17:05.86ID:VZEPTATI
>>474
VBAは進歩がないのがメリットとも言える。
pythonなんかは2と3で動作仕様が異なる上、モジュールのバージョンも気にする必要があって、別PCで同じ環境を構築しようとすると結構面倒。
その点、VBAはどんなPC、エクセルのバージョンであっても安定して動作するって意味では楽だな。

色々言語触ったけど、自分の結論としてはどの言語が良い悪いではなく、結局適材適所で使い分けが大事。
477デフォルトの名無しさん
垢版 |
2018/07/06(金) 00:21:52.27ID:M8GmHm7a
WindowsUpdateの影響で個々のPCで不具合でまくるが
2018/07/06(金) 00:23:59.34ID:BGc41+3f
もっと短いのにならないかな。
Vlookupとか長いので、GonとかPnとかさ。
Sheet1も地味に長いよね。
Werでいいよね。
2018/07/06(金) 01:20:50.99ID:yPJnVsMJ
事務員はプログラマじゃないからVBで十分
他の言語を扱うなら担当の部署に回すか外注する
部署で自分しか扱えない言語を触りだしたら間違いなくそいつは地雷
480デフォルトの名無しさん
垢版 |
2018/07/06(金) 04:19:54.50ID:C9bArYB2
iPad上でもWinで書いたVBAファイルは動きますか?
ファイルをやり取り出来る?
2018/07/06(金) 05:32:38.53ID:ST4fD14t
「エクセルで十分」ってよく聞くフレーズだけど
「料理するには石器で十分」のような強烈な違和感を感じる
2018/07/06(金) 06:34:19.51ID:p7OwDDVB
VBAって結構リストビューになかされない?最近win10になったけどバグる。
そもそもリストビュー使わない?
2018/07/06(金) 07:10:52.75ID:2QUNMYcg
>>480
Office365じゃないとVBAは動かなかったはず。ファイルはやり取り可能だが
2018/07/06(金) 07:19:10.36ID:0k7k2lmp
>>476
> その点、VBAはどんなPC、エクセルのバージョンであっても安定して動作するって意味では楽だな。
VBAはいいとしてもその上のExcelの動作がバージョンによって変わる
特にグラフ周りはグダグダ
2018/07/06(金) 07:20:30.17ID:CLCbtFoc
普通の事務職がVBAを勉強したいっていう何の変哲もない書き込みにおまえら首の皮を取ったようにレスしててワロタ
おまえらみたいなのが少数派だってことを認識した方がいいぞ
486デフォルトの名無しさん
垢版 |
2018/07/06(金) 07:22:51.27ID:X6vsJP5v
>>485
首の皮を取ったは違うよね
2018/07/06(金) 07:37:29.57ID:2QUNMYcg
会社員=事務員じゃないし、首の皮取ったら職失うし
488デフォルトの名無しさん
垢版 |
2018/07/06(金) 07:48:02.36ID:3tEKTxuN
悪いこと言わんからちんこの皮は取っとけよおまえら
2018/07/06(金) 08:11:08.51ID:CLCbtFoc
鬼の首OTL
2018/07/06(金) 08:13:48.33ID:CLCbtFoc
もう俺はおまえらに何も言えない
首の皮を取って出直してくる
2018/07/06(金) 08:17:03.43ID:ST4fD14t
本気でプログラミングするわけでもない事務員なら、より簡単に色々出来ることが多い言語を選ぶのが正解だろ?
マゾはVBAから始めてもいいけど完全に選択肢間違えてっぞ
2018/07/06(金) 08:28:53.67ID:yPJnVsMJ
>>491
本気じゃないからVBでいいんだよ
2018/07/06(金) 08:36:24.85ID:2QUNMYcg
ExcelVBAを学びたい人の目的はExcel上での自動化なので、他の言語提案する馬鹿は、要求仕様もRFPも設計も出来ない馬鹿だと思う
2018/07/06(金) 09:45:05.51ID:1/5hArIQ
真に事務屋に必要なのはAutoHotkeyとかUWSCみたいな即物的なマクロツール
2018/07/06(金) 10:26:11.58ID:VwMR5YXD
つーかいい加減VBAなんてゴミ捨てろよ
手抜き目的でプログラムなんて興味なしが大半なんだからそのへん雑なjsが最適だろ
型だのSetだのCallだのいらねーんだよハゲ
2018/07/06(金) 10:50:34.44ID:Qi0gjM6/
えっ、エクセルでJS使えるの?
2018/07/06(金) 10:54:51.32ID:aDF6cFGR
エクセルと心中する気持ちがある
目指せエクセルマスター
それぐらい本気で取り組む気持ちがあるならVBA
そこまでの覚悟がないなら他の簡単で使い道が多い言語にしたほうがいいね
2018/07/06(金) 11:43:53.94ID:XiAowgcv
>>496
カスタム関数がjsで書けるようになる。
現在ベータテスト中のはず。
またpython対応も進められてるはず。
499デフォルトの名無しさん
垢版 |
2018/07/06(金) 12:22:05.24ID:qobvoXhT
ここぞとばかりに湧いてきよった教えたがりのプロさん達w
2018/07/06(金) 12:25:31.91ID:WR4Eg6+W
>>484
エクセルのグラフや統計ツールは場当たり的な作業で使うもので、自動化には向かない。
そういうのはpythonとかの方がいいよ。
2018/07/06(金) 12:53:44.00ID:0k7k2lmp
>>500
エクセル並のグラフ作れるライブラリ教えてくれたら考える
2018/07/06(金) 12:58:51.82ID:2QUNMYcg
ExcelのjavaScript対応なんて、Googleスプレッドシートの後追いじゃないの?
サーバーサイドじゃなくクライアントで動くなら助かるけど、
でたぶん、APIがあるだけで関数書式はVBAと同じ手続き踏まされると予感
2018/07/06(金) 13:01:16.07ID:yPJnVsMJ
excelは圧倒的な普及率が強み
多少使い勝手が悪くても使う理由
2018/07/06(金) 13:18:06.25ID:LdCqv7/c
>>502
もちろんクライアントサイド。google spreadシートのはサーバーサイドでちょっと複雑な処理書くと制限に引っ掛かったりで非常に遅く、jsの仕様もes5相当の古い書き方しかできず辛い。
その点excelはedgeのjsエンジンであるchakraコアがそのまま動き最新の機能が使える。
まさかのasync/awaitまで使えて夢が広がる
2018/07/06(金) 22:07:27.55ID:IfC5DM7h
dim rng as range
for each rng in selection.rows
以下略

こんな感じで複数行選択して各列に対して操作を行いたいんですよ
でその操作の中で行をコピー・挿入だったり削除だったりするんですけど、それがselection内だったりするとselectionそのものが変わっちゃったりするんです
複製された行に対しても操作しようとしたり、削除されて上に1行繰り上がって本来操作されるべき列が飛ばされたり
なんかいいアイディアないですかねぇ

>>482
同じことあった。ライブラリのバージョン違うと動かんのねあれ
客が使うオフィスのバージョン確認したわ
2018/07/07(土) 00:17:11.58ID:/HOykfzr
>>505
動作を理解していない馬鹿頭の問題だろ
2018/07/07(土) 01:41:26.84ID:rsjeXCCL
どなたか教えて頂けませんか。
Debug.Printが毎回追記されていくのがうっとうしくて、下記のような記述をしました。

Private Sub im_del()
Application.VBE.Windows("Immediate").SetFocus
SendKeys "^a", False
SendKeys "{Del}", False
End Sub

Sub ABCDE()
Call im_del
Debug.Print "ABCDE"
End Sub

ところが、一瞬"ABCDE"の記述が出現した後、すぐ消えてしまいます。
"ABCDE"を出力したあとに、ctrl+A、Del、が処理されているように見えるんですが、これは何故起こってるんでしょうか?
2018/07/07(土) 02:47:26.85ID:74QXb5lv
間にwaitを入れてみようや
2018/07/07(土) 04:25:45.76ID:nRfAjRal
>>507
SendKeysはWindowsさんに伝言をたのむ命令
その伝言が伝わる前に直接連絡した方が先に届いてもおかしくない
DoEventsいれてみ
2018/07/07(土) 08:40:44.63ID:oHL/B82Y
ここはほんとうに素晴らしいスレッドですね。 
>>456とか>>459とか>>466とか雰囲気悪くするだけだからもうこなくていいよw
511デフォルトの名無しさん
垢版 |
2018/07/07(土) 11:39:14.52ID:ZbC6MOHz
>>510
こいつも雰囲気悪くしてるからw
512デフォルトの名無しさん
垢版 |
2018/07/07(土) 12:19:02.02ID:W328YIg6
>>511
おまえが一番雰囲気悪い
2018/07/07(土) 12:25:42.85ID:/HOykfzr
>>510
ゆとり世代?
2018/07/07(土) 13:34:48.20ID:E0dVopgV
5chに来て何言ってんだ
建前抜きにした罵詈雑言の罵り合いも殺伐とした空気も煽りも自演も5chの醍醐味だろう
綺麗なインターネットを求めてるなら実名でブログでもツイッターでもやりゃいい
2018/07/07(土) 13:54:07.60ID:fvXZFBMd
pythonは次期Excelに搭載されないことが決定しただろ馬鹿
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。