Excel VBA 質問スレ Part41©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん 転載ダメ©2ch.net
2016/04/27(水) 04:11:46.79ID:Nk+oP5xRコード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part40
http://echo.2ch.net/test/read.cgi/tech/1455817784/
※関連スレ
VBAなんでも質問スレ Part2
http://echo.2ch.net/test/read.cgi/tech/1432173164/
Access VBA 質問スレ Part1
http://echo.2ch.net/test/read.cgi/tech/1328536426/
Excel総合相談所 122
http://echo.2ch.net/test/read.cgi/bsoft/1461287268/
0002デフォルトの名無しさん
2016/04/27(水) 04:15:15.99ID:Nk+oP5xRExcel VBA 質問スレ Part37
http://echo.2ch.net/test/read.cgi/tech/1433920729/
0003デフォルトの名無しさん
2016/04/27(水) 21:55:10.70ID:56VYowtZ前スレでQiitaのExcelタグ記事が出てたからいろいろ見たけどもう疲れた
0004デフォルトの名無しさん
2016/04/28(木) 05:56:31.13ID:HABRmm6+別のExcelファイルから参照している複数のセルに並び替えをしたいと考えています
その際空白は省きたいです
普通に並び替えても数式が狂ってしまいますので、文字の入ってるセルの行だけ抽出して並び替えられるようにしたいのですが
数式を文字として認識しているのか
空白を省けません
何か方法はありますでしょうか?
0005デフォルトの名無しさん
2016/04/28(木) 06:08:09.63ID:R0Skxwpj0006デフォルトの名無しさん
2016/04/28(木) 06:20:12.22ID:kK5ruPHcValue2
0007デフォルトの名無しさん
2016/04/28(木) 06:23:08.26ID:HABRmm6+valueは…表示されません
セルに文字がある場合は「1」ない場合は「0」と表示させてMARCH関数で該当するかしないかを表そうと思っています
参照元が空白で、参照先も空白になるのですが、セルには数式が入力されていて
空白でも「1」と表示されてしまいます
0008デフォルトの名無しさん
2016/04/28(木) 06:38:20.09ID:HABRmm6+他サイトからの引用で申し訳ありませんが、やりたい事はこれと同じです
異なるのは、文字の入ってるセルが、他のファイルからの参照先になっていますので
「=[他ファイル.xls]などの数式が入ってしまっています
0009デフォルトの名無しさん
2016/04/28(木) 06:39:31.82ID:R0Skxwpj0010デフォルトの名無しさん
2016/04/28(木) 06:45:42.55ID:HABRmm6+すみませんでした…
0011デフォルトの名無しさん
2016/04/29(金) 00:24:13.71ID:5uxjIDtf0012デフォルトの名無しさん
2016/04/29(金) 00:37:59.90ID:nMX0BLZ6たぶんこのスレを見に来てももうあなたが新たに得られるような情報はないかと
0013デフォルトの名無しさん
2016/04/29(金) 00:44:23.68ID:5uxjIDtfステキな出会いを期待してたのに
0014デフォルトの名無しさん
2016/04/29(金) 01:43:24.44ID:L3/tzjQ70015デフォルトの名無しさん
2016/04/29(金) 02:20:11.85ID:4zpSkGz3すでに.NETからEXCELを使う方法は提供されているわけで
そういう人はVSTO使えばいいというのがMSの方針じゃなかろうかね
0016デフォルトの名無しさん
2016/04/29(金) 03:27:47.90ID:22q9RBL3会社のセキュリティすり抜けられるっていう一点だけだから
好きなIDEが使えるならVBAにこだわる人間は少ないんじゃないか
0017デフォルトの名無しさん
2016/04/29(金) 03:46:43.37ID:L3/tzjQ7こんな感じだよね。勝手にソフトウェア入れるわけにもいかないし、VBAじゃダメなの?と聞かれても俺じゃ納得させられないよ
0018デフォルトの名無しさん
2016/04/29(金) 08:38:57.84ID:WJMtHckd0019デフォルトの名無しさん
2016/04/29(金) 08:54:03.96ID:KCDOC8aIVBAみたいに気楽に使えるようにして欲しいわ
0020デフォルトの名無しさん
2016/04/29(金) 09:54:43.92ID:5uxjIDtf0021デフォルトの名無しさん
2016/04/29(金) 11:08:32.92ID:22q9RBL30022デフォルトの名無しさん
2016/04/29(金) 11:13:45.24ID:hLQru2tB0023デフォルトの名無しさん
2016/04/29(金) 12:31:42.69ID:pnlNs8XQ自分でやれよと思ってしまう
みんなでクラス構成考えたりコードレビューとかしながら成長できる環境なら別にvbaでも構わんよ
0024デフォルトの名無しさん
2016/04/29(金) 12:46:25.08ID:5uxjIDtfツール: 電卓と一緒。大抵のことは自分でやれ。引き継ぎ対象にしない。
ライブラリ: 担当者がメンテする。ちゃんと引き継ぐ。
0025デフォルトの名無しさん
2016/04/29(金) 12:49:00.15ID:Iep7JOlc0026デフォルトの名無しさん
2016/04/29(金) 13:13:33.73ID:onpOySfzこう言うツールを作れば作業時間が○○ぐらい減るので
△△円/月程度の費用削減が可能です
って説明すればいいかと
0027デフォルトの名無しさん
2016/04/29(金) 13:34:23.20ID:oVc0CQsa残業は今でもほぼ無いし、早く終わったからってすぐにやるべき仕事もない
0028デフォルトの名無しさん
2016/04/29(金) 13:42:07.75ID:22q9RBL3やれ会議だ、やれ相談だと呼ばれて中断せざるを得ない場合の方が比重が高そう
だいたい作業時間短縮ってツールよりもライブラリの充実の方が問題になるし・・・
けど考えてみれば俺以外分からないんだから、ツールくれれば効率上がりまっせって言うのはありか
0029デフォルトの名無しさん
2016/04/29(金) 13:43:50.31ID:UCIGz4cp右から列方向で連番を振る方法ありますか?
オプションで逆方向xlPreviousをつけても、
一番右下に1が振られるだけで、後の順序は
左から列方向したのと同じなのですが。
0030デフォルトの名無しさん
2016/04/29(金) 13:55:01.28ID:22q9RBL3Sub test(検査範囲 As Range, 検査値 As String)
k = 0 '連番開始値
xr = 検査範囲
Top = LBound(xr, xlRows)
Bottom = UBound(xr, xlRows)
Left = LBound(xr, xlColumns)
Right = UBound(xr, xlColumns)
For i = Right To Left '右から左
For j = Top To Bottom '上から下
If xr(j, i) = 検査値 Then
検査範囲.Range(j, i) = k
k = k + 1
End If
Next
Next
End Sub
こういう事?
0031デフォルトの名無しさん
2016/04/29(金) 14:06:46.66ID:zF/UNtdRexpressでいいんでしょ?
0032デフォルトの名無しさん
2016/04/29(金) 14:19:18.90ID:Fcw6JTQb他の人の業務も早く正確にミスなく出来る
リードタイムも減って機会損失が少なくなるとか
0033デフォルトの名無しさん
2016/04/29(金) 14:33:09.04ID:UCIGz4cpFINDの引数でどうにかならないかと思っていましたが、
やっぱりforとifで判定していくしかないんですね。
ありがとうございます。参考になりました。
0034デフォルトの名無しさん
2016/04/29(金) 16:56:22.77ID:VQFWKbyJ通常のFINDとは逆順で検索したいんだよね?
右下から左に検索 & 下から上
1回目のみ FIND(・・・ ,SearchDirection:=xlPrevious,SearchOrder:=xlByRows)
2回目以降 FindPrevious()
でよくね?
やりたい事の意味を間違って受け取ってるかな?
0035デフォルトの名無しさん
2016/04/29(金) 19:35:10.13ID:UCIGz4cp言葉足らずですみません。
6 3
5 2
4 1
ではなくて、
4 1
5 2
6 3
という意図でした。
123
456
や、
1 4
2 5
3 6
はFINDの引数だけでできたので、右から列方向もさくっとできないかと思ったのでした。
0036デフォルトの名無しさん
2016/04/29(金) 21:15:23.39ID:sUt0Q0jr時々、シートに配置したボタンが、どこかに飛んでいくようになった。
ブック名やシート名を指定してるのに、
全然関係ないセルに値を書き込みにいったり。
俺がバグってるだけ?
0037デフォルトの名無しさん
2016/04/30(土) 01:05:44.58ID:bnyf9CY9それとは逆に、シートのセル例えば Range("A1")の値が変化することをイベントとすることで、
例えば、フォームのTextBox1の値を変化させることはできるかな?
超上級レベルのPGさん(C#, VB,net, Java経験者)、その方法を教えて。
0038デフォルトの名無しさん
2016/04/30(土) 01:23:26.23ID:bQzkVaJ6=foo(A1)
と入れときゃいいんじゃないの?
その関数 foo の中でTextBox1の値を変化させる
003937
2016/04/30(土) 01:27:16.13ID:bnyf9CY9外部アプリ、例えば、UWSCで書き込むものとします。
004037
2016/04/30(土) 01:59:49.62ID:bnyf9CY9004137
2016/04/30(土) 02:03:47.30ID:bnyf9CY9vbaでもvb.net のような、自作イベントなんてできるの?
RaiseEventのような。
0042デフォルトの名無しさん
2016/04/30(土) 04:06:29.80ID:3b/0XXdCVB6と一緒で一応ある。
以下のMSDNに載っている使用例のサンプルは、
VB6のコードのようでVBAで使うにはコントロール名など若干修正は必要だが
RaiseEvent ステートメント
https://msdn.microsoft.com/ja-jp/library/office/gg264327.aspx
0043デフォルトの名無しさん
2016/04/30(土) 05:52:32.49ID:nOun1cZCたぶん、様々なイベントもあるのだろう
0044デフォルトの名無しさん
2016/04/30(土) 08:01:04.45ID:YWn/7cOtあるものとないものがある。
ま、モノが違うから当然だけど。
例えば一定時間でイベントが発生するようなものは確かVB.Netでは3種類くらいあったと思ったけど、
VBAでは無いのでAPIを使ってコールバックさせるような感じで組まなければいけなかったりとか
0045デフォルトの名無しさん
2016/04/30(土) 12:10:14.21ID:uVz81x78みたいな、BitTorrentがオープンソースで開発されています
言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?
Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al
ちなみにオイラはCovenant(純粋P2Pのファイル共有ソフト)の完成が待ち遠しいプログラミングできないアスペルガーw
0046デフォルトの名無しさん
2016/04/30(土) 12:37:56.63ID:3TsFkhxLいっぱいページ開いてタブを複数使ってるとき
各タブがbusyでまだ表示が終わってないかを判定するにはどうしたらいいですか?
調べた限りIEでのプロパティは取得できても各タブでのプロパティは取得できない。
0047デフォルトの名無しさん
2016/04/30(土) 19:56:35.13ID:/rgv18x0また、使い終わった変数をもう使わないと明示する処理はありますか?
0048デフォルトの名無しさん
2016/04/30(土) 21:09:42.54ID:XEqomZlq0049デフォルトの名無しさん
2016/04/30(土) 21:10:40.96ID:XEqomZlq0050デフォルトの名無しさん
2016/04/30(土) 21:11:57.74ID:XEqomZlqset sxxx = nothing
とか
0051デフォルトの名無しさん
2016/04/30(土) 21:23:19.94ID:O7pF7Dyv途中でも宣言できるよ
0053デフォルトの名無しさん
2016/04/30(土) 21:51:28.33ID:22Ts1M1X知らないなら黙ってろよ...
0054デフォルトの名無しさん
2016/04/30(土) 22:00:44.42ID:v/yWAGpr0055デフォルトの名無しさん
2016/04/30(土) 22:40:18.96ID:bQzkVaJ60056デフォルトの名無しさん
2016/05/01(日) 06:11:15.76ID:N+mY7DPn.NetみたいにIf文の中やFor文の中で宣言したところでその中でのみスコープが効くって訳でなくて
あくまでモジュールか関数単位でのスコープだから
やっぱりその単位で纏めて書いておいた方がいいだろな
0057デフォルトの名無しさん
2016/05/01(日) 06:38:17.62ID:e/Hse44Lバカ発見
0058デフォルトの名無しさん
2016/05/01(日) 06:48:30.10ID:FGPo8aL5前スレに貼ってあったブログの記事見たときも思ったけど、
今は自分が触ってるツールがなんなのかすらよく分かってないのがプログラマ名乗る時代になっちゃったな。
0059デフォルトの名無しさん
2016/05/01(日) 06:55:17.20ID:4tDBI2/Zなにか悔しいことでもあったのか?
0060デフォルトの名無しさん
2016/05/01(日) 08:55:20.52ID:e/Hse44Lバカ発見
0061デフォルトの名無しさん
2016/05/01(日) 10:01:02.93ID:EKtQwo7ZExcelとなんの関係があるの?
0062デフォルトの名無しさん
2016/05/01(日) 10:38:14.78ID:pgSGezQj0063デフォルトの名無しさん
2016/05/01(日) 11:22:51.97ID:etCluhyUその考え方だと、ソースコードをインデントする事に意味はない、ってことになる
実行コストの問題じゃないからな
こだわる理由は薄いけど、お作法だと思っておけば良いんじゃない
0064デフォルトの名無しさん
2016/05/01(日) 12:36:30.20ID:26Cdb2A4最初にまとめて宣言するとどこで宣言されてるのかわかりやすい反面、どこで使われているのかがわかりにくくなる
0065デフォルトの名無しさん
2016/05/01(日) 13:28:31.99ID:Jk9067FT局所スコープなんて邪道w
0066デフォルトの名無しさん
2016/05/01(日) 13:37:50.19ID:X/eAHaZZ0067デフォルトの名無しさん
2016/05/01(日) 13:55:38.98ID:hsr/yOpl普通に、ハンガリアン記法を使うよな?
0068デフォルトの名無しさん
2016/05/01(日) 13:59:54.67ID:cTEU13RB0069デフォルトの名無しさん
2016/05/01(日) 14:16:23.37ID:ejxts/3yDim 変数As ○○
で安定
0070デフォルトの名無しさん
2016/05/01(日) 14:30:45.34ID:X/eAHaZZそれもまあ、、、いいか
0071デフォルトの名無しさん
2016/05/01(日) 14:35:03.78ID:4tDBI2/Zまあどっちにせよポリシーを決めておけばいいと思う
俺も使う直前で定義する派
0072デフォルトの名無しさん
2016/05/01(日) 14:38:28.86ID:26Cdb2A4いつの時代だよおっさん
0073デフォルトの名無しさん
2016/05/01(日) 15:03:34.65ID:FGPo8aL5それ以前に同関数内で異なる型の変数(引数除く)を使うのはあまりよろしくない。機能が分かれてない。
0074デフォルトの名無しさん
2016/05/01(日) 15:15:10.83ID:X/eAHaZZ前半と後半が食い違ってる
0075デフォルトの名無しさん
2016/05/01(日) 15:19:30.78ID:26Cdb2A40076デフォルトの名無しさん
2016/05/01(日) 15:34:29.56ID:X/eAHaZZ0077デフォルトの名無しさん
2016/05/01(日) 16:38:53.50ID:FGPo8aL50078デフォルトの名無しさん
2016/05/01(日) 17:01:16.67ID:4tDBI2/Z> 型宣言しちゃうと出来ない事
なんのこっちゃ
0079デフォルトの名無しさん
2016/05/01(日) 17:06:37.92ID:FGPo8aL5たとえばVariant型で受けて関数内部で型によって処理を変える事で多態性を確保するとか、
返却用の引数に渡された型に合わせて返値を変えるとか、
同じ名前のプロパティを持つ別のクラスを入れて異なる処理が同一関数で行われる様にするとか。
でも考えたらVariant型も型宣言するから「Variant型以外では出来ない事」って言わないと語弊があったな。
0080デフォルトの名無しさん
2016/05/01(日) 17:14:32.74ID:X/eAHaZZ最後の一行で終わっとるじゃん。
あとEmptyやNullを受け取ったり返したり。
ライブラリ的な関数はVariantになりがちだ。
0081デフォルトの名無しさん
2016/05/01(日) 17:35:31.90ID:sRpB4XMFVariantが楽なんだよな。
0082デフォルトの名無しさん
2016/05/01(日) 18:29:04.37ID:FGPo8aL5だ、だって宣言しないで使える変数はVariant型だけだし(震え声
0083デフォルトの名無しさん
2016/05/01(日) 18:36:29.17ID:pOSQMib2まぁね。本当はクラス作ってインターフェースで多態性持たせたりする方が安全なんだけど、
VBAは1クラス1モジュールという制限があってぽこぽこ作ると分かり辛くなるから
結局程度の問題で、「Variantは実行時にしか型の違いによるエラーを確認出来ないことがある」という認識さえあれば
VBAで使うのは止むなしといったところがあると思う。
シートやレンジオブジェクトとの親和性も高いしね。
■ このスレッドは過去ログ倉庫に格納されています