!extend:checked:vvvvv:1000:512
スレ立ての際は一行目に
!extend:checked:vvvvv:1000:512
と入れてスレ立てして下さい
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part47 [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1489557874/
※関連スレ
VBAなんでも質問スレ Part2
http://echo.2ch.net/test/read.cgi/tech/1432173164/
Access VBA 質問スレ Part1
http://echo.2ch.net/test/read.cgi/tech/1328536426/
Excel総合相談所 125
http://echo.2ch.net/test/read.cgi/bsoft/1481369538/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
探検
Excel VBA 質問スレ Part48 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ 6f8e-Fc1g)
2017/05/16(火) 08:24:45.78ID:iIGA/64l02デフォルトの名無しさん (アウアウカー Sa67-vcg+)
2017/05/16(火) 10:48:12.64ID:Gxqu5M/Va 前スレでScreenUpdating=Falseしない派いる?ってのがあったけど、コード書いてる時は基本しない。
あれで速くなったっていうのは基本コードが悪いだろ。
あれで速くなったっていうのは基本コードが悪いだろ。
3デフォルトの名無しさん (スップ Sd9f-F59I)
2017/05/16(火) 11:05:20.21ID:J7MMoyEGd4デフォルトの名無しさん (スップ Sd9f-F59I)
2017/05/16(火) 11:06:03.77ID:J7MMoyEGd 連続typo失礼
5デフォルトの名無しさん (ワッチョイ 934c-8ulf)
2017/05/16(火) 11:08:01.35ID:l+zZTb7Y0 ScreenUpdatingの有無で速度が左右されるのは、セルに値を入れる等して描画に影響する操作をする場合だけだから、
結果を吐き出す際に一度だけしかセルにアクセスしないとかなら要らないね。
結果を吐き出す際に一度だけしかセルにアクセスしないとかなら要らないね。
6デフォルトの名無しさん (オッペケ Sr27-fj9k)
2017/05/16(火) 12:41:08.19ID:6Q26Nvh7r >>5
表示の更新してんなら要るわ
あとエクセルでセルに値を書き込むことを「吐き出す」と言うのは
素人が玄人の真似して訳もわからずそれっぽい言葉使ってみました感が強すぎる
分かる人が見ればコイツ馬鹿だなってバレバレだからやめた方がいいぞ
表示の更新してんなら要るわ
あとエクセルでセルに値を書き込むことを「吐き出す」と言うのは
素人が玄人の真似して訳もわからずそれっぽい言葉使ってみました感が強すぎる
分かる人が見ればコイツ馬鹿だなってバレバレだからやめた方がいいぞ
7デフォルトの名無しさん (ドコグロ MM5f-FKuM)
2017/05/16(火) 12:57:55.01ID:fevd2QwgM 自称玄人 w
8デフォルトの名無しさん (スップ Sd9f-F59I)
2017/05/16(火) 13:01:13.42ID:J7MMoyEGd つまり量によるわけだな。
9デフォルトの名無しさん (スップ Sd9f-F59I)
2017/05/16(火) 13:03:31.49ID:J7MMoyEGd つまり量によるわけだな。
ScreenUpdating = False しないと辛くなってきたら、それは
ワークシートで管理するデータや式が多くなりすぎたという警告とみなすスタイルが成り立つ。
ScreenUpdating = False しないと辛くなってきたら、それは
ワークシートで管理するデータや式が多くなりすぎたという警告とみなすスタイルが成り立つ。
10デフォルトの名無しさん (アウアウカー Sa67-vcg+)
2017/05/16(火) 14:23:33.68ID:Gxqu5M/Va11デフォルトの名無しさん (スップ Sd9f-F59I)
2017/05/16(火) 14:27:59.56ID:J7MMoyEGd12デフォルトの名無しさん (JP 0Hff-+8ye)
2017/05/16(火) 14:53:18.62ID:Ilchk1CoH 不毛
13デフォルトの名無しさん (ワッチョイ 934c-8ulf)
2017/05/16(火) 14:57:07.86ID:l+zZTb7Y0 >>9
ワークシートから値を取り込んだり、値をワークシートに書き出したりっていう処理は、
Rangeを使えば一括して行うことが出来るので、データ量はそこまで問題にならない。
どちらかというと罫線、色、数式みたいな一括処理しづらいものが問題で、
ScreenUpdating次第で処理に大きく差が出る。
こういったものは保守も面倒なので手作業で代替出来ないかとか考えるといいかもね。
ワークシートから値を取り込んだり、値をワークシートに書き出したりっていう処理は、
Rangeを使えば一括して行うことが出来るので、データ量はそこまで問題にならない。
どちらかというと罫線、色、数式みたいな一括処理しづらいものが問題で、
ScreenUpdating次第で処理に大きく差が出る。
こういったものは保守も面倒なので手作業で代替出来ないかとか考えるといいかもね。
14デフォルトの名無しさん (ワッチョイ d30a-8Y85)
2017/05/16(火) 15:11:19.05ID:tw+4NZDm0 オートフィルタかけた後のデータの、特定の1列だけを配列に格納したいのですが、何かいい方法はないでしょうか
15デフォルトの名無しさん (ワッチョイ 934c-8ulf)
2017/05/16(火) 16:37:32.48ID:l+zZTb7Y0 >>14
SpecialCells(xlCellTypeVisible)で可視状態にあるセルだけを取り出せる。
SpecialCells(xlCellTypeVisible)で可視状態にあるセルだけを取り出せる。
16デフォルトの名無しさん (ワッチョイ 6f8e-SU9n)
2017/05/16(火) 19:14:29.63ID:iIGA/64l0 クラスモジュールって使いますか?
大抵のことはfornext、foreachで済んでしまうのですが、vbaでクラスを使ったほうが便利なのでしょうか
大抵のことはfornext、foreachで済んでしまうのですが、vbaでクラスを使ったほうが便利なのでしょうか
17デフォルトの名無しさん (ササクッテロレ Sp27-EjkN)
2017/05/16(火) 19:31:35.09ID:qhacRso4p >>16
必要かどうかってことなら必要ない
でも大がかりなの作るなら使って整理したほうがやりやすいんじゃないのかな
for文と比較する感覚がいまいち伝わってないから的はずれならごめんなさい
関数とか配列とかと比較するならわからなくもないんだけれど
必要かどうかってことなら必要ない
でも大がかりなの作るなら使って整理したほうがやりやすいんじゃないのかな
for文と比較する感覚がいまいち伝わってないから的はずれならごめんなさい
関数とか配列とかと比較するならわからなくもないんだけれど
18デフォルトの名無しさん (ワッチョイ 6f8e-yN95)
2017/05/16(火) 19:45:30.76ID:iIGA/64l019デフォルトの名無しさん (ワッチョイ 53c7-00IQ)
2017/05/16(火) 19:48:36.06ID:YL1OfOAE0 >>10
悪いけど素人しか使わんわそんな恥ずかしい言い方w
悪いけど素人しか使わんわそんな恥ずかしい言い方w
20デフォルトの名無しさん (ワキゲー MM5f-cKkg)
2017/05/16(火) 19:53:23.03ID:Y/+V2TLHM 言い方はどーだっていいんだよ
伝われば
伝われば
21デフォルトの名無しさん (アウアウカー Sa67-vcg+)
2017/05/16(火) 20:28:49.31ID:rEbfD8DUa22デフォルトの名無しさん (ワッチョイ 7f92-igRy)
2017/05/16(火) 21:04:28.77ID:ORpNRMoi0 Dim スコーン As New Class
↑このスコーン自体を引数に使うことは出来ますか?
スコーン.Name =
↑このスコーン自体を引数に使うことは出来ますか?
スコーン.Name =
23デフォルトの名無しさん (ワッチョイ 7f92-igRy)
2017/05/16(火) 21:05:07.95ID:ORpNRMoi0 スコーン.Name = "スコーン" とか書きたんくないですんけど。
24デフォルトの名無しさん (アークセー Sx27-YrL9)
2017/05/16(火) 21:12:00.81ID:qp8pXuJpx25デフォルトの名無しさん (ワッチョイ 7f92-igRy)
2017/05/16(火) 21:38:51.33ID:ORpNRMoi026デフォルトの名無しさん (アークセー Sx27-YrL9)
2017/05/16(火) 21:44:47.11ID:FLRqiZ6lx27デフォルトの名無しさん (ワッチョイ 6f8e-yN95)
2017/05/16(火) 21:48:13.03ID:iIGA/64l0 PHPならget_class()なんてそのまんまなものがあるんだけどね
vbaには無いっぽいな
vbaには無いっぽいな
28デフォルトの名無しさん (ワッチョイ 53c7-00IQ)
2017/05/16(火) 21:54:30.99ID:YL1OfOAE029デフォルトの名無しさん (ワッチョイ 7fa6-SU9n)
2017/05/16(火) 21:59:56.08ID:wnIq1TKW0 そんな法則は聞かないな
30デフォルトの名無しさん (アークセー Sx27-YrL9)
2017/05/16(火) 22:19:15.46ID:FLRqiZ6lx31デフォルトの名無しさん (ワッチョイ c3d5-8ulf)
2017/05/16(火) 22:30:24.74ID:H5+sVhHM0 なんで目的を聞くやつにレスを返してはいけないの?
質問の意図を汲もうとしているかもよ?
質問の意図を汲もうとしているかもよ?
32デフォルトの名無しさん (アークセー Sx27-YrL9)
2017/05/16(火) 22:33:38.25ID:FLRqiZ6lx33デフォルトの名無しさん (ワッチョイ 6f8e-sSiL)
2017/05/16(火) 22:35:06.66ID:iIGA/64l034デフォルトの名無しさん (ワッチョイ 53c7-00IQ)
2017/05/16(火) 22:44:02.80ID:YL1OfOAE035デフォルトの名無しさん (アークセー Sx27-YrL9)
2017/05/16(火) 22:49:11.64ID:FLRqiZ6lx36デフォルトの名無しさん (ワッチョイ 7fa6-SU9n)
2017/05/17(水) 00:01:38.90ID:qRwApybV0 >>33
制御の向きが逆だよなあ
制御の向きが逆だよなあ
37デフォルトの名無しさん (アークセー Sx27-Zgtb)
2017/05/17(水) 00:23:20.25ID:sfPoWe8nx TypeName関数で自作クラス名って取り出せないんだっけ?
38デフォルトの名無しさん (ワッチョイ 6f8e-nvoP)
2017/05/17(水) 00:32:22.34ID:9uxtifvV0 >>37
それはできるけど、Meがない
Meがあればなんとでもできる
標準モジュール
Sub foo()
Set c = New Class1
'これはできる
Debug.Print TypeName(c)
End Sub
'クラスモジュール
Private Sub Class_Initialize()
'これができない
Debug.Print Me.TypeName
End Sub
それはできるけど、Meがない
Meがあればなんとでもできる
標準モジュール
Sub foo()
Set c = New Class1
'これはできる
Debug.Print TypeName(c)
End Sub
'クラスモジュール
Private Sub Class_Initialize()
'これができない
Debug.Print Me.TypeName
End Sub
39デフォルトの名無しさん (ワッチョイ 8344-irHX)
2017/05/17(水) 00:39:06.93ID:dws00LGS0 クラス内部で つかうんなら
これじゃいかんのか?
Debug.Print TypeName(Me)
これじゃいかんのか?
Debug.Print TypeName(Me)
40デフォルトの名無しさん (ワッチョイ 6f8e-nvoP)
2017/05/17(水) 00:45:43.01ID:9uxtifvV0 >>39
すまん、いけた
解決!
標準モジュール
Sub foo()
Set bar = New Class1
Debug.Print bar.get_name()
End Sub
'クラスモジュール
Public name
Private Sub Class_Initialize()
name = TypeName(Me)
End Sub
Function get_name()
Debug.Print Me.name
End Function
すまん、いけた
解決!
標準モジュール
Sub foo()
Set bar = New Class1
Debug.Print bar.get_name()
End Sub
'クラスモジュール
Public name
Private Sub Class_Initialize()
name = TypeName(Me)
End Sub
Function get_name()
Debug.Print Me.name
End Function
41デフォルトの名無しさん (アークセー Sx27-Zgtb)
2017/05/17(水) 00:51:22.92ID:sfPoWe8nx 解決やな
42デフォルトの名無しさん (ワッチョイ 7f92-igRy)
2017/05/17(水) 17:27:48.02ID:mwqvXh9q043デフォルトの名無しさん (JP 0Hff-+8ye)
2017/05/17(水) 17:53:56.84ID:GJ9WSlKVH44デフォルトの名無しさん (ワッチョイ 53c7-00IQ)
2017/05/17(水) 20:29:29.04ID:G7cUCqPy0 俺は今重要な判断を下した
お前らは事務のねーちゃんよりスキルが低い
少なくともうちの事務のねーちゃんより低い事は確実だ
お前らは事務のねーちゃんよりスキルが低い
少なくともうちの事務のねーちゃんより低い事は確実だ
45デフォルトの名無しさん (ワッチョイ 6f8e-yN95)
2017/05/17(水) 21:05:07.82ID:9uxtifvV046デフォルトの名無しさん (ワッチョイ aaa6-kvD5)
2017/05/18(木) 06:43:55.44ID:PgOUGGac0 24歳
女
マイクロソフトジャパン勤務
女
マイクロソフトジャパン勤務
47デフォルトの名無しさん (アークセー Sx13-JCxV)
2017/05/18(木) 08:36:51.83ID:7Fv0UmYNx48デフォルトの名無しさん (ワッチョイ eef3-8cHL)
2017/05/18(木) 14:52:51.70ID:5nCvEgDF0 Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Target.Address
Case "$A$1"
If Not IsNumeric(Target.Value) Or Target.Value = "" Then
Exit Sub
Range("B1:B9").Copy Range("B2")
Range("B1").Value = Range("A1").Value
Target.Select
End Select
End Sub
このコードの意味教えてくださいー
Select Case Target.Address
Case "$A$1"
If Not IsNumeric(Target.Value) Or Target.Value = "" Then
Exit Sub
Range("B1:B9").Copy Range("B2")
Range("B1").Value = Range("A1").Value
Target.Select
End Select
End Sub
このコードの意味教えてくださいー
49デフォルトの名無しさん (ワッチョイ 7f0a-3/HR)
2017/05/18(木) 15:34:33.70ID:ZtOQ2Qac0 まずは実行してみたらどうだ
50デフォルトの名無しさん (ワッチョイ 7e75-hgKb)
2017/05/18(木) 17:11:10.34ID:d+oDyp660 Private Sub Worksheet_Change(ByVal Target As Range)
ここに、Subの処理を定義する
End Sub
Select Case Target.Address
ここに、Caseの処理を定義する
End Select
Select Case Target.Address
// Target.Address が、"$A$1"なら
Case "$A$1"
// Target.Value が数値ではない、または、空文字列なら、Subを抜ける
If Not IsNumeric(Target.Value) Or Target.Value = "" Then
Exit Sub
// copy
Range("B1:B9").Copy Range("B2")
// 代入
Range("B1").Value = Range("A1").Value
// 選択?
Target.Select
End Select
ここに、Subの処理を定義する
End Sub
Select Case Target.Address
ここに、Caseの処理を定義する
End Select
Select Case Target.Address
// Target.Address が、"$A$1"なら
Case "$A$1"
// Target.Value が数値ではない、または、空文字列なら、Subを抜ける
If Not IsNumeric(Target.Value) Or Target.Value = "" Then
Exit Sub
// copy
Range("B1:B9").Copy Range("B2")
// 代入
Range("B1").Value = Range("A1").Value
// 選択?
Target.Select
End Select
51デフォルトの名無しさん (ワッチョイ 268e-kvD5)
2017/05/18(木) 19:06:48.56ID:hKe3x/Mw052デフォルトの名無しさん (オッペケ Sr13-sIut)
2017/05/18(木) 19:21:07.71ID:f5T5khCgr53デフォルトの名無しさん (オイコラミネオ MM76-88zL)
2017/05/18(木) 22:27:14.87ID:EwzTzSyyM マウスポインターの移動量かマウスのスクロール量を検知って出来ますか?
54デフォルトの名無しさん (ワッチョイ da61-iXcy)
2017/05/18(木) 23:31:41.56ID:fbyfCIXE0 form上の話ならMouseMoveイベント使えばなんとかなるんじゃね?
form以外でならwin32api(GetCursorPosとか)を駆使すれば
form以外でならwin32api(GetCursorPosとか)を駆使すれば
55デフォルトの名無しさん (ワッチョイ 6bb2-PZTw)
2017/05/19(金) 12:10:12.11ID:Hh88K1uA0 最新版のExcelで、ファイルを開いた直後にだけコンパイルエラーが出るようになったから絶対更新しないほうがいいぞ
エラーが出るのは
Function ProcName(cel As Range) As Double
とか、パラメータにAs Rangeを持つところみたいで
一応As Objectに変えてしまえば通るけど、治すの大変だ・・・
エラーが出るのは
Function ProcName(cel As Range) As Double
とか、パラメータにAs Rangeを持つところみたいで
一応As Objectに変えてしまえば通るけど、治すの大変だ・・・
56デフォルトの名無しさん (ワッチョイ 6bb2-PZTw)
2017/05/19(金) 12:26:18.38ID:Hh88K1uA0 関連してそうな情報を発見
https://blogs.msdn.microsoft.com/office_client_development_support_blog/2017/05/17/
とうとう本気で.xls形式を殺しに来たか
https://blogs.msdn.microsoft.com/office_client_development_support_blog/2017/05/17/
とうとう本気で.xls形式を殺しに来たか
57デフォルトの名無しさん (ワッチョイ 7f0a-3/HR)
2017/05/19(金) 12:27:06.53ID:OupscBB+0 >>55
なんていうか、まあ頑張れ
なんていうか、まあ頑張れ
58デフォルトの名無しさん (ワッチョイ 6b44-7DzV)
2017/05/19(金) 12:49:41.54ID:P+QgsC3b059デフォルトの名無しさん (ワッチョイ 6bb2-PZTw)
2017/05/19(金) 13:13:31.21ID:Hh88K1uA0 >>58
すまない。新規ブックでは検証していなかった。
問題無いことを確認
14.0.718.5000
16.0.7927.1024
コンパイルエラーを確認
15.0.4927.1002
16.0.8067.2115
なので、>>58の環境でも発生すると思う。
新規ブックで、
Module1に
Function ProcName(cel As Range) As Double
ProcName = cel.Value
End Function
Sub btn_Click()
MsgBox "click"
End Sub
を書いて、ブック上のシェイプのマクロにbtn_Click()を割り当てるとファイルを開いた瞬間にだけコンパイルエラーが起こるよ
上記URLによれば、モジュール範囲の定義なら起こるらしいので
Private 変数 As Workbook
Sub btn_Click()
MsgBox "click"
End Sub
でもダメぽ
解決策はAs Objectとするか、モジュールを切り分けるしかない。
すまない。新規ブックでは検証していなかった。
問題無いことを確認
14.0.718.5000
16.0.7927.1024
コンパイルエラーを確認
15.0.4927.1002
16.0.8067.2115
なので、>>58の環境でも発生すると思う。
新規ブックで、
Module1に
Function ProcName(cel As Range) As Double
ProcName = cel.Value
End Function
Sub btn_Click()
MsgBox "click"
End Sub
を書いて、ブック上のシェイプのマクロにbtn_Click()を割り当てるとファイルを開いた瞬間にだけコンパイルエラーが起こるよ
上記URLによれば、モジュール範囲の定義なら起こるらしいので
Private 変数 As Workbook
Sub btn_Click()
MsgBox "click"
End Sub
でもダメぽ
解決策はAs Objectとするか、モジュールを切り分けるしかない。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- テレビ朝日 本社から男性が転落し死亡。関連会社社員か 当たった通行人が左肩軽傷 [阿弥陀ヶ峰★]
- 「これいいじゃん!!!」 セブン-イレブンの1620円で買える“1人用クリスマスケーキ”🎂に注目殺到「天才すぎる」 [パンナ・コッタ★]
- テレビ朝日本社から20~30代の関連会社社員とみられる男性が転落し死亡 六本木けやき坂通りの通行人にはけが人なし [少考さん★]
- 高市早苗首相が天理教系企業に“巨額発注” 総額5000万円 本人は「政治団体の活動に必要な支出」と回答 ★2 [Hitzeschleier★]
- 小島瑠璃子さん、代表取締役を務める会社を破産申請 [牛丼★]
- 「残クレ」でマイホーム、国が銀行向け保険 新型住宅ローン普及促す -日経 ★3 [少考さん★]
- 橘こぉた来いや!!!
- 【悲報】ジャップ、日中戦争に賛成が5割弱...軍歌の音が聞こえる... [856698234]
- 隣の部屋のデブがこっちにまで聞こえる声量でアクビするのがストレスなんだけどマジで死んでくれないかな
- 【乞食速報】プロクオリティ ビーフカレー 96食 4262円 [268244553]
- 【悲報】小泉防衛大臣、中国のレーダー照射事件をNATO事務総長に報告 [834922174]
- 【すこん部🏡】白上フブキ🦊配信中❗【ホロライブ▶】
