トップページtech
1002コメント361KB

Excel VBA 質問スレ Part41©5ch.io

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん 転載ダメ©2ch.net2016/04/27(水) 04:11:46.79ID:Nk+oP5xR
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼も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+oP5xR
実質前スレ

Excel 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+
Excel2010です

別のExcelファイルから参照している複数のセルに並び替えをしたいと考えています
その際空白は省きたいです

普通に並び替えても数式が狂ってしまいますので、文字の入ってるセルの行だけ抽出して並び替えられるようにしたいのですが
数式を文字として認識しているのか
空白を省けません

何か方法はありますでしょうか?
0005デフォルトの名無しさん2016/04/28(木) 06:08:09.63ID:R0Skxwpj
.value==""にマッチしないの?
0006デフォルトの名無しさん2016/04/28(木) 06:20:12.22ID:kK5ruPHc
>>4
Value2
0007デフォルトの名無しさん2016/04/28(木) 06:23:08.26ID:HABRmm6+
>>5
valueは…表示されません
セルに文字がある場合は「1」ない場合は「0」と表示させてMARCH関数で該当するかしないかを表そうと思っています

参照元が空白で、参照先も空白になるのですが、セルには数式が入力されていて
空白でも「1」と表示されてしまいます
0008デフォルトの名無しさん2016/04/28(木) 06:38:20.09ID:HABRmm6+
http://m.chiebukuro.yahoo.co.jp/detail/q12120795352
他サイトからの引用で申し訳ありませんが、やりたい事はこれと同じです
異なるのは、文字の入ってるセルが、他のファイルからの参照先になっていますので
「=[他ファイル.xls]などの数式が入ってしまっています
0009デフォルトの名無しさん2016/04/28(木) 06:39:31.82ID:R0Skxwpj
VBAなのこれ
0010デフォルトの名無しさん2016/04/28(木) 06:45:42.55ID:HABRmm6+
あ、VBAではないですね
すみませんでした…
0011デフォルトの名無しさん2016/04/29(金) 00:24:13.71ID:5uxjIDtf
VBA界に新しい話題ってないの?
0012デフォルトの名無しさん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/tzjQ7
.netにしろやクソMS
0015デフォルトの名無しさん2016/04/29(金) 02:20:11.85ID:4zpSkGz3
>>14
すでに.NETからEXCELを使う方法は提供されているわけで
そういう人はVSTO使えばいいというのがMSの方針じゃなかろうかね
0016デフォルトの名無しさん2016/04/29(金) 03:27:47.90ID:22q9RBL3
VBAの強みってOffice製品の機能の一部として捉えられてるおかげで
会社のセキュリティすり抜けられるっていう一点だけだから
好きなIDEが使えるならVBAにこだわる人間は少ないんじゃないか
0017デフォルトの名無しさん2016/04/29(金) 03:46:43.37ID:L3/tzjQ7
プログラミングができる、好きな学生が開発以外に行く→プログラミングができることを会社でポロっと言ってしまう→VBA地獄
こんな感じだよね。勝手にソフトウェア入れるわけにもいかないし、VBAじゃダメなの?と聞かれても俺じゃ納得させられないよ
0018デフォルトの名無しさん2016/04/29(金) 08:38:57.84ID:WJMtHckd
VBAさえ使いこなせない学生は他の言語いってもダメだろう
0019デフォルトの名無しさん2016/04/29(金) 08:54:03.96ID:KCDOC8aI
>>15
VBAみたいに気楽に使えるようにして欲しいわ
0020デフォルトの名無しさん2016/04/29(金) 09:54:43.92ID:5uxjIDtf
気軽じゃあないんだ・・・
0021デフォルトの名無しさん2016/04/29(金) 11:08:32.92ID:22q9RBL3
Visual Studioの許可申請通すための妥当な理由ってなんかあるかな
0022デフォルトの名無しさん2016/04/29(金) 11:13:45.24ID:hLQru2tB
.net使ってみたいんだけど、どこかにまとまった解説サイトってあるの?
0023デフォルトの名無しさん2016/04/29(金) 12:31:42.69ID:pnlNs8XQ
マジで集計マクロみたいなただの便利ツール作るのは苦行だな
自分でやれよと思ってしまう
みんなでクラス構成考えたりコードレビューとかしながら成長できる環境なら別にvbaでも構わんよ
0024デフォルトの名無しさん2016/04/29(金) 12:46:25.08ID:5uxjIDtf
エクセルVBAはツールとライブラリに分けよう

ツール: 電卓と一緒。大抵のことは自分でやれ。引き継ぎ対象にしない。
ライブラリ: 担当者がメンテする。ちゃんと引き継ぐ。
0025デフォルトの名無しさん2016/04/29(金) 12:49:00.15ID:Iep7JOlc
お前らエクセルちゃんをコキ使い過ぎやでマジに
0026デフォルトの名無しさん2016/04/29(金) 13:13:33.73ID:onpOySfz
>>21
こう言うツールを作れば作業時間が○○ぐらい減るので
△△円/月程度の費用削減が可能です
って説明すればいいかと
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
FINDでヒットしたセルに連番を振っていくんだけど、
右から列方向で連番を振る方法ありますか?

オプションで逆方向xlPreviousをつけても、
一番右下に1が振られるだけで、後の順序は
左から列方向したのと同じなのですが。
0030デフォルトの名無しさん2016/04/29(金) 13:55:01.28ID:22q9RBL3
>>29
Sub 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/UNtdR
>>28
expressでいいんでしょ?
0032デフォルトの名無しさん2016/04/29(金) 14:19:18.90ID:Fcw6JTQb
>>27
他の人の業務も早く正確にミスなく出来る
リードタイムも減って機会損失が少なくなるとか
0033デフォルトの名無しさん2016/04/29(金) 14:33:09.04ID:UCIGz4cp
>>30
FINDの引数でどうにかならないかと思っていましたが、
やっぱりforとifで判定していくしかないんですね。
ありがとうございます。参考になりました。
0034デフォルトの名無しさん2016/04/29(金) 16:56:22.77ID:VQFWKbyJ
>>29 >>33
通常のFINDとは逆順で検索したいんだよね?
右下から左に検索 & 下から上

1回目のみ FIND(・・・ ,SearchDirection:=xlPrevious,SearchOrder:=xlByRows)
2回目以降 FindPrevious()
でよくね?
やりたい事の意味を間違って受け取ってるかな?
0035デフォルトの名無しさん2016/04/29(金) 19:35:10.13ID:UCIGz4cp
>>34
言葉足らずですみません。
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
Excel2003から2013に変えたら、
時々、シートに配置したボタンが、どこかに飛んでいくようになった。

ブック名やシート名を指定してるのに、
全然関係ないセルに値を書き込みにいったり。

俺がバグってるだけ?
0037デフォルトの名無しさん2016/04/30(土) 01:05:44.58ID:bnyf9CY9
vbaのフォームは、フォームやコントロールのイベントを感知して、処理コードを書くことが出来ます。


それとは逆に、シートのセル例えば Range("A1")の値が変化することをイベントとすることで、
例えば、フォームのTextBox1の値を変化させることはできるかな?


超上級レベルのPGさん(C#, VB,net, Java経験者)、その方法を教えて。
0038デフォルトの名無しさん2016/04/30(土) 01:23:26.23ID:bQzkVaJ6
適当なセルに
=foo(A1)

と入れときゃいいんじゃないの?
その関数 foo の中でTextBox1の値を変化させる
0039372016/04/30(土) 01:27:16.13ID:bnyf9CY9
フォーム実行中にRange("A1")の値は、
外部アプリ、例えば、UWSCで書き込むものとします。
0040372016/04/30(土) 01:59:49.62ID:bnyf9CY9
自己解決しました。
0041372016/04/30(土) 02:03:47.30ID:bnyf9CY9
超上級レベルのPGさん(C#, VB,net, Java経験者)へ、

vbaでもvb.net のような、自作イベントなんてできるの?
RaiseEventのような。
0042デフォルトの名無しさん2016/04/30(土) 04:06:29.80ID:3b/0XXdC
>>41
VB6と一緒で一応ある。

以下のMSDNに載っている使用例のサンプルは、
VB6のコードのようでVBAで使うにはコントロール名など若干修正は必要だが

RaiseEvent ステートメント
https://msdn.microsoft.com/ja-jp/library/office/gg264327.aspx
0043デフォルトの名無しさん2016/04/30(土) 05:52:32.49ID:nOun1cZC
Excel で、インベーダーゲームを作っている本もあるから、

たぶん、様々なイベントもあるのだろう
0044デフォルトの名無しさん2016/04/30(土) 08:01:04.45ID:YWn/7cOt
>>41
あるものとないものがある。
ま、モノが違うから当然だけど。

例えば一定時間でイベントが発生するようなものは確かVB.Netでは3種類くらいあったと思ったけど、
VBAでは無いのでAPIを使ってコールバックさせるような感じで組まなければいけなかったりとか
0045デフォルトの名無しさん2016/04/30(土) 12:10:14.21ID:uVz81x78
GitHubで匿名通信(Tor、i2p等)ができるBitComet(トラッカーサイト不要でDHTだけで日本語検索可能)
みたいな、BitTorrentがオープンソースで開発されています
言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?
Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al

ちなみにオイラはCovenant(純粋P2Pのファイル共有ソフト)の完成が待ち遠しいプログラミングできないアスペルガーw
0046デフォルトの名無しさん2016/04/30(土) 12:37:56.63ID:3TsFkhxL
VBAからブラウザを操作するとき
いっぱいページ開いてタブを複数使ってるとき
各タブがbusyでまだ表示が終わってないかを判定するにはどうしたらいいですか?
調べた限りIEでのプロパティは取得できても各タブでのプロパティは取得できない。
0047デフォルトの名無しさん2016/04/30(土) 19:56:35.13ID:/rgv18x0
コードの書き方として、変数の宣言は関数の頭でまとめてやるのがいいのか、それとも使う直前にやるのがいいのかどちらでしょうか
また、使い終わった変数をもう使わないと明示する処理はありますか?
■ このスレッドは過去ログ倉庫に格納されています