Excel VBA 質問スレ Part51

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (スププ Sd4a-O827)
垢版 |
2017/11/08(水) 11:26:30.13ID:+KUB1/9hd

スレ立ての際は一行目に
!extend:checked:vvvvv:1000:512
と入れてスレ立てして下さい

ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK

※関連スレ
VBAなんでも質問スレ Part2
http://mevius.2ch.net/test/read.cgi/tech/1432173164/
Access VBA 質問スレ Part1
http://mevius.2ch.net/test/read.cgi/tech/1328536426/
Excel総合相談所 126
https://mevius.2ch.net/test/read.cgi/bsoft/1496487719/

※前スレ
Excel VBA 質問スレ Part50
http://mevius.2ch.net/test/read.cgi/tech/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
2デフォルトの名無しさん (スププ Sd62-O827)
垢版 |
2017/11/08(水) 11:28:45.81ID:+KUB1/9hd
早速質問
今vbaでマップ使って
とある表の集計を行なっております
一つのkeyに対しアイテムが複数あるので
配列で入れようと思ったのですがうまくいきません
何か良い方法はありませんか?
2017/11/08(水) 18:45:21.53ID:oD3+O0e3E
Dim dic
Dim a()

redim a(1)
a(0)="test1"
a(1)="test2"

Set dic = CreateObject("Scripting.Dictionary")
dic.Add "key1", "アテネ"
dic.Add "key2", "ベオグラード"
dic.Add "key3", a

msgbox dic("key3")(0)
msgbox dic("key3")(1)
4デフォルトの名無しさん (ワッチョイ 4961-U2HA)
垢版 |
2017/11/08(水) 19:49:47.05ID:aX63wCUb0
前スレ
Excel VBA 質問スレ Part50
https://mevius.5ch.net/test/read.cgi/tech/1503805217/
5デフォルトの名無しさん (スプッッ Sd62-3K0w)
垢版 |
2017/11/08(水) 20:24:39.43ID:VRSOCYqCd
マップをやめて配列「で」入れる
って意味にとってたけど
マップの中に配列「を」入れる
って意味かよ
2017/11/09(木) 13:04:15.65ID:W66xKF5F0
アイテムが複数あっても同じkey 使えばいいんじゃねと思った
2017/11/09(木) 14:39:20.19ID:goVr3jSD0
集計をしたいって事じゃない?
2017/11/09(木) 20:19:01.12ID:HS5Oh82mM
>>6
やってみてから発言することをお勧めする
9デフォルトの名無しさん (ワッチョイ ffe9-d8GJ)
垢版 |
2017/11/09(木) 20:29:22.40ID:7b9amfpv0
いい言葉を見つけた
Those who know don't talk. (知ってる人は教えようとしない)
Those who talk don't know. (教えてる人はあまり知らない)
2017/11/09(木) 21:19:05.18ID:F89uizh+0
立て乙です。
自宅にエクセル環境が無いのでうろ覚えで
細かい間違いはあるかもですが、該当箇所以外はokという前提です

日本という名前のブック
各都道府県名のシート
があるとき

Dim Bn as Workbook
Dim T as Worksheet

Set Bn = Workbooks("日本")
Set T =Worksheets("東京都")

Workbooks("日本").Worksheets("東京都").cells(1,1) = "123"
Bn.T.cells(1,2) = "456"

を実行すると
上段は問題なく実行されて、東京都シートのセルA1に123が入力されますが
下段でエラーがでてしまいます。また

Bn.Worksheets("東京都").cells(1,2) = "456"
T.Worksheets("東京都").cells(1,2) = "456"

のどちらでも動きました
ブックもシートも両方変数で指定するとエラーになってしまうのでしょうか?
ブックもシートもそれなりに切り替えるので、可能であれば別で指定したいのですが……
心当たりがあればご教示いただけると助かります。
11デフォルトの名無しさん (ワッチョイ ffe9-FM5+)
垢版 |
2017/11/09(木) 21:25:44.32ID:7b9amfpv0
>>10
× Bn.T.cells(1,2) = "456"
○ T.cells(1,2) = "456"

オブジェクトの操作は慣れが必要だけど、こういうもんだと思っておくれ
12デフォルトの名無しさん (ワッチョイ 7feb-hKlY)
垢版 |
2017/11/09(木) 22:48:42.62ID:5mp2zjAU0
>>10
Bn.Tだと
workbookオブジェクトにTって言う属性や関数が無いからエラーになるのは当たり前
2017/11/09(木) 23:25:52.19ID:r1UnXx8k0
>>10
> Set Bn = Workbooks("日本")
> Set T =Worksheets("東京都")
ここは
Set T =Bn.Worksheets("東京都")
って書くべき
2017/11/09(木) 23:38:24.62ID:F89uizh+0
返答ありがとうございます。

やっぱり両方同時に変数指定はできないんですね……
何というか、指定先が変わる度にセットするのは見づらいような感じがしてまして

明日何とか考えてみようと思います。ありがとうございました
15デフォルトの名無しさん (ワッチョイ 7f1e-F71m)
垢版 |
2017/11/09(木) 23:57:00.50ID:3LOjlHPk0
  ●●●宇宙の外側に何があるのか?●●●
  http://jbbs.livedoor.jp/bbs/read.cgi/stud▲y/3729/1069922074/84-87

  この掲示板(万▲有サロン)に優秀な書き▲込みをして、総額148万円の賞金をゲットしよう!(*^^)v
  http://jbbs.livedoor.jp/stu▲dy/3729/ →リンクが不良なら、検▲索窓に入れる!
2017/11/10(金) 00:13:48.87ID:anK9LaNF0
>>10
名前(Workbooks)が一致していればいいってものじゃない。
オブジェクト.メンバ という構文なんだよ。メンバとはそのオブジェクトが持っているメソッドとかプロパティとかのこと。

しかし Bn.T と書くと、オブジェクトとオブジェクトを . で繋いだことになり、これは意味不明なものになる。
2017/11/10(金) 02:06:21.33ID:HkDX0vBax
コレクションかユーザー定義クラス使うかしたらいいと思うが
2017/11/10(金) 02:16:45.89ID:HkDX0vBax
>>16
質問者はオブジェクト.メンバの構文の意味が分かってなくてオブジェクトブラウザも見たことない人なんだろうな

オブジェクトのメンバ名を指定してメソッド関数やプロパティ関数を呼び出すことで別のオブジェクトインスタンスのコントロールを取得しているんだってことが理解できてないんだろう
2017/11/10(金) 10:37:51.15ID:3nhwt3Be0
>>10
>T.Worksheets("東京都").cells(1,2) = "456"
これホントに動いたのか?
WorksheetにWorksheetsプロパティとか無かったはずだけど

何がやりたいかよくわからんが
とりあえずブック名とシート名受け取って該当Worksheet返す関数作ればいいんじゃないかと
2017/11/10(金) 12:27:51.12ID:VovrPQN6d
ワークシートchangeでtargetのA1が代わったらコードが流れるようにしてて、それ以外はexitで抜けてるんだけど、コードがセルに転記してて毎回changeの所に戻ってはexit、戻ってはexitで見辛いのはなんとかなりませんか?
2017/11/10(金) 13:11:21.32ID:ooNCyCJx0
>>20
マクロの実行中に何度もセルに書き込みが発生する処理が美しくないので設計を見直す。
2017/11/10(金) 13:45:49.16ID:Fw2iLfOX0
作った人に聞いてみたら?
2017/11/10(金) 17:25:45.54ID:6gcbKBqNp
EnableEvents=False
でイベント制御したらだめなの?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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