ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part57
https://mevius.5ch.net/test/read.cgi/tech/1536583359/
Excel VBA 質問スレ Part58
■ このスレッドは過去ログ倉庫に格納されています
2018/11/19(月) 06:47:24.99ID:Qq88xGOU
302デフォルトの名無しさん
2018/12/21(金) 05:00:28.02ID:PkTs+Gix >>300
夜中まで必死に考えたんだろうな… w
夜中まで必死に考えたんだろうな… w
303デフォルトの名無しさん
2018/12/21(金) 07:57:42.03ID:zXpLrdoZ304デフォルトの名無しさん
2018/12/21(金) 08:20:20.78ID:j+w4FFhE305デフォルトの名無しさん
2018/12/21(金) 08:22:45.52ID:j+w4FFhE306デフォルトの名無しさん
2018/12/21(金) 08:32:12.60ID:choQhZIj 誰でも知ってるようなことでドヤ顔ww
307デフォルトの名無しさん
2018/12/21(金) 15:58:03.36ID:HaYV4Ucy 突っ込みが幼稚
308デフォルトの名無しさん
2018/12/21(金) 20:47:54.84ID:GEdmC2dK VBとVBAを間違えてるやつがいるよな
309デフォルトの名無しさん
2018/12/21(金) 22:54:11.09ID:PkTs+Gix310デフォルトの名無しさん
2018/12/22(土) 04:42:53.90ID:LntJy5xX アンカーを重ねて煽るのは幼稚
311デフォルトの名無しさん
2018/12/22(土) 06:45:30.74ID:FmWZGIo3312デフォルトの名無しさん
2018/12/22(土) 21:23:35.57ID:P36khfsB アンカーだけで煽った気になるのは幼稚
313デフォルトの名無しさん
2018/12/23(日) 00:54:04.25ID:9AXglOVX314デフォルトの名無しさん
2018/12/23(日) 09:47:19.69ID:qHW9w8NX315デフォルトの名無しさん
2018/12/23(日) 10:45:49.13ID:lGbB3Xz8316デフォルトの名無しさん
2018/12/23(日) 14:14:36.79ID:52OagQlj バカvsバカはまだ静かに継続中かw
317デフォルトの名無しさん
2018/12/23(日) 15:09:00.33ID:O7Ty6bBB listviewでマルチセレクトから通常にもどすさいに再描画してるんですが、そのさい行がずれるんですが listboxのtopindexみたいなものはないのでしょうか? どうすればずれないようにできますか?
318デフォルトの名無しさん
2018/12/23(日) 19:45:55.65ID:M7vXJwnP チェックボックス有効無効をきりかえるため再描画してます。その際行がずれます。 すみませんでした。
319デフォルトの名無しさん
2018/12/24(月) 22:13:09.28ID:USpopZY5 Excel VBAにlistviewなんてあったか?
320デフォルトの名無しさん
2018/12/24(月) 22:49:04.51ID:+FgUdfMA あるよぉ
321デフォルトの名無しさん
2018/12/24(月) 23:02:54.97ID:kr6Bf1Pl 参照設定でね。
322デフォルトの名無しさん
2018/12/24(月) 23:56:46.20ID:USpopZY5 それはVBAじゃないし
何を参照設定したかちゃんと書けよ
何を参照設定したかちゃんと書けよ
323デフォルトの名無しさん
2018/12/25(火) 00:16:00.70ID:su/K5Fi6 参照設定もVBAの機能の一つだろ
デフォルトでもいくつか入ってるし、ファイル操作する時はFSOを追加するし、Outlookの操作も定番のテクニックだし
デフォルトでもいくつか入ってるし、ファイル操作する時はFSOを追加するし、Outlookの操作も定番のテクニックだし
324デフォルトの名無しさん
2018/12/25(火) 01:26:51.15ID:fCRLWXqM ListViewはライセンス的に微妙なんだよな。
配る場合はダメだった気がする。
恐ろしく面倒な方法で実装すればライセンス的にも問題無いけどそこまでやれる人は殆どいないと思う。
配る場合はダメだった気がする。
恐ろしく面倒な方法で実装すればライセンス的にも問題無いけどそこまでやれる人は殆どいないと思う。
325デフォルトの名無しさん
2018/12/25(火) 01:55:29.77ID:fCRLWXqM あとツールボックス右クリックでその他のコントロールを参照設定とは呼びたくないな。
326デフォルトの名無しさん
2018/12/25(火) 07:15:44.70ID:wRBkGyE7 >>325
設置すると勝手に参照設定されますから、同じことです
設置すると勝手に参照設定されますから、同じことです
327デフォルトの名無しさん
2018/12/25(火) 08:33:21.08ID:gnAfBdjP お前が呼びたいとか呼びたくないとか、お前の気分なんぞ知ったことではない
328デフォルトの名無しさん
2018/12/25(火) 18:45:28.39ID:Is6QTt21 Excel に入ってるんじゃないの?
329デフォルトの名無しさん
2018/12/25(火) 23:18:20.70ID:wH59ARy4 入っとるね
330デフォルトの名無しさん
2018/12/26(水) 01:42:12.21ID:BN5rbpb6 いまのExcel VBAに標準でListViewあるのか?
331デフォルトの名無しさん
2018/12/26(水) 05:15:51.11ID:43KasKaO 標準の意味とは
VBA可の環境ならコントロールの追加は誰でもできるが
VBA可の環境ならコントロールの追加は誰でもできるが
332デフォルトの名無しさん
2018/12/26(水) 13:12:31.75ID:RgV9orAX シートのコピーでafter:=worksheets.countしても最後尾に追加されないことがあるんだけど何これ
通常なら問題無い 非表示シートだか同名シートだかが混ざると不穏な動きする
通常なら問題無い 非表示シートだか同名シートだかが混ざると不穏な動きする
333デフォルトの名無しさん
2018/12/26(水) 17:11:11.31ID:43KasKaO334デフォルトの名無しさん
2018/12/26(水) 17:49:40.48ID:Le9KM/M7 >>332
afterに入れるのはシートオブジェクトやで?
afterに入れるのはシートオブジェクトやで?
335デフォルトの名無しさん
2018/12/26(水) 21:16:35.59ID:Y8+MwfS4336デフォルトの名無しさん
2018/12/27(木) 18:50:28.99ID:0mQlyYIj Worksheets.Countだけ指定して最後尾にシート追加することもできるんだな。初めて知ったわ。
337デフォルトの名無しさん
2018/12/28(金) 00:28:35.21ID:M7adF/cl >>333
解決してるけど状況だけ説明
Thisworkbook.Worksheets("雛形").Copy After:=Thisworkbook.Worksheets(Worksheets.Count)
普通に実行出来て追加される けど末尾に追加されない
雛形シートは非表示で他にブック開いてないのが前提
原因は他の非表示シートが末尾にあったから?ぽい見えるシートの末尾に追加されてた
原因があってるのかは不明だけどコピーの前に全シート表示させる処理書いたら想定どおりに末尾に追加されたから解決としてそれ以上調べてない
解決してるけど状況だけ説明
Thisworkbook.Worksheets("雛形").Copy After:=Thisworkbook.Worksheets(Worksheets.Count)
普通に実行出来て追加される けど末尾に追加されない
雛形シートは非表示で他にブック開いてないのが前提
原因は他の非表示シートが末尾にあったから?ぽい見えるシートの末尾に追加されてた
原因があってるのかは不明だけどコピーの前に全シート表示させる処理書いたら想定どおりに末尾に追加されたから解決としてそれ以上調べてない
338デフォルトの名無しさん
2018/12/28(金) 08:07:29.84ID:7PkHI2ZE >>337
これで解決は酷いなあ。
このコードじゃダメだろ。
初心者が一番ハマるのに引っ掛かってる。
Worksheets.Countはどのブックのシート数を示してるの?
人間の思い込みと現実が違うことはよくある。
ブックが複数開いてたらThisworkbookがActiveとは限らない。
まあ、これが原因かどうかは分からんけど。
これで解決は酷いなあ。
このコードじゃダメだろ。
初心者が一番ハマるのに引っ掛かってる。
Worksheets.Countはどのブックのシート数を示してるの?
人間の思い込みと現実が違うことはよくある。
ブックが複数開いてたらThisworkbookがActiveとは限らない。
まあ、これが原因かどうかは分からんけど。
339デフォルトの名無しさん
2018/12/31(月) 13:34:36.98ID:P9+LicCn コピーしたシートも非表示に設定されてるからじゃね?
340デフォルトの名無しさん
2019/01/03(木) 20:12:26.04ID:m9d94GZ9 すみません、一般論として教えてください
一つのプロージャ内に複数のForNext文を使う場合
カウンタ変数はそれぞれ用意したほうがいいんでしょうか?
それとも全部「i」とかで固定したほうがいいんでしょうか?
一つのプロージャ内に複数のForNext文を使う場合
カウンタ変数はそれぞれ用意したほうがいいんでしょうか?
それとも全部「i」とかで固定したほうがいいんでしょうか?
341デフォルトの名無しさん
2019/01/03(木) 20:38:50.80ID:rHu6ErP8 単純にカウンタとしてしか意味が無くて充分に短いループなら全部iでいいよ
342デフォルトの名無しさん
2019/01/03(木) 20:52:55.74ID:m9d94GZ9 >>341
ありがとう
これまで全部「i」で統一してて他で使いたいときは違う変数に明け渡したり…ってしてたんだけど
この前業者の人が書いたコードを見たらそれぞれに変数を与えてたので…
デバッグの時に有利?とか何かプログラム業界の常識みたいなのがあるのかな?と気になって
ありがとう
これまで全部「i」で統一してて他で使いたいときは違う変数に明け渡したり…ってしてたんだけど
この前業者の人が書いたコードを見たらそれぞれに変数を与えてたので…
デバッグの時に有利?とか何かプログラム業界の常識みたいなのがあるのかな?と気になって
343デフォルトの名無しさん
2019/01/03(木) 21:24:04.00ID:3ahyrkeA >>342
自分の頭使えよ
自分の頭使えよ
344デフォルトの名無しさん
2019/01/03(木) 21:38:30.48ID:BKcPgeWW >>342
他で使いたいときに明け渡すなら最初からそれぞれ違う名前にした方がいいんじゃね
他で使いたいときに明け渡すなら最初からそれぞれ違う名前にした方がいいんじゃね
345デフォルトの名無しさん
2019/01/03(木) 22:08:38.04ID:/hb1raIC346デフォルトの名無しさん
2019/01/03(木) 22:16:13.64ID:rzUuzEne >>340
そもそもプロは1つのメソッドに複数のループを書かない
そもそもプロは1つのメソッドに複数のループを書かない
347デフォルトの名無しさん
2019/01/03(木) 22:45:11.18ID:9E4VKJOH348デフォルトの名無しさん
2019/01/03(木) 22:57:49.15ID:YFBXiFl7 >>342
ループがネストする場合にi,j,kとしたりするのは
FORTRAN由来でコンピュータ黎明期からある
https://qiita.com/yaju/items/38f63900491d4ac51af7
座標だとx,yとかで回したりもするがあまり長い名前は使わない方が良いかと
ループがネストする場合にi,j,kとしたりするのは
FORTRAN由来でコンピュータ黎明期からある
https://qiita.com/yaju/items/38f63900491d4ac51af7
座標だとx,yとかで回したりもするがあまり長い名前は使わない方が良いかと
349デフォルトの名無しさん
2019/01/03(木) 23:18:24.27ID:rHu6ErP8 i,j,kは慣習だけど、それ以外はループ変数といえど意味のある変数名を使うほうがいいぞ
長い名前使うなとか、インタプリタ時代の悪習でしかない
いかにわかりやすい変数名つけるかはセンスもあるけどな
長い名前使うなとか、インタプリタ時代の悪習でしかない
いかにわかりやすい変数名つけるかはセンスもあるけどな
350デフォルトの名無しさん
2019/01/03(木) 23:56:28.99ID:2qiD+7+U 俺は行ならrow、列ならcolumn、インデックスならindexとかにして
なるべくi, j, kとか使わないわ、別にこだわりはないけど
なるべくi, j, kとか使わないわ、別にこだわりはないけど
351デフォルトの名無しさん
2019/01/04(金) 00:30:47.29ID:3QLIqJfD 俺は一文字だけじゃ見失うから
iii jjj kkk ccc rrrって3文字連打してる
別の変数名への置換もしやすいしね
iii jjj kkk ccc rrrって3文字連打してる
別の変数名への置換もしやすいしね
352デフォルトの名無しさん
2019/01/04(金) 00:32:01.54ID:GFUZolCB みなさんどうもありがとう
自分はプログラム屋ではないので業界の常識?みたいなものがあれば知りたくて
今までは使うなら「i」、構造的にかぶるなら「j」あたりを使ってましたが
その都度意味のある変数を使う方が多いんでしょうか
その他の変数も基本一文字が多いんですけどこれもあまり誉められたことでは無いのかな
自分はプログラム屋ではないので業界の常識?みたいなものがあれば知りたくて
今までは使うなら「i」、構造的にかぶるなら「j」あたりを使ってましたが
その都度意味のある変数を使う方が多いんでしょうか
その他の変数も基本一文字が多いんですけどこれもあまり誉められたことでは無いのかな
353デフォルトの名無しさん
2019/01/04(金) 00:39:25.54ID:T+XMZC4N >>352
馬鹿は頭を使うことができんの?
馬鹿は頭を使うことができんの?
354デフォルトの名無しさん
2019/01/04(金) 02:10:11.62ID:+nkelZ7z >>350
そんな予約語っぽいの、使いたくない。
そんな予約語っぽいの、使いたくない。
355デフォルトの名無しさん
2019/01/04(金) 02:40:32.55ID:MgMPlhfY 俺は row col idx i i2 i3 をよく使う
356デフォルトの名無しさん
2019/01/04(金) 07:27:59.80ID:M3G9sl2d シート上の特定Rangeを表してるときならrowとcolumnもありだけど、一般にはiとjかな
それ自体が検索対象になることもまずないし
それ自体が検索対象になることもまずないし
357デフォルトの名無しさん
2019/01/04(金) 08:41:36.91ID:zy8oD3uq ローカルのカウンタ変数をiで使いまわしてるけどi2とか分けたほうが良いの?
好み?
好み?
358デフォルトの名無しさん
2019/01/04(金) 09:27:17.18ID:+4+fWqKR359デフォルトの名無しさん
2019/01/04(金) 09:54:15.33ID:DCvNugNP 個人目的ならそれこそ自由、自分が解りやすければなんでもいい
社内使用で他の人が今後も手を加える可能性があるなら
可読性と一般的な用途を考えてijk辺りがよいと思う
社内使用で他の人が今後も手を加える可能性があるなら
可読性と一般的な用途を考えてijk辺りがよいと思う
360デフォルトの名無しさん
2019/01/04(金) 10:05:37.21ID:NtMlYI+L カウンタ変数の1つや2つぐらいケチらず定義しろよ
それこそ先頭で
Dim i1 As Integer , i2 As integer,,, とかやっとけばいいだろ。
こう書くとIntegerよりLongだとか言い出すやつも出てくるけど w
それこそ先頭で
Dim i1 As Integer , i2 As integer,,, とかやっとけばいいだろ。
こう書くとIntegerよりLongだとか言い出すやつも出てくるけど w
361デフォルトの名無しさん
2019/01/04(金) 11:53:23.85ID:aVQoc2JA362デフォルトの名無しさん
2019/01/04(金) 12:16:24.95ID:YvLbWmko べきとかええねん
好きなようにしろや
好きなようにしろや
363デフォルトの名無しさん
2019/01/04(金) 12:17:38.62ID:M3G9sl2d integer使う意味が分からんぞ
ループカウンタに限らず
ループカウンタに限らず
364デフォルトの名無しさん
2019/01/04(金) 12:55:43.45ID:aVQoc2JA VBAは16ビットの時代から生き残ってるからなぁ
365デフォルトの名無しさん
2019/01/04(金) 14:22:56.70ID:dyujBTAs C++試食版みたいな
366デフォルトの名無しさん
2019/01/04(金) 15:06:28.56ID:FLK7qEcT 文字コードでInteger使うよ
367デフォルトの名無しさん
2019/01/04(金) 17:11:54.33ID:JnujQIz6 個人プログラムのときは Jは大文字にしてる
ijだとぱっと見差がないから
それから、行と列はc、r変数にしてる
ijだとぱっと見差がないから
それから、行と列はc、r変数にしてる
>>367
列・行では?
列・行では?
369デフォルトの名無しさん
2019/01/04(金) 22:12:41.23ID:ZmFghfmj officeのパッチにやられた
370デフォルトの名無しさん
2019/01/04(金) 22:26:40.57ID:zvNc5eXN i,j,kきらい
indexとかcountとかすき
rowIndexとかcolumnCountとかもっとすき
indexとかcountとかすき
rowIndexとかcolumnCountとかもっとすき
371デフォルトの名無しさん
2019/01/04(金) 22:35:43.15ID:8kQ9PR43 好き嫌いはチラシの裏に
372デフォルトの名無しさん
2019/01/05(土) 01:06:17.29ID:oO8mkqZ6 何が書いてあるのか、未来の自分がわかり、他人もわかるのが理想
昔ながらのルール(慣習)は理由なく破るべきではない
昔ながらのルール(慣習)は理由なく破るべきではない
373デフォルトの名無しさん
2019/01/05(土) 03:31:35.86ID:7TsgmPMW 意味のある変数なら意味のある名前をつけてくれよ
374デフォルトの名無しさん
2019/01/05(土) 07:37:32.77ID:1YbtJ0wD i j kは使い捨てのループカウンターとして世界中に広く認知されてるし入力のコストも低い
いちいち For TemporaryLoopCounter = 1 To 5 とか書きたい人は自由にすればいいけど、それこそ自己満足の世界だと思う
いちいち For TemporaryLoopCounter = 1 To 5 とか書きたい人は自由にすればいいけど、それこそ自己満足の世界だと思う
375デフォルトの名無しさん
2019/01/05(土) 08:45:01.70ID:ORiRzU3d 長く使うプログラムほど扱う対象が汎用的で、変数が具体的に何を指すとか
限定できないため i, j, k になりがち。
逆に具体的対象を扱うプログラムだと変数名も具体的にした方が良いだろうが
汎用的に長く使うものではない。
何が言いたいかというと別に何でもありません。
限定できないため i, j, k になりがち。
逆に具体的対象を扱うプログラムだと変数名も具体的にした方が良いだろうが
汎用的に長く使うものではない。
何が言いたいかというと別に何でもありません。
376デフォルトの名無しさん
2019/01/05(土) 09:11:07.61ID:xejHmutN かなり乱暴だが
> 変数名の長さはスコープの広さに比例させるべし
> 変数名の長さはスコープの広さに比例させるべし
377デフォルトの名無しさん
2019/01/05(土) 09:12:48.40ID:tCoREms1 >>376に同意
一般論でいうと、メンテナンス性に優れたプログラムを書くには次の点を意識するとよい
・変数の生存範囲はできるだけ狭く
・変数の生存期間はできるだけ短く
で、これを意識したプログラムの変数名は自然に短くなる
極論すれば、サブルーチンが適切に分割されていてサブルーチン名だけで何やってるか明らかなら、
その中の一時変数名なんか全部一文字でもいい
一般論でいうと、メンテナンス性に優れたプログラムを書くには次の点を意識するとよい
・変数の生存範囲はできるだけ狭く
・変数の生存期間はできるだけ短く
で、これを意識したプログラムの変数名は自然に短くなる
極論すれば、サブルーチンが適切に分割されていてサブルーチン名だけで何やってるか明らかなら、
その中の一時変数名なんか全部一文字でもいい
378デフォルトの名無しさん
2019/01/05(土) 14:06:52.83ID:eDAGI3vR そもそもループ回すのにループカウンタ使うのが時代遅れ
for each使え
for each使え
379デフォルトの名無しさん
2019/01/05(土) 14:09:46.21ID:tCoREms1 時代遅れとか言い出したらVBA自体が使えなくなる
ナンセンス
ナンセンス
380デフォルトの名無しさん
2019/01/05(土) 14:28:05.44ID:c7wm3fbX For Each とループカウンタ使うのとどちらも一長一短あるのを知らない人は早く初心者を脱出してね。
381デフォルトの名無しさん
2019/01/05(土) 15:07:14.98ID:ORiRzU3d 一長一短ていうか For Each はワンパターンな使い方しか出来ないからドヤ顔するようなもんじゃないな
382デフォルトの名無しさん
2019/01/05(土) 15:49:59.34ID:xejHmutN383デフォルトの名無しさん
2019/01/05(土) 16:01:26.52ID:oO8mkqZ6 C = A + B
って書けた方がいいな
って書けた方がいいな
384デフォルトの名無しさん
2019/01/05(土) 16:09:26.86ID:ORiRzU3d385デフォルトの名無しさん
2019/01/05(土) 16:17:56.11ID:xejHmutN >>383
それ自由度が低い
For a, b, c in A, B, C
If b <> 0 Then c = a / b Else c = 0
Next
みたいなことを書きたくなるとかありそうだし
それ自由度が低い
For a, b, c in A, B, C
If b <> 0 Then c = a / b Else c = 0
Next
みたいなことを書きたくなるとかありそうだし
386デフォルトの名無しさん
2019/01/05(土) 16:57:08.01ID:BR5BglFG linq for vba
387デフォルトの名無しさん
2019/01/05(土) 20:12:44.53ID:FzRtN9wJ >>376
しかしvbaにはプロシジャより狭いスコープがないんだよ
しかしvbaにはプロシジャより狭いスコープがないんだよ
388デフォルトの名無しさん
2019/01/05(土) 20:30:12.97ID:xejHmutN389デフォルトの名無しさん
2019/01/05(土) 20:53:20.75ID:tCoREms1 >>387
まともなプログラマならブロックスコープが欲しくなるような大きなプロシージャは書きません
まともなプログラマならブロックスコープが欲しくなるような大きなプロシージャは書きません
390デフォルトの名無しさん
2019/01/05(土) 20:57:58.68ID:FzRtN9wJ 実際使い捨てならそれで問題になる事はないんだが
使い捨てのループ変数がループ内でスコープが閉じないのがなぁ
あと宣言位置の問題もあるけど
使い捨てのループ変数がループ内でスコープが閉じないのがなぁ
あと宣言位置の問題もあるけど
391デフォルトの名無しさん
2019/01/06(日) 01:37:57.50ID:ckNCIF8F わかる方がいれば教えてください
ユーザーフォームに配置したラベルに、選択中のセルの値を表示したいです
他のセルをアクティブにしたらラベルの内容も次々と変わるようなものを作りたいです
初心者なりに考えたのですが、
セルの選択をダブルクリックにしてシートモジュールの
Private Sub Worksheet_BeforeDoubleClick(〜)
みたいなものを使うパターン、
ユーザーフォーム側にアクティブセルの値を表示するためのボタンをつけるパターン、
それくらいしかラベルに表示する方法が思いつきません
思っていた上に書いたような動きのものが作れません
そもそもそんなものは不可能でしょうか
セルをアクティブにするだけでそんな動きをするものは作れたとしても重くて(?)実用的じゃないでしょうか
ユーザーフォームに配置したラベルに、選択中のセルの値を表示したいです
他のセルをアクティブにしたらラベルの内容も次々と変わるようなものを作りたいです
初心者なりに考えたのですが、
セルの選択をダブルクリックにしてシートモジュールの
Private Sub Worksheet_BeforeDoubleClick(〜)
みたいなものを使うパターン、
ユーザーフォーム側にアクティブセルの値を表示するためのボタンをつけるパターン、
それくらいしかラベルに表示する方法が思いつきません
思っていた上に書いたような動きのものが作れません
そもそもそんなものは不可能でしょうか
セルをアクティブにするだけでそんな動きをするものは作れたとしても重くて(?)実用的じゃないでしょうか
392デフォルトの名無しさん
2019/01/06(日) 01:43:01.14ID:ckNCIF8F ユーザーフォームが出ている時だけワークシートイベントを発生させることってできますか?
393デフォルトの名無しさん
2019/01/06(日) 01:56:18.52ID:wuHdfDnO >>391
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
UserForm1.Label1.Caption = ActiveCell.Value
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
UserForm1.Label1.Caption = ActiveCell.Value
End Sub
394デフォルトの名無しさん
2019/01/06(日) 02:17:03.95ID:GQx3m9rS395デフォルトの名無しさん
2019/01/06(日) 06:33:59.75ID:VjyciGNt 自分もVBA初心者だけど書いてみます
>>392
既に言われてるけど、
イベントの発生は操作できないから受け取り側でフォームが読み込まれてるか調べて、
実行するか選択する形になる
思いつく方法は、
・フォームが一つしかないなら、UserFormsコレクション(読み込まれたフォームの一覧)の要素数が1以上かを調べる
・UserFormsコレクションに該当のフォーム名(typename関数で取得できる)があるか調べる
・印になるパブリック変数を宣言し、フォームのInitializeイベント(読み込まれた時に発生するイベント)で適当な値を代入させ、その値を調べる。
もしくはWithEvents(これを付けて宣言した変数のイベントを受け取れる)でシートのイベントを受け取るクラスモジュールを用意して、
それにフォームのラベルを操作させる方法もある
余程シートに依存した目的でない限り、個人的にはこちらの方が自然だと思う
>>392
既に言われてるけど、
イベントの発生は操作できないから受け取り側でフォームが読み込まれてるか調べて、
実行するか選択する形になる
思いつく方法は、
・フォームが一つしかないなら、UserFormsコレクション(読み込まれたフォームの一覧)の要素数が1以上かを調べる
・UserFormsコレクションに該当のフォーム名(typename関数で取得できる)があるか調べる
・印になるパブリック変数を宣言し、フォームのInitializeイベント(読み込まれた時に発生するイベント)で適当な値を代入させ、その値を調べる。
もしくはWithEvents(これを付けて宣言した変数のイベントを受け取れる)でシートのイベントを受け取るクラスモジュールを用意して、
それにフォームのラベルを操作させる方法もある
余程シートに依存した目的でない限り、個人的にはこちらの方が自然だと思う
396デフォルトの名無しさん
2019/01/06(日) 11:55:51.09ID:RBr8Qah/ Excel2010の人は1月3日版のアプデを入れないように
【Win】 WindowsUpdateで入れなくても良いKBリスト。2018年12月12日まで分
http://blog.livedoor.jp/nichepcgamer/archives/1039785182.html
【Win】 WindowsUpdateで入れなくても良いKBリスト。2018年12月12日まで分
http://blog.livedoor.jp/nichepcgamer/archives/1039785182.html
397デフォルトの名無しさん
2019/01/06(日) 13:03:05.58ID:BkO4LwOx >>395
こんな初心者おる?
こんな初心者おる?
398391-392
2019/01/06(日) 13:13:13.46ID:ckNCIF8F >>395さんが言ってることが全く分からないというか一度も触れた事がないので
これを機会に勉強してみます
謎のクラスモジュールを使ってみたいと思っていたので良かったです
みなさんありがとうございました
これを機会に勉強してみます
謎のクラスモジュールを使ってみたいと思っていたので良かったです
みなさんありがとうございました
399デフォルトの名無しさん
2019/01/06(日) 13:25:33.73ID:kaEteaA+400デフォルトの名無しさん
2019/01/06(日) 14:02:55.44ID:L4UGmOY3 >>397
新人研修の半ばぐらいかな
新人研修の半ばぐらいかな
401デフォルトの名無しさん
2019/01/06(日) 15:46:11.59ID:BcE7MgiE >>398
UserFormで直接WithEvents付きの変数使えるぞ
いろいろチェックとかはぶくとこんな感じ
Private WithEvents ws As Worksheet
Private Sub UserForm_Initialize()
Set ws = ThisWorkbook.Worksheets(1)
End Sub
Private Sub ws_SelectionChange(ByVal Target As Range)
Me.Label1.Caption = Target.Value
End Sub
UserFormで直接WithEvents付きの変数使えるぞ
いろいろチェックとかはぶくとこんな感じ
Private WithEvents ws As Worksheet
Private Sub UserForm_Initialize()
Set ws = ThisWorkbook.Worksheets(1)
End Sub
Private Sub ws_SelectionChange(ByVal Target As Range)
Me.Label1.Caption = Target.Value
End Sub
■ このスレッドは過去ログ倉庫に格納されています
