Excel VBA 質問スレ Part72

■ このスレッドは過去ログ倉庫に格納されています
2021/07/18(日) 08:42:15.37ID:KskL7bEXd
!extend:checked:vvvvv:1000:512
↑同じ内容を2行貼り付けるナリ

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

※前スレ
Excel VBA 質問スレ Part70
https://mevius.5ch.net/test/read.cgi/tech/1616072923/
Excel VBA 質問スレ Part71
https://mevius.5ch.net/test/read.cgi/tech/1621914481/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2021/08/28(土) 16:39:25.21ID:XzPbf7xa0
>>680
ぶっといの気にならない?
単なる美的センス的なこだわりだからとくに意味はないんだけどね
ぶっとい枠線だらけの表とかみるとデザインセンスというか旧時代的な印象うけてしまう
2021/08/28(土) 16:40:04.12ID:XzPbf7xa0
>>677
Excelで0.75とかひければ問題ないんですけどね
2021/08/28(土) 16:49:11.38ID:clAN9KQWM
そもそも罫線レイアウトが旧時代的だよ
2021/08/28(土) 17:01:08.85ID:Wn50/Mou0
>>681
さすがに旧時代的な印象だからって理由だったなら
なぜExcelで?ってなるぞw
2021/08/28(土) 17:03:13.47ID:XzPbf7xa0
>>683
でも印刷だと最低限は必要じゃない?
数十行ならんでるととくに

交互に色変えるのはモノクロやプリンタによって大きくかわるからねえ
2021/08/28(土) 17:04:05.90ID:XzPbf7xa0
>>684
線以外は不満ない
Accessも線選べないから細い四角をかいてならべてる
2021/08/28(土) 17:15:47.71ID:6AjG+XmcM
そこまで帳票にこだわるならCrystal Reportsとか使えばいいのに
https://www.sap.com/japan/products/crystal-visual-studio.html
2021/08/28(土) 17:21:15.10ID:W6iJhC5F0
>>687
クリスタルレポート、アクティブレポート、PDFも別言語では使うけどEXCEL使う場合も多いからやっぱり抑えておくべきだよ。
特にここ、EXCEL VBAのスレだし。
2021/08/28(土) 17:23:01.48ID:XzPbf7xa0
>>687
>>688
はじめて聞きましたが世界標準なんですね
日本語ではあまり情報がないみたいですね
2021/08/28(土) 17:27:11.56ID:W6iJhC5F0
>>689
今は特に気にしなくていいよ。
そもそもVBAから使ったことないから
VBAから使えるか分からんし。
2021/08/28(土) 19:16:34.16ID:6UyriYnia
VBA使って作るぐらいだから大げさなものではないと思うから正直なところ明細の罫線はなくてもかまわないのではと思う
罫線信仰については日本は細かいと思うわ
それなら偶数行の背景に薄いグレーの背景色をつけたほうがきれいに見えるかと
2021/08/28(土) 19:21:46.63ID:P0+dXebs0
帳票とかでも罫線レイアウトしてるのはただ単に四角く収まってるだけで別に使いやすくともなんともないんだよな
項目の意味より見た目の収まりでレイアウトしてるから意味不明だし書き込むスペースが足りなかったりするし
2021/08/28(土) 19:22:16.12ID:XzPbf7xa0
>>691
モノクロレーザーだと濃淡でないのでスクリーントーンみたいになるんですよね

これみてたけど線があったりなかったり色付きだったり
なんか世界的な基準とかあるんですかね?
https://i.imgur.com/GQyzXam.jpg
2021/08/28(土) 19:51:56.00ID:6UyriYnia
どんなプリンタ使ってるか不明だけど印刷品質とかでモノクロレーザーでもそれなりな背景色つけられると思うから
プリンタ側の設定みなおしてみたほうがよいのでは

基準なんて別にないでしょ作り手(提供者)のセンスだけかと
695デフォルトの名無しさん (アウアウウー Sa85-HBgv)
垢版 |
2021/08/28(土) 20:04:28.62ID:qSiuLs4Ta
濃いグレーと薄いグレーがどう印刷されるかな
2021/08/28(土) 20:16:48.82ID:k0s+jeSJH
Excelの設定でも解像度が指定できるしモノクロレーザーの設定でも濃度や網点の細かさぐらい変更できるのに
2021/08/28(土) 20:45:50.31ID:XzPbf7xa0
>>696
300dpiだと文字がガタガタ
600dpiだと一番細いとされる点線が印刷されませんね
2021/08/29(日) 10:34:22.30ID:7BYV+8iF0
任意のセルを選択(飛び地あり)→数式の入っているセル全て値貼り付けしたくて作成しました
動くのですが100万を超えるデータで動かすと1分以上かかってしまいます
2次元配列?を使えば高速化できますか
配列は使ったことがなく説明を読んでも難しく混乱していしまいました
よろしくお願いします

Dim Sc As Range

Application.Calculation = xlManual
 
Selection.SpecialCells(xlCellTypeFormulas, 23).Select
 
For Each Sc In Selection
    Sc.Value = Sc.Value
Next Sc
2021/08/29(日) 10:45:24.11ID:lED3Ocwo0
>>698
selectionしなければ早くなるかも

Sub Macro2()
Application.Calculation = xlManual
For Each Sc In Selection.SpecialCells(xlCellTypeConstants, 23)
Sc.Value = 5
Next Sc
End Sub
2021/08/29(日) 10:45:44.98ID:HK4nM9G2a
>>698
Selectionは極力使わない方がいい

数式の入ったCellsをUnionしていって、最後にUnion範囲に対して値貼り付けすれば?
2021/08/29(日) 10:46:46.41ID:lED3Ocwo0
違った、こうか

Sub Macro2()
Application.Calculation = xlManual
For Each Sc In Selection.SpecialCells(xlCellTypeConstants, 23)
Sc.Value = Sc.Value
Next Sc
End Sub

しかし選択してるのは定数なのに、valueをvalueにするの?
あんまり意味ない気がするんだけど
2021/08/29(日) 11:23:08.03ID:7BYV+8iF0
>>701
ありがとうございます
試してみます

コピペを繰り返すより代入した方が早い、と出たので上記のようになりました
Range一辺倒だったのでUnionも調べてみます
2021/08/29(日) 11:34:43.22ID:IYYa0ToFM
>>698
> Selection.SpecialCells(xlCellTypeFormulas, 23).Select

>>701
> For Each Sc In Selection.SpecialCells(xlCellTypeConstants, 23)
> しかし選択してるのは定数なのに、valueをvalueにするの?
> あんまり意味ない気がするんだけど

2021/08/29(日) 12:40:07.80ID:TcEoTH9E0
>>698
数式セルだけに限定しないで
全部貼り付けちゃえばいいんじゃないの

Sub Macro3()
Dim temp()
temp = Selection
Selection = temp
End Sub
2021/08/29(日) 13:20:16.41ID:TcEoTH9E0
>>698
あー選択が飛び地か 
飛び地のRangeを順に取得する関数ってあったっけ 
思いつかないので以下のように修正版。
splecialcellsを使う必要がない気がするが尊重して入れておいた
//
Sub Macro4()
Application.Calculation = xlManual
Application.ScreenUpdating = False
myAddress = Split(Selection.SpecialCells(xlCellTypeFormulas, 23).Address, ",")
Dim temp()
For Each EE In myAddress
temp = Range(EE)
Range(EE) = temp
Next
End Sub
2021/08/29(日) 13:22:53.01ID:FZqboG1a0
>>704
ひとつずつ処理するよりもこういう考え方が正しい
2021/08/29(日) 13:24:14.88ID:7BYV+8iF0
698です
色々と案をありがとうございます

>>701は構文エラーとなってしまいました
たしかにSelectionを使わなければ早くなりそうではあるのですが…

またUnionでまとめる方法は飛び地がなければ良さそうですが、左に詰めて貼り付けされてしまい欲しい結果が得られませんでした

>>704
こちらも隣接セルのみであれば問題なさそうなのですが複数セルだと1番左の列は問題ないものの他のセルが元データとは異なるデータがペーストされてしまいました

私の理解不足であれば申し訳ありません

ちなみに列選択をした際に少しでもループを減らしたかったため数式セルに限定してみただけなので選択部分まとめてでも問題ありません
2021/08/29(日) 13:25:52.00ID:7BYV+8iF0
>>705
更新せず書き込みすみません
試してみます
2021/08/29(日) 13:34:12.51ID:lED3Ocwo0
>>701だけどスマン、間違えてた上にすげーアホなことやってたわ

>>698
>任意のセルを選択(飛び地あり)→数式の入っているセル全て値貼り付けしたくて作成しました

Sub tgggMacro2()
Range("a1:z100").Value = Range("a1:z100").Value
End Sub

これでアカンのか
※cells.valueだとメモリ不足になる
2021/08/29(日) 18:40:28.03ID:7BYV+8iF0
>>705
試してみました
成功する時と途中でオブジェクトの型が一致しない、とエラーになる場合があるようです
配列を理解できておらず、なぜエラーになるのか解決策にたどり着けていません
単独セルを選択している箇所でエラーになるように思います
実際に使用する際は1セルだけを選択することはまずないとは思うのですが…

>>709
せっかく書いていただいたのですが求めている内容ではなさそうです
全て代入していいならほんとラクなんですけどね
2021/08/29(日) 19:03:27.49ID:FZqboG1a0
>>710
数式セルを値貼り付けするならなんで709じゃだめなん?
2021/08/29(日) 19:06:25.69ID:7BYV+8iF0
>>711
対象のセルはファイルによって異なりますが数式をあえて残すセルもあります
シート内の計算結果を全て値にしたい訳ではないのです
2021/08/29(日) 19:29:10.08ID:sPGAkNt40
後だしぃ
2021/08/29(日) 19:29:59.26ID:sl9xswiTM
rangeを配列に格納
配列内で特定セルに該当する部分を値に書き換えて
一気に貼り付ける
2021/08/29(日) 19:35:54.89ID:7BYV+8iF0
え…始めから飛び地ありの任意セルを選択した状態って書いてあるのに後出しと言われましても…
2021/08/29(日) 19:50:08.61ID:lED3Ocwo0
>>698
恐らくこれが一番早いと思います
飛び地で値でコピーペーストはできないし、
配列はしんどい

Sub Macro2()

Application.Calculation = xlCalculationManual ' 手動計算にする
Application.ScreenUpdating = False ' 描画を停止する

For Each Sc In Selection.SpecialCells(xlCellTypeFormulas, 23)
Sc.Value = Sc.Value
Next Sc

Application.Calculation = xlCalculationAutomatic ' 自動計算にする
Application.ScreenUpdating = True ' 描画を再開する

End Sub

>>711
要は
・選択部分を値にするマクロが欲しい
・値にする部分はフォーマットによって変わる
※社内で様々なフォーマットがあり、今はそれぞれを作り込む暇がないので「選択+値化」で逃がしている

という事なのだろう


>>714
飛び地ありで配列にうまく入れる方法ってあるのかな
2021/08/29(日) 19:58:18.50ID:1aCvHSMxH
ワークシート→配列は無関係なセルも一気に読み込んで、書き戻す時は1個ずつにしてもそこそこスピードアップできそうな気がする
2021/08/29(日) 21:48:01.74ID:TcEoTH9E0
>>710
もう手間のかかる子だなぁw
Sub Macro5()
Application.Calculation = xlManual
Application.ScreenUpdating = False
myAddress = Split(Selection.SpecialCells(xlCellTypeFormulas, 23).Address, ",")
Dim temp()
For Each EE In myAddress
If Range(EE).Count = 1 Then
Range(EE).Value = Range(EE).Value
Else
temp = Range(EE)
Range(EE) = temp
End If
Next
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub

100万を超えるデータで動かすと何秒で終わるか教えてね
2021/08/29(日) 22:34:44.25ID:lED3Ocwo0
>>718
横だけど
Dim temp()
temp = Range(EE)
Range(EE) = temp

これは
Range(EE).value =Range(EE).value
じゃダメなの?
2021/08/29(日) 22:40:30.11ID:zuaG9uH70
最後にそもそも値貼付けする理由がないとかいうオチが待ってそうだな
2021/08/29(日) 23:13:06.85ID:TcEoTH9E0
>>719
あ!ほんとだ
配列という言葉にこだわっちゃって無駄なことをしてたねw
Sub Macro6()
Application.Calculation = xlManual
Application.ScreenUpdating = False
myAddress = Split(Selection.SpecialCells(xlCellTypeFormulas, 23).Address, ",")
For Each EE In myAddress
Range(EE).Value = Range(EE).Value
Next
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
2021/08/29(日) 23:18:37.19ID:TcEoTH9E0
そのそもrelaxtoolsとかになかったっけw
確認してないけど
2021/08/29(日) 23:53:07.29ID:V4lHBgfX0
エクセルVBAが、現在最も重宝される言語だってのはわかるし
自分も随分それで助けられてるんだけど、その次に学ぶべきなのは
なんなんだろう。

VBA自体が終わった言語なのは明らかだし・・・。

JavaScript ? Rust? その他?
2021/08/30(月) 00:31:07.88ID:ckBh8waKH
>>723
言語は手段、重要なのは目的
何をやりたいかで選べ
たとえばスマホアプリを作りたいならJava
2021/08/30(月) 00:36:33.71ID:HHMxmKKh0
VBAが必要な理由てさ、元データがExcelだから
これ以上でもこれ以下でもないよね
そしてそれはこれからも変わらないもの
2021/08/30(月) 07:18:10.56ID:lQLq+TuC0
>>723
js:
ブラウザのコンソールに入力or拡張機能が非常に強力
web関連では大体なんでも出来る
ただ言語の仕様が色々と特殊

php:
webサーバー作りたいならこれ
本格運用しようとすると、覚える事は非常に多い
特にセキュリティが鬼門

rust:
新機能てんこもりの革新的な言語!は大体廃れる
2021/08/30(月) 08:10:18.19ID:g9J4xp5m0
>>723
VBAを学んだのなら
VBA → VB.Net → C# が楽だろう。
VB.Netは文法的にはほぼVBAと一緒だから
.Netの構成を覚えることに専念出来る。
VB.Netを覚えてしまえば次はC#だな。
逆に構成がVB.Netと殆ど一緒なので
VBA → VB.Net を覚えるときより楽に
覚えることが出来るだろう。

もしWeb系をやりたいなら
VBA → ASP.Net(VB) → ASP.Net(C#)と
言ったところか。

自信があるならVBA → C#でも構わないが、
折角だから寄り道してついでにVB.Net覚えて
おいても損はないだろう。
2021/08/30(月) 08:17:51.42ID:g9J4xp5m0
JavaScriptはWeb系やるのであれば必須言語だが、これはWebやるときに必要に迫られて変な話だけどやらざるを得なくなって勝手に身につく。
DB扱うのにSQLが必須になるのと同じ。
Rustはまだ扱っている書籍やサイトが少ないのでもう少し待ってからでも良いと思う。
2021/08/30(月) 12:20:59.93ID:a1GphOXp0
>>723
もしかしてVBAしかできない人?
興味があるなら全部やればいいじゃん
2021/08/30(月) 12:52:53.22ID:4aBvuqYpa
次にって言葉を汲んであげてもいいと思うな
サラダ食ったあと次にカレーとデザートどっち食べるべきか聞かれても「興味あるなら全部食え」ってレス付ける?
2021/08/30(月) 13:18:03.24ID:a1GphOXp0
食いたいもん食えよ
俺なら食いたいもん全部食うけどな
2021/08/30(月) 13:19:04.91ID:a1GphOXp0
そもそも興味があるのにやらないでいるこ理由がわからない
2021/08/30(月) 13:29:28.16ID:qdrPJ241M
ズラがずれてるぞ
2021/08/30(月) 13:37:49.06ID:ckBh8waKH
今は個別の言語の文法よりも、大量のライブラリにどんな機能があるかを知る方が重要
クラスやAPIをどれだけ知ってるかで作れる物が決まるんで
2021/08/30(月) 13:40:48.19ID:a1GphOXp0
結局やらないでしょう
2021/08/30(月) 13:43:40.08ID:txgJXV1kM
>>723
GASとかPowerFXとかSalesforceとか
VBA上がりなら本格的なプログラミングよりローコードに行ったほうがすぐ役立てられてコスパいいよ
2021/08/30(月) 17:19:00.03ID:KZUgc5l+a
スレチなんでそろそろプログラマ板いってやればいいのでは
2021/08/30(月) 18:03:03.80ID:SLXKrFaKa
HTAのVBScriptでExcel操作って出来ましたっけ?
2021/08/30(月) 20:36:23.51ID:AiTAdVKh0
2年くらい前にここでお世話になって、会社でもかなりVBA触るポジションができて、かなり成長した
(皆さんありがとう)
クラスモジュールを触ったことがないんだけど、経験のため触っておいた方がいい?
理解が深まるなら触りたい
2021/08/30(月) 21:34:10.98ID:PPAHi4pc0
エクセルでフィルターがかけられないんですが、
誰か助けてください
1列を指定して並び替えとフィルターを開いてフィルター(F)を押せません。
ちなみに空白業はないのですが、、、
2021/08/30(月) 21:41:22.45ID:PPAHi4pc0
解決しました
2021/08/30(月) 21:43:52.41ID:zNy1vYFAM
>>738
昔はできた記憶があるけどセキュリティとか厳しくなってるから今でもできるかはよくわからん
2021/08/30(月) 22:40:05.22ID:mO4hpp7AM
>>739
たかがVBAにクラスなんか要らんよ
並のスキルのVBAerにメンテできなくなるから害悪ですらある
2021/08/30(月) 23:22:00.02ID:g9J4xp5m0
>>739
VBAのクラスは継承が使えないから敬遠されがちではあるが、逆に他言語では委譲の知識を疎かにしがちだからやっておいても損はないな。
メソッド名を文字列で指定して呼び出すCallByNameのような命令もクラスでないと使えない気がしたしな。
2021/08/30(月) 23:24:06.07ID:lQLq+TuC0
>>739
vbaのクラスはコンストラクタも継承もない
どうせやるなら別言語を勉強するか、
sheetやcellsオブジェクトのメンバやメソッドでも眺めてる方が有意義と思う
2021/08/30(月) 23:52:32.26ID:g9J4xp5m0
>>745
引数が渡せないだけでコンストラクタやデストラクタはあるのでは?
2021/08/31(火) 01:57:49.48ID:ihx26wcM0
>>739
経験の為に触るのなら自宅の個人PCで作るだけにしとけ
まず職場で見ることができる全てのExcelVBAのコード眺めてみて、
全てを理解できるようになるのが先
2021/08/31(火) 03:43:06.41ID:JZqVSHwg0
>>739
何でもそうだけど使い処というものがあって、ひょっとしたらその機能を使えばもっと簡潔にコードが書けたり後でテストがし易くなったり、改修がし易くなるかも知れない。

けど、それがどういったものか分からなければ本当に使うべきか、どういった使い方をすべきかも分からない。だからまずそれがどういったものであるかを調べる必要がある。

調べた上で使うべきかどうかは自分で判断すること。
「結局使う必要がないなら無駄足じゃん!!」という結論に行き着くかも知れない。けど調べてついた知識は無駄にはならない。
興味があるのなら何でも調べてみればいい。
749デフォルトの名無しさん (ワッチョイ 3d5f-uZV+)
垢版 |
2021/08/31(火) 05:26:47.90ID:Bq4JJtE70
Googleスプレッドシートに置き換えが進んでいるのにExcelをできるだけ残させるような発想がよくわからない。

マイクロソフト内でも切るべき機能とされているのに。
2021/08/31(火) 06:03:59.14ID:Ns860ecPM
>>749
> Googleスプレッドシートに置き換えが進んでいる
> マイクロソフト内でも切るべき機能とされている
妄想でないならソースよろしく
2021/08/31(火) 06:42:25.04ID:yu36xbaqd
>>749
新しい部署や若い会社とかならそうなのかもしれないけど、長続きして規模の大きい会社は大人数がずっとExcel使ってきてる訳だし、今更急にスプレッドシートに切り替えとか出来ないよ

マクロなら尚更
VBAからGASに書き換えるのも面倒だし、スクリプトを編集するにもアカウントの権限が必要なせいで他部署へ許諾が必要な職場もあって面倒だったよ
2021/08/31(火) 07:10:44.50ID:yu36xbaqd
>>739
もう運用しているブックについてはクラスモジュールに書き換えなくていいよ
引き継ぎの際にクラスモジュール扱える人が担当になるとは限らないしね

ただ、自衛策として1度は扱っておいた方がいいよ
自分が引き継いだブックにクラスモジュールあったりしたら大変だしね。それに折角学ぼうとしてる所だし
2021/08/31(火) 07:11:08.63ID:i7ARXDZV0
VBAやマクロゴリゴリのExcelが社内にない状態が想像できないのだが

スプレッドシートって代替できるの?
2021/08/31(火) 07:25:24.78ID:yu36xbaqd
>>753
シート上の編集とかブック内の処理で済むようなマクロならば、スプレッドシートへ移動可能

ただ、サーバからCSVが送られてきて、マクロによってそのCSVを開いてから処理する、とかならば移動が出来てないのが実情かなあ

なにせ、Excelで何ら問題なく業務できてるってなら、わざわざサーバやらブックやら仕様を変更してまでスプレッドシートに移すメリットは無いしね。仕様書作り直し、単体、結合テストやり直しとか無駄に工数かかるし。

社全体がスプレッドシートに切り替えるってなら知らん
2021/08/31(火) 08:07:31.43ID:JZqVSHwg0
変な話だな
EXCELをWebで扱うなら
余程金の無い中小企業でも無い限り
Office365の企業用ライセンス取得して
Web版EXCELに移行するのが
自然な流れだと思うのだが。

もっとも通常はEXCELそのものを
Web上でツールとして扱うのも考え辛い。
何故ならEXCELなどよりもっと
Wrbでツール作るのに向いた言語が
幾らでもあるからだ。
そういう場合はEXCELはダウンロードされる
1ファイルという立ち位置になるからな。
2021/08/31(火) 10:03:50.16ID:Kb4xw5qb0
With Worksheets("Sheet1")

.Columns("1"). Copy Destination_
= ThisWorkbook.Worksheets("Sheet2").Columns("1")

Sheet1のA列をSheet2にコピーするマクロを書いたのですが
1004エラーが出てしまいます。
どう直せばいいでしょうか?
2021/08/31(火) 10:11:41.55ID:7DaXmsNEa
>>756
こんな感じでは
With Worksheets("Sheet1")

.Columns("A:A").Copy Destination:=ThisWorkbook.Worksheets("Sheet2").Columns("A:A")
End With
2021/08/31(火) 10:17:59.90ID:rtPimGdF0
Sub TEST1()
'「1つ目」のグラフの「1つ目」の系列の「名前」
Debug.Print ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).Name
End Sub

基本的な質問ですみません
グラフに折れ線グラフが10本あって、その内1本をグラフ上で選択している時に
選択している系列名をVBAで取得するにはどう書けばいいでしょうか?
あるいはSeriesCollection(1)の1という数字の部分が何なのか取得できますか?
759デフォルトの名無しさん (アウウィフ FF85-4thN)
垢版 |
2021/08/31(火) 10:34:44.96ID:RXuTL+ZfF
forでまわしてselectedで見る
とか
2021/08/31(火) 10:44:19.53ID:rtPimGdF0
>>759
すみませんもう少し詳しく
selectedというのはどういう使い方をするんでしょう?
2021/08/31(火) 11:03:21.16ID:0ik848aIM
マクロの記録で見れ
2021/08/31(火) 11:13:09.09ID:rtPimGdF0
これでは以下のエラーが出るのですが
どこが間違ってますでしょうか?よろしくお願いします

for i = 1 to ActiveChart.SeriesCollection.Count
If ActiveChart.SeriesCollection(i).Selected Then
beep
endif
next


実行時エラー'438':
オブジェクトは、このプロパティまたはメソッドをサポートしていません。
2021/08/31(火) 11:30:45.05ID:NESsP7iO0
>>762
まず、ActiveなChartがあるかを確認

そして、ChartObjectはマクロの記録どおりに動かないことが多いので、ActiveChartの後に.Chartを挿入して試してみる

参考
http://officetanaka.net/excel/vba/graph/09.htm
2021/08/31(火) 12:01:04.19ID:7DaXmsNEa
>>762
こういうのはどう?
Private Sub Chart_Select(ByVal ElementID As Long, ByVal Arg1 As Long, ByVal Arg2 As Long)
If ElementID = xlSeries Then
Debug.Print ActiveChart.SeriesCollection(Arg1).Name
End If
End Sub
2021/08/31(火) 13:36:21.23ID:rtPimGdF0
>>763
for 文の直後に
ActiveChart.SeriesCollection(i).select
とすると折れ線グラフは次々と選択されるのでChartはあると思うのですが
if文入れるとエラーが出ます・・・
的外れなこと言ってたらゴメンなさい

>>764
検索するとアドイン?のイベントプロシージャになるんでしょうか?
かなり調べてみないと自分には理解できないかもしれません・・・

もう少し頑張ってみます
2021/08/31(火) 13:40:47.87ID:bSK5W0WOM
>>765
if文中の
selected

select
煮汁
2021/08/31(火) 13:44:13.64ID:1uDof6e+M
ごめんちがう
selectedはなさそう
2021/08/31(火) 13:58:00.53ID:7DaXmsNEa
>>765
ブックにグラフのシートがあるならそのシートのChratのSelectってイベントをクリックすると
Private Sub Chart_Select(ByVal ElementID As Long, ByVal Arg1 As Long, ByVal Arg2 As Long)
End sub
が生成されるかと
それともグラフはワークシートにあるのかな?
2021/08/31(火) 14:04:57.78ID:rtPimGdF0
>>768
そうです、グラフはワークシートにあります
2021/08/31(火) 14:59:11.50ID:l9psb/TLM
>>758
グラフが選択されてるのが確実なら
Application.Selection.Name
確実じゃないなら
If TypeName(Application.Selection) = "Series" Then ...
でガードすればいい
771デフォルトの名無しさん (ワッチョイ 6101-4DG9)
垢版 |
2021/08/31(火) 15:12:15.10ID:rtPimGdF0
>>770
有難うございます、取得できました!
これで行きたいと思います。ありがとうございました
2021/08/31(火) 15:17:16.32ID:7DaXmsNEa
>>769
最小限しか書いてないので自分で手直ししてほしいけどこんなのはどうでしょう
1.クラスモジュールを追加する
2.クラスモジュールに下記を実装する(チャートのイベントを実装)
Public WithEvents myChart As Chart

Private Sub myChart_Select(ByVal ElementID As Long, ByVal Arg1 As Long, ByVal Arg2 As Long)
If ElementID = xlSeries Then
Debug.Print myChart.SeriesCollection(Arg1).Name
End If
End Sub
3.ThisWorkbookに下記を実装する(クラスにチャートを紐づける)
Private myClass1 As New Class1

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If ActiveSheet Is Nothing Then

Exit Sub
End If
If ActiveSheet.ChartObjects.Count = 0 Then

Exit Sub
End If
Set myClass1.myChart = ActiveSheet.ChartObjects(1).Chart
End Sub
2021/08/31(火) 15:43:05.57ID:rtPimGdF0
>>772
有難うございます!クラスモジュール最近勉強したばかりなので
是非使いこなして活用させて頂きます!ありがとうございました
2021/08/31(火) 15:48:49.52ID:xY3Kg19k0
どうしても分からないので教えて下さい

以下
http://excel-ubara.com/excelvba4/EXCEL299.html
より引用

Option Explicit

Public mOnTime As Date

Sub TimerProc()
 Range("A1") = Now()
End Sub

Sub OnTimeStart()
  Call TimerProc
  mOnTime = Now() + TimeSerial(0, 0, 1)
  Call Application.OnTime(mOnTime, "OnTimeStart")
End Sub

Sub OnTimeStop()
  '同一のProcedureとEarliestTimeがないとエラーになる
  On Error Resume Next
  Call Application.OnTime(mOnTime, "OnTimeStart", , False)
End Sub

これを丸ごとコピーして標準モジュールに貼り付けて実行しようとすると
「変数が定義されていません」というコンパイルエラーが出ます
どうやら「mOnTime」という変数が反応していないようです

何が原因として考えられるのでしょうか
2021/08/31(火) 16:45:55.34ID:qfiRyurv0
一番上の
option explicit
をコメントアウト
2021/08/31(火) 17:08:05.95ID:0UudHHzs0
悪い方向にいざなってないか。それw
2021/08/31(火) 17:16:59.73ID:xY3Kg19k0
流石に程度の低い釣りには引っかかりません
(自己解決しました)
2021/08/31(火) 19:12:54.95ID:XB01+IxZa
程度の低いだってさ
こんなド素人ちゃんにまで小馬鹿にされるオプション付けない派には流石に同情しちゃうね
2021/08/31(火) 20:04:02.76ID:xY3Kg19k0
ひねくれすぎててワロタ
元々オプションありで書かれているのに
オプション外して解決するのは根本的に違うでしょって話

もしかして疲れて病んでる人だったのかな
お疲れ様です
2021/09/01(水) 00:14:30.58ID:LgfjpVVJ0
>>757
ありがとうございます。解決しました。
イコールの前にコロンがいるんですね。
2021/09/01(水) 04:40:05.79ID:vx5cHFWE0
ユーザーフォームから
A1に数字が入力され
B1からB7まで同じく数字が入力され
A1が月で、B1からB7を日として
C1〜に
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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