探検
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に対しアイテムが複数あるので
配列で入れようと思ったのですがうまくいきません
何か良い方法はありませんか?
今vbaでマップ使って
とある表の集計を行なっております
一つのkeyに対しアイテムが複数あるので
配列で入れようと思ったのですがうまくいきません
何か良い方法はありませんか?
3デフォルトの名無しさん (エーイモ SE8d-dVlt)
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)
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:aX63wCUb05デフォルトの名無しさん (スプッッ Sd62-3K0w)
2017/11/08(水) 20:24:39.43ID:VRSOCYqCd マップをやめて配列「で」入れる
って意味にとってたけど
マップの中に配列「を」入れる
って意味かよ
って意味にとってたけど
マップの中に配列「を」入れる
って意味かよ
6デフォルトの名無しさん (ワッチョイ 5f8a-lB0v)
2017/11/09(木) 13:04:15.65ID:W66xKF5F0 アイテムが複数あっても同じkey 使えばいいんじゃねと思った
7デフォルトの名無しさん (ワッチョイ 5fb3-Q4Ea)
2017/11/09(木) 14:39:20.19ID:goVr3jSD0 集計をしたいって事じゃない?
8デフォルトの名無しさん (ドコグロ MM7f-kkiU)
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. (教えてる人はあまり知らない)
Those who know don't talk. (知ってる人は教えようとしない)
Those who talk don't know. (教えてる人はあまり知らない)
10デフォルトの名無しさん (ワッチョイ 5f61-KQ8c)
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"
のどちらでも動きました
ブックもシートも両方変数で指定するとエラーになってしまうのでしょうか?
ブックもシートもそれなりに切り替えるので、可能であれば別で指定したいのですが……
心当たりがあればご教示いただけると助かります。
自宅にエクセル環境が無いのでうろ覚えで
細かい間違いはあるかもですが、該当箇所以外は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:7b9amfpv012デフォルトの名無しさん (ワッチョイ 7feb-hKlY)
2017/11/09(木) 22:48:42.62ID:5mp2zjAU013デフォルトの名無しさん (ワッチョイ 7fb3-kkiU)
2017/11/09(木) 23:25:52.19ID:r1UnXx8k01410 (ワッチョイ 5f61-KQ8c)
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/ →リンクが不良なら、検▲索窓に入れる!
http://jbbs.livedoor.jp/bbs/read.cgi/stud▲y/3729/1069922074/84-87
この掲示板(万▲有サロン)に優秀な書き▲込みをして、総額148万円の賞金をゲットしよう!(*^^)v
http://jbbs.livedoor.jp/stu▲dy/3729/ →リンクが不良なら、検▲索窓に入れる!
16デフォルトの名無しさん (ワッチョイ 7fe7-TPjW)
2017/11/10(金) 00:13:48.87ID:anK9LaNF0 >>10
名前(Workbooks)が一致していればいいってものじゃない。
オブジェクト.メンバ という構文なんだよ。メンバとはそのオブジェクトが持っているメソッドとかプロパティとかのこと。
しかし Bn.T と書くと、オブジェクトとオブジェクトを . で繋いだことになり、これは意味不明なものになる。
名前(Workbooks)が一致していればいいってものじゃない。
オブジェクト.メンバ という構文なんだよ。メンバとはそのオブジェクトが持っているメソッドとかプロパティとかのこと。
しかし Bn.T と書くと、オブジェクトとオブジェクトを . で繋いだことになり、これは意味不明なものになる。
17デフォルトの名無しさん (アークセー Sx33-dU/l)
2017/11/10(金) 02:06:21.33ID:HkDX0vBax コレクションかユーザー定義クラス使うかしたらいいと思うが
18デフォルトの名無しさん (アークセー Sx33-dU/l)
2017/11/10(金) 02:16:45.89ID:HkDX0vBax >>16
質問者はオブジェクト.メンバの構文の意味が分かってなくてオブジェクトブラウザも見たことない人なんだろうな
オブジェクトのメンバ名を指定してメソッド関数やプロパティ関数を呼び出すことで別のオブジェクトインスタンスのコントロールを取得しているんだってことが理解できてないんだろう
質問者はオブジェクト.メンバの構文の意味が分かってなくてオブジェクトブラウザも見たことない人なんだろうな
オブジェクトのメンバ名を指定してメソッド関数やプロパティ関数を呼び出すことで別のオブジェクトインスタンスのコントロールを取得しているんだってことが理解できてないんだろう
19デフォルトの名無しさん (ワッチョイ ff9d-QXYS)
2017/11/10(金) 10:37:51.15ID:3nhwt3Be0 >>10
>T.Worksheets("東京都").cells(1,2) = "456"
これホントに動いたのか?
WorksheetにWorksheetsプロパティとか無かったはずだけど
何がやりたいかよくわからんが
とりあえずブック名とシート名受け取って該当Worksheet返す関数作ればいいんじゃないかと
>T.Worksheets("東京都").cells(1,2) = "456"
これホントに動いたのか?
WorksheetにWorksheetsプロパティとか無かったはずだけど
何がやりたいかよくわからんが
とりあえずブック名とシート名受け取って該当Worksheet返す関数作ればいいんじゃないかと
20デフォルトの名無しさん (スップ Sd1f-l+iR)
2017/11/10(金) 12:27:51.12ID:VovrPQN6d ワークシートchangeでtargetのA1が代わったらコードが流れるようにしてて、それ以外はexitで抜けてるんだけど、コードがセルに転記してて毎回changeの所に戻ってはexit、戻ってはexitで見辛いのはなんとかなりませんか?
21デフォルトの名無しさん (ワッチョイ ffb9-sJj3)
2017/11/10(金) 13:11:21.32ID:ooNCyCJx0 >>20
マクロの実行中に何度もセルに書き込みが発生する処理が美しくないので設計を見直す。
マクロの実行中に何度もセルに書き込みが発生する処理が美しくないので設計を見直す。
22デフォルトの名無しさん (ワッチョイ 5f8a-zl2n)
2017/11/10(金) 13:45:49.16ID:Fw2iLfOX0 作った人に聞いてみたら?
23デフォルトの名無しさん (ササクッテロル Sp33-Q4Ea)
2017/11/10(金) 17:25:45.54ID:6gcbKBqNp EnableEvents=False
でイベント制御したらだめなの?
でイベント制御したらだめなの?
24デフォルトの名無しさん (ガックシ 064f-x5jG)
2017/11/10(金) 18:26:04.03ID:DKnywXcl6 SolverOk関数のEngineまたはEngineDescの引数の規定値って何でしょうか?
25デフォルトの名無しさん (ワッチョイ ff9d-QXYS)
2017/11/11(土) 03:04:03.09ID:pW9oGH+o026デフォルトの名無しさん (ワッチョイ 7f41-sJj3)
2017/11/11(土) 08:36:27.60ID:Smy5DbHD0 MP4ファイルのプロパティ値を取得するプログラムでエラーが発生してしまいます
★の箇所で「'NameSpace'メソッドは失敗しました:'IShellDispatch6'オブジェクト」のダイアログが出ます
参照設定Microsoft Shell Controls and automaitonを追加してもだめでした
解決方法がわかれば教えてください
Private Sub CommandButton1_Click()
Dim Shell, Folder
Set Shell = CreateObject("Shell.Application")
Set Folder = Shell.Namespace(range("A1").Value) ←←←★
★の箇所で「'NameSpace'メソッドは失敗しました:'IShellDispatch6'オブジェクト」のダイアログが出ます
参照設定Microsoft Shell Controls and automaitonを追加してもだめでした
解決方法がわかれば教えてください
Private Sub CommandButton1_Click()
Dim Shell, Folder
Set Shell = CreateObject("Shell.Application")
Set Folder = Shell.Namespace(range("A1").Value) ←←←★
27デフォルトの名無しさん (ワッチョイ 7f41-sJj3)
2017/11/11(土) 09:03:00.19ID:Smy5DbHD0 >>26
こちらのサンプルでとりあえず動きましたお騒がせしました
Dim FSO As Variant, SHell As Variant, Folder As Variant
Set FSO = CreateObject("Scripting.FileSystemObject")
Set SHell = CreateObject("Shell.Application")
Set Folder = SHell.Namespace(FSO.GetFile(Songs(1)).ParentFolder.Path)
Cells(1, 1) = Folder.GetDetailsOf(Folder.ParseName(Target), 0)
こちらのサンプルでとりあえず動きましたお騒がせしました
Dim FSO As Variant, SHell As Variant, Folder As Variant
Set FSO = CreateObject("Scripting.FileSystemObject")
Set SHell = CreateObject("Shell.Application")
Set Folder = SHell.Namespace(FSO.GetFile(Songs(1)).ParentFolder.Path)
Cells(1, 1) = Folder.GetDetailsOf(Folder.ParseName(Target), 0)
28デフォルトの名無しさん (ワッチョイ ff81-ouqv)
2017/11/11(土) 12:39:17.23ID:KQr/r2/c0 エクセル2013を使用しています。
今、日付を手入力しているのですが、何かで見たのですが
カレンダーから選択して入力できる機能があるのですがエクセルでもできる方法ないでしょうか?
いろいろさがした所アクセスはできるのですがエクセルは標準でもなく
カレンダーコントールなるものあるみたいですが、アクセスもインストールしていないので
VBAマクロの中にもありません
今、日付を手入力しているのですが、何かで見たのですが
カレンダーから選択して入力できる機能があるのですがエクセルでもできる方法ないでしょうか?
いろいろさがした所アクセスはできるのですがエクセルは標準でもなく
カレンダーコントールなるものあるみたいですが、アクセスもインストールしていないので
VBAマクロの中にもありません
29デフォルトの名無しさん (アウアウカー Sad3-wagG)
2017/11/11(土) 14:37:40.42ID:iMxfLIL8a >>14
両方同時にではない。
Worksheetを変数に入れたということはブック情報も込みで入ってる。
だから便利なの。
Aブックのαシートを変数に入れてもその変数でBブックのαシートにアクセスできるわけじゃない。
君のBn.T式のやり方だとBブックのαシートにもアクセスできることになる。
それはBn.Worksheets(T)式と変わらない。
一方、もしBブックのαシートにアクセス出来ないのならBn.T式の意味が無い。
T式で良いわけだから。
両方同時にではない。
Worksheetを変数に入れたということはブック情報も込みで入ってる。
だから便利なの。
Aブックのαシートを変数に入れてもその変数でBブックのαシートにアクセスできるわけじゃない。
君のBn.T式のやり方だとBブックのαシートにもアクセスできることになる。
それはBn.Worksheets(T)式と変わらない。
一方、もしBブックのαシートにアクセス出来ないのならBn.T式の意味が無い。
T式で良いわけだから。
30デフォルトの名無しさん (アウアウカー Sad3-wagG)
2017/11/11(土) 15:59:40.18ID:D533txsCa >>27
動くのは結構なことだけどFSO無くてもファイル情報取れるよ。
他の部分で便利にFSO使ってるなら良いんだけどその部分だけ見たら無駄だよね。
Dim objShell As Object
Dim objFolder As Object
Dim objFItm As Object
Set objShell=CreateObject("Shell.Application")
Set objFolder=objShell.Namespace("C:¥Users¥Hoge¥Desktop")
Set objFItm=objFolder.ParseName("fuga.txt")
Debug.Print objFolder.GetDetailsOf(objFItm,3)
参照設定とか書いてるけど、それぞれの意味分かってる?
CreateObjectってのは、その場で名前を元にオブジェクトを作成する。
だからコード書いてる間にはどんなメソッドやプロパティがあるか分からないからインテリセンスでの候補が出ることもない。
参照設定は使うオブジェクトを事前に指定することでオブジェクトの型とかメソッド、プロパティにアクセス(インテリセンス等)しやすくするためのもので、CreateObject使ったり、オブジェクトの型をObjectにしてるんだったら意味がない。
CreateObjectで生成出来ないのも有るし参照設定のがある意味上位互換だけど人にコードを提示する場合は参照設定するよう指示も書かなくちゃなんないからCreateObjectでの例が多いんだけどさ。
もちろん、参照設定したら動くようになるなんてことも無い。
Dim objShell As Shell
Dim objFolder As Folder
Dim objFItm As FolderItem
Set objShell=New Shell
Set objFolder=objShell.Namespace("C:¥Users¥Hoge¥Desktop")
Set objFItm=objFolder.ParseName("fuga.txt")
Debug.Print objFolder.GetDetailsOf(objFItm,3)
動くのは結構なことだけどFSO無くてもファイル情報取れるよ。
他の部分で便利にFSO使ってるなら良いんだけどその部分だけ見たら無駄だよね。
Dim objShell As Object
Dim objFolder As Object
Dim objFItm As Object
Set objShell=CreateObject("Shell.Application")
Set objFolder=objShell.Namespace("C:¥Users¥Hoge¥Desktop")
Set objFItm=objFolder.ParseName("fuga.txt")
Debug.Print objFolder.GetDetailsOf(objFItm,3)
参照設定とか書いてるけど、それぞれの意味分かってる?
CreateObjectってのは、その場で名前を元にオブジェクトを作成する。
だからコード書いてる間にはどんなメソッドやプロパティがあるか分からないからインテリセンスでの候補が出ることもない。
参照設定は使うオブジェクトを事前に指定することでオブジェクトの型とかメソッド、プロパティにアクセス(インテリセンス等)しやすくするためのもので、CreateObject使ったり、オブジェクトの型をObjectにしてるんだったら意味がない。
CreateObjectで生成出来ないのも有るし参照設定のがある意味上位互換だけど人にコードを提示する場合は参照設定するよう指示も書かなくちゃなんないからCreateObjectでの例が多いんだけどさ。
もちろん、参照設定したら動くようになるなんてことも無い。
Dim objShell As Shell
Dim objFolder As Folder
Dim objFItm As FolderItem
Set objShell=New Shell
Set objFolder=objShell.Namespace("C:¥Users¥Hoge¥Desktop")
Set objFItm=objFolder.ParseName("fuga.txt")
Debug.Print objFolder.GetDetailsOf(objFItm,3)
31デフォルトの名無しさん (ワッチョイ ffe9-81rD)
2017/11/11(土) 16:02:23.93ID:vmoy6u3Z0 参照設定は極力しないほうが良いよね
参照設定を忘れてドハマリすることがたまによくある
参照設定を忘れてドハマリすることがたまによくある
32デフォルトの名無しさん (アウアウカー Sad3-wagG)
2017/11/11(土) 16:04:50.69ID:D533txsCa33デフォルトの名無しさん (ワッチョイ ffe9-81rD)
2017/11/11(土) 17:24:06.37ID:vmoy6u3Z034デフォルトの名無しさん (ワッチョイ 5fb3-4T/N)
2017/11/12(日) 05:18:36.72ID:Dmy+tyrb0 >>28
UserForm使えば簡単に自作できますよ。
年と月用のテキストボックスをつけて、年と月それぞれ増減させるために、スピンドルボタンをつける。
日付表示用のラベルを必要数用意。
年と月のテキストボックスの値に応じて、ラベルの表示を変更。
ラベルのクリックイベントで、年と月のテキストボックスとラベルのテキストを連結して、日付に変換。
ラベルのクリックイベントは、クラスでまとめれば、クリックイベントをたくさん書く必要もありません。
UserForm使えば簡単に自作できますよ。
年と月用のテキストボックスをつけて、年と月それぞれ増減させるために、スピンドルボタンをつける。
日付表示用のラベルを必要数用意。
年と月のテキストボックスの値に応じて、ラベルの表示を変更。
ラベルのクリックイベントで、年と月のテキストボックスとラベルのテキストを連結して、日付に変換。
ラベルのクリックイベントは、クラスでまとめれば、クリックイベントをたくさん書く必要もありません。
35デフォルトの名無しさん (ワッチョイ dff7-lMX+)
2017/11/12(日) 06:52:57.92ID:UfHz6itl0 スピンボタンな
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国国営メディア「沖縄は日本ではない」… ★5 [BFU★]
- 高市政権にパイプ役不在…日中高まる緊張 公明党の連立離脱影響、自民内にも懸念「自分でまいた種は自分で刈り取ってもらわないと」★2 [ぐれ★]
- 日本が「世界で最も魅力的な国」1位に!✨「魅力的な都市」では東京が2位 「魅力的な地域」は北海道が7位に [煮卵★]
- 台湾声明 「台湾は独立した主権国家、中国は台湾を統治したことがなく、中国は口出しする権利ない」 中国が高市首相に抗議で ★7 [お断り★]
- 「どうしようもない」 ため息つくアジアの玄関口 中国の訪日自粛で-福岡市 ★2 [蚤の市★]
- NY円、一時1ユーロ=180円台まで下落…1999年のユーロ導入以来初 ★2 [蚤の市★]
- 中国「高市が謝罪撤回しないとこれ全部なくなるけどどうする?」 [931948549]
- 高市の放漫財政が原因で日本国債大暴落!!!ザイム真理教崩壊へ!!! [252835186]
- 日経平均、49000円割れ 国賊高市を許すな [402859164]
- 東浩紀「日本はいままさに駆け引きをしている。」高市有事にピシャリ [834922174]
- んなっしょい🍬禁止🈲のお🏡
- 【悲報】ジャップってどの面下げて来年以降、戦没者追悼式典やる気なの🤔 [616817505]
