!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
スレ立ての際は一行目に
!extend:checked:vvvvv:1000:512
と入れてスレ立てして下さい
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part48
http://mevius.2ch.net/test/read.cgi/tech/1494890685/
※関連スレ
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/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
探検
Excel VBA 質問スレ Part49©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ bb2e-8SzA)
2017/06/26(月) 02:15:14.60ID:T3ylemnb0129デフォルトの名無しさん (ブーイモ MMfb-MhHl)
2017/07/06(木) 02:37:48.69ID:2ggUG7GkM >>123
Resizeで1行追加して、配列を1行減らせばいいんじゃないかと思った。
Resizeで1行追加して、配列を1行減らせばいいんじゃないかと思った。
130デフォルトの名無しさん (ワッチョイ d72b-KuRC)
2017/07/07(金) 06:50:33.44ID:k9X/9vlT0 すいません
パソコンのエクセル2016で作ったVBAをスマホで動かすことはできますか?
スマホでVBAの作成編集は無理のようなので
パソコンのエクセル2016で作ったVBAをスマホで動かすことはできますか?
スマホでVBAの作成編集は無理のようなので
131デフォルトの名無しさん (スプッッ Sd3f-nGAm)
2017/07/07(金) 07:44:52.11ID:6QLBDLc9d >>130
むしろ教えてもらいたい
むしろ教えてもらいたい
132デフォルトの名無しさん (ワッチョイ 7773-zf8i)
2017/07/07(金) 08:54:05.14ID:KQxBqvcO0 関数でがんばれ
133デフォルトの名無しさん (ワッチョイ bf23-M/n7)
2017/07/07(金) 21:24:02.96ID:IxSbuhab0134デフォルトの名無しさん (スプッッ Sdbf-kebf)
2017/07/07(金) 21:25:43.56ID:t0FXhP6Gd ノートでも画面狭く感じるのにスマホでなんてストイック過ぎる
135デフォルトの名無しさん (ワッチョイ ff8f-KuRC)
2017/07/07(金) 22:19:46.83ID:02peKi+J0 アリエッティだから…
136デフォルトの名無しさん (ワッチョイ 778b-QU0D)
2017/07/07(金) 23:07:11.35ID:tdv0VtnU0 ネゴシックスだから…
137デフォルトの名無しさん (ワッチョイ 97ea-okny)
2017/07/07(金) 23:13:49.66ID:q3zfwuJv0 vbaってエクセル用の言語?
他にも使えるの?
他にも使えるの?
138デフォルトの名無しさん (ワッチョイ bf6d-LaqR)
2017/07/07(金) 23:24:32.16ID:IHJ5BTGs0 アクセスやワードでも使えるよ
アクセスvbaはたまによく使う。SQL覚えたほうがいいけど
ワードはワード自体使わん
アクセスvbaはたまによく使う。SQL覚えたほうがいいけど
ワードはワード自体使わん
139デフォルトの名無しさん (ワッチョイ d701-LW04)
2017/07/07(金) 23:41:29.01ID:cLxiai6C0 初歩的な質問で、すみません。
vbaの公式本で独学で勉強中なのですが、
なぜこうなるのかわかりません。
よければ教えてほしいです。
不明点:
@なぜnumがセルa1〜a3だと認識されるのか。
b1〜b3も記述しているので、b1〜b3と認識されないのはなぜか。
Aこういうもんだと言われればそれまでなのですが、
ほかにもnum以外に自動認識されるような用語はあるのでしょうか。
Sub sampel()
Range("b1") = percent(Range("a1"))
Range("b2") = percent(Range("a2"))
Range("b3") = percent(Range("a3"))
End Sub
Function percent(num) As String
percent = num / 100 & "%"
End Function
vbaの公式本で独学で勉強中なのですが、
なぜこうなるのかわかりません。
よければ教えてほしいです。
不明点:
@なぜnumがセルa1〜a3だと認識されるのか。
b1〜b3も記述しているので、b1〜b3と認識されないのはなぜか。
Aこういうもんだと言われればそれまでなのですが、
ほかにもnum以外に自動認識されるような用語はあるのでしょうか。
Sub sampel()
Range("b1") = percent(Range("a1"))
Range("b2") = percent(Range("a2"))
Range("b3") = percent(Range("a3"))
End Sub
Function percent(num) As String
percent = num / 100 & "%"
End Function
140デフォルトの名無しさん (ワッチョイ ff8f-KuRC)
2017/07/07(金) 23:52:29.75ID:02peKi+J0 関数 percent(num) で呼び出しもとで
引数 numに Range("a1") をセット(厳密には違うか)してるから
って釣りだよな
引数 numに Range("a1") をセット(厳密には違うか)してるから
って釣りだよな
141デフォルトの名無しさん (ワッチョイ bf6d-LaqR)
2017/07/07(金) 23:55:59.29ID:IHJ5BTGs0 >>139
残念ながらかなり根本的な事がわかっていない
function〜はユーザー定義関数っつって、処理をひとまとめにしたもの
numってのは変数名。これは自分で決めるもので、
「num」でも「namu」でも「ナンバー」でもなんでもいい。
「sub」「if」みたいな単語は予約語と言ってそれらは使えないんだけど、まぁ何となく分かるだろう
毎回'こう書くのがめんどくさいから
Range("b1") = Range("a1") / 100 & "%"
'functionを定義して、使い回しできるようにしているだけの話
Range("b1") = percent(Range("a1"))
function作るのめんどくさくね?
と思ったかもしれないけど、それは何もわかっていないだけ
素直にこういうもんだと覚えてくれ
残念ながらかなり根本的な事がわかっていない
function〜はユーザー定義関数っつって、処理をひとまとめにしたもの
numってのは変数名。これは自分で決めるもので、
「num」でも「namu」でも「ナンバー」でもなんでもいい。
「sub」「if」みたいな単語は予約語と言ってそれらは使えないんだけど、まぁ何となく分かるだろう
毎回'こう書くのがめんどくさいから
Range("b1") = Range("a1") / 100 & "%"
'functionを定義して、使い回しできるようにしているだけの話
Range("b1") = percent(Range("a1"))
function作るのめんどくさくね?
と思ったかもしれないけど、それは何もわかっていないだけ
素直にこういうもんだと覚えてくれ
142デフォルトの名無しさん (ワッチョイ d701-LW04)
2017/07/07(金) 23:57:08.34ID:cLxiai6C0 すみません。意味が分かりました。
143デフォルトの名無しさん (ワッチョイ 9f06-1B52)
2017/07/07(金) 23:58:31.41ID:J/by2x1N0 >num以外に自動認識されるような用語
自動認識されるような用語って何?初めて聞いた
自動認識されるような用語って何?初めて聞いた
144デフォルトの名無しさん (ワッチョイ bf6d-LaqR)
2017/07/08(土) 00:00:19.52ID:lNWyFXj50 >>142
良かった、頑張ってねぇ〜
良かった、頑張ってねぇ〜
145デフォルトの名無しさん (ワッチョイ ff8f-KuRC)
2017/07/08(土) 00:06:47.50ID:13H3LMpq0146デフォルトの名無しさん (ワッチョイ f791-nB+A)
2017/07/08(土) 00:07:48.82ID:ieaMtMqy0 >>143
多分だが、引数を理解できてなくて
numに勝手にマッピングされてる、みたいに思ったんじゃないか
なんか勉強の順番おかしいんじゃない?
もっと前のフェーズでの学習が抜け落ちたまま次進んでる気がする
多分だが、引数を理解できてなくて
numに勝手にマッピングされてる、みたいに思ったんじゃないか
なんか勉強の順番おかしいんじゃない?
もっと前のフェーズでの学習が抜け落ちたまま次進んでる気がする
147デフォルトの名無しさん (ワッチョイ 9f06-1B52)
2017/07/08(土) 00:09:10.26ID:pa5RQPEd0 >>145
いやいや、いきなりアセンブラは無いだろとw
いやいや、いきなりアセンブラは無いだろとw
148デフォルトの名無しさん (ワッチョイ bf6d-LaqR)
2017/07/08(土) 00:11:00.51ID:lNWyFXj50149デフォルトの名無しさん (スプッッ Sdbf-kebf)
2017/07/08(土) 01:17:01.28ID:5hrqvRHFd 俺何年もVBAつかってるけどオプションイクスプリシットとか読めないわ書けるけど
ただのおまじないだしないいよな別に
ただのおまじないだしないいよな別に
150デフォルトの名無しさん (ワッチョイ 97ea-okny)
2017/07/08(土) 04:13:51.39ID:4CWa99QQ0 Private Sub Worksheet_Calculate()
If Worksheets("sheet1").Cells(3, 20) > 4000 Then
Worksheets("sheet1").Range("V4:AP4").Insert
End If
end sub
インサートがめっちゃ繰り返される。どうして?
If Worksheets("sheet1").Cells(3, 20) > 4000 Then
Worksheets("sheet1").Range("V4:AP4").Insert
End If
end sub
インサートがめっちゃ繰り返される。どうして?
151デフォルトの名無しさん (ワッチョイ bf23-KuRC)
2017/07/08(土) 08:57:15.58ID:YOB7IyKs0 >>150
ifが永遠にtrueになるからではないか
セル挿入→再計算→ifがtrue→セル挿入→再計算→ifが(略
Worksheets("sheet1").Cells(3, 20) がいつ4000以上になるのか
本当になるのかチェック
ifが永遠にtrueになるからではないか
セル挿入→再計算→ifがtrue→セル挿入→再計算→ifが(略
Worksheets("sheet1").Cells(3, 20) がいつ4000以上になるのか
本当になるのかチェック
152デフォルトの名無しさん (ワッチョイ bf6d-KuRC)
2017/07/08(土) 09:26:58.00ID:lNWyFXj50 >>150
Application.EnableEvents = False
で、eventを止める
そうしないと
>セル挿入→再計算→Worksheet_Calculate→ifがtrue→セル挿入→再計算→Worksheet_Calculate→ifが(略
が起こる
Private Sub Worksheet_Calculate()
Application.EnableEvents = False
If Worksheets("sheet1").Cells(3, 20) > 4000 Then
Worksheets("sheet1").Range("V4:AP4").Insert
endif
Application.EnableEvents = True
End Sub
Application.EnableEvents = False
で、eventを止める
そうしないと
>セル挿入→再計算→Worksheet_Calculate→ifがtrue→セル挿入→再計算→Worksheet_Calculate→ifが(略
が起こる
Private Sub Worksheet_Calculate()
Application.EnableEvents = False
If Worksheets("sheet1").Cells(3, 20) > 4000 Then
Worksheets("sheet1").Range("V4:AP4").Insert
endif
Application.EnableEvents = True
End Sub
153デフォルトの名無しさん (ワッチョイ 97ea-okny)
2017/07/08(土) 13:34:02.80ID:4CWa99QQ0154デフォルトの名無しさん (ワッチョイ b7e3-jTKI)
2017/07/08(土) 16:53:25.86ID:Z/1cPHhj0 >>149
別にいいよ、モジュールの一番上にそれを書くのを忘れなければ
別にいいよ、モジュールの一番上にそれを書くのを忘れなければ
155デフォルトの名無しさん (スプッッ Sd3f-kebf)
2017/07/08(土) 17:53:16.70ID:lfjWBFMWd モジュールの一番上に書くのは153でしょ
'2ちゃんねるの神様に教えてもらったコードです
'神様ありがとうございます
Option Explicit
Sub foo()
〜
'2ちゃんねるの神様に教えてもらったコードです
'神様ありがとうございます
Option Explicit
Sub foo()
〜
156デフォルトの名無しさん (ワッチョイ ffb9-wcci)
2017/07/09(日) 00:06:53.03ID:8a4WwF270 こんばんは。
困ってます。
先日作成したマクロが動かなくなりました。
作成した日は動きました。
(特定のフォルダをコピーしてリネームするだけの動きです。)
プログラムを手動で実行したときは問題なく動くので、
プログラムの問題ではなさそうなのですが。
エクセルのセキュリティは、「警告を表示してすべてのマクロを無効にする」
にしています。
エクセルの再起動・PC再起動は試しましたが、だめでした。
C:\...Local\Temp\Excel8.0のMSForms.exdも消してみたりしましたがダメでした。
原因は何でしょうか・・・?
困ってます。
先日作成したマクロが動かなくなりました。
作成した日は動きました。
(特定のフォルダをコピーしてリネームするだけの動きです。)
プログラムを手動で実行したときは問題なく動くので、
プログラムの問題ではなさそうなのですが。
エクセルのセキュリティは、「警告を表示してすべてのマクロを無効にする」
にしています。
エクセルの再起動・PC再起動は試しましたが、だめでした。
C:\...Local\Temp\Excel8.0のMSForms.exdも消してみたりしましたがダメでした。
原因は何でしょうか・・・?
157デフォルトの名無しさん (ワッチョイ ffb9-wcci)
2017/07/09(日) 00:08:43.90ID:8a4WwF270 スペック全然書いてなかった。
Windows8.1
Excel2013 です。
Windows8.1
Excel2013 です。
158デフォルトの名無しさん (ワッチョイ ffb9-wcci)
2017/07/09(日) 00:14:34.37ID:8a4WwF270 すみません。
書き込んですぐに自己解決しました。
コマンドボタンのオブジェクト名が違ってた・・・。
書き込んですぐに自己解決しました。
コマンドボタンのオブジェクト名が違ってた・・・。
159デフォルトの名無しさん (ワッチョイ bf23-SyLM)
2017/07/09(日) 03:04:28.53ID:EKrowZUC0 >>158
良いんだけどさ、最低限デバッグ出来るようになってくれ。
良いんだけどさ、最低限デバッグ出来るようになってくれ。
160デフォルトの名無しさん (ドコグロ MMbf-d65a)
2017/07/09(日) 10:34:39.10ID:ouwdb2hLM まあ、解決したことを書いてくれたのはよかった
161デフォルトの名無しさん (ワッチョイ 9f4e-cnUH)
2017/07/09(日) 12:02:55.24ID:P74F/v7B0 デバッグ始めにtypoを疑って問題ないと確認して、
さんざん調べてやっぱりtypoの時の脱力感
さんざん調べてやっぱりtypoの時の脱力感
162デフォルトの名無しさん (ワッチョイ bf6d-J8Ag)
2017/07/09(日) 12:34:26.09ID:XJb9KLmK0 optionexplititをつけよう(typo)
163デフォルトの名無しさん (ドコグロ MMdf-d65a)
2017/07/09(日) 13:33:12.66ID:Uu/MlKNRM >>161
他人のtypoはすぐにわかるのになぜかわからない自分のtypo
他人のtypoはすぐにわかるのになぜかわからない自分のtypo
164デフォルトの名無しさん (アウアウカー Sa2b-nSBM)
2017/07/09(日) 19:05:53.04ID:WoCQL3Mea 初心者的な内容ですいません。
よければ教えてください。
1はなぜactivesheetでなくshが回答となるのでしょうか。
shがworksheetsとして定義されていないのになぜ、worksheetsとして考えられるのかわかりません。
---------
次のイベントプロシージャはブックに新しいシートを挿入したときに実行される。
挿入されたシートのシート名を、ユーザーがダイアログボックスから入力した名前に変更させたい。
このとき、【 1 】に入る適切な命令を解答欄に入力しなさい。
ただし、シート名の重複などのエラー処理は省略しているものとする。
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Dim strSheetName As String
strSheetName = InputBox("新しいシートの名前を入力してください")
If strSheetName <> "" Then
【 1 】.Name = strSheetName
End If
End Sub
よければ教えてください。
1はなぜactivesheetでなくshが回答となるのでしょうか。
shがworksheetsとして定義されていないのになぜ、worksheetsとして考えられるのかわかりません。
---------
次のイベントプロシージャはブックに新しいシートを挿入したときに実行される。
挿入されたシートのシート名を、ユーザーがダイアログボックスから入力した名前に変更させたい。
このとき、【 1 】に入る適切な命令を解答欄に入力しなさい。
ただし、シート名の重複などのエラー処理は省略しているものとする。
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Dim strSheetName As String
strSheetName = InputBox("新しいシートの名前を入力してください")
If strSheetName <> "" Then
【 1 】.Name = strSheetName
End If
End Sub
165デフォルトの名無しさん (ワッチョイ 9f6f-rvkC)
2017/07/09(日) 19:17:48.71ID:IxMSo5tD0 Sh As Objectって何だよ。
Sh As Worksheetじゃないのか。
問題に突っ込んでもしょうがないけど。
Sh As Worksheetじゃないのか。
問題に突っ込んでもしょうがないけど。
166デフォルトの名無しさん (アウアウカー Sa2b-nSBM)
2017/07/09(日) 19:25:01.06ID:WoCQL3Mea スタンダード公式ページの模擬問題3に書いてありました。
問題がおかしいのでしょうか?
問題がおかしいのでしょうか?
167デフォルトの名無しさん (ワッチョイ bf23-KuRC)
2017/07/09(日) 19:29:29.32ID:e2g8wwYr0 >>164
新しくできたシートが引数Shで渡されている。
(ByVal Sh As Object)の部分。
Workbook_NewSheetのイベントプロシージャの仕様。
たいてい、どのイベントプロシージャも自分自身の参照を引数で渡されている。
ので、この場合、新しくできたシート自身を操作したければ
引数で渡ってきているShを操作すればよい。
新しくできたシートが引数Shで渡されている。
(ByVal Sh As Object)の部分。
Workbook_NewSheetのイベントプロシージャの仕様。
たいてい、どのイベントプロシージャも自分自身の参照を引数で渡されている。
ので、この場合、新しくできたシート自身を操作したければ
引数で渡ってきているShを操作すればよい。
168デフォルトの名無しさん (ワッチョイ 9743-ClOc)
2017/07/09(日) 19:33:19.71ID:aVb+3v1/0 挿入された新規シートが必ずActiveSheetだとは限らないんじゃない?
イベントプロシージャに新規シートが引数として渡されるのだから、それを使うのが確実
ちなみに問題が As Object なのは間違ってない
https://msdn.microsoft.com/ja-jp/library/office/ff821246.aspx?f=255&MSPPError=-2147217396
イベントプロシージャに新規シートが引数として渡されるのだから、それを使うのが確実
ちなみに問題が As Object なのは間違ってない
https://msdn.microsoft.com/ja-jp/library/office/ff821246.aspx?f=255&MSPPError=-2147217396
169デフォルトの名無しさん (アウアウカー Sa2b-nSBM)
2017/07/09(日) 19:35:24.63ID:WoCQL3Mea こういう仕様があったんですね‼
ありがとうございます。
スタンダード合格出来るよう頑張ります。
ありがとうございます。
スタンダード合格出来るよう頑張ります。
170デフォルトの名無しさん (ワッチョイ bf6d-gkD3)
2017/07/09(日) 19:42:48.30ID:XJb9KLmK0 worksheetでもいいだろ、と思ったらエラーになった
確かにobjectであって、worksheetではない
http://stamp-uploda.com/src/file7295.jpg
ってかこれ、一体なんなんだ?参照だろうけど、中身が全くないobjectが渡されてる。意味がわからない
確かにobjectであって、worksheetではない
http://stamp-uploda.com/src/file7295.jpg
ってかこれ、一体なんなんだ?参照だろうけど、中身が全くないobjectが渡されてる。意味がわからない
171デフォルトの名無しさん (ワッチョイ bf6d-gkD3)
2017/07/09(日) 19:44:44.18ID:XJb9KLmK0 ウォッチ式では
sh.name
はウォッチ式が不正です
イミディエイトウィンドウでは
?sh.name
Sheet4
とシート名が返ってくる
なんだこりゃ??
sh.name
はウォッチ式が不正です
イミディエイトウィンドウでは
?sh.name
Sheet4
とシート名が返ってくる
なんだこりゃ??
172デフォルトの名無しさん (アウアウカー Sa2b-M/n7)
2017/07/09(日) 19:56:26.06ID:B1MJdm2Aa173デフォルトの名無しさん (ワッチョイ bf23-KuRC)
2017/07/09(日) 20:10:27.05ID:e2g8wwYr0 ためしに別の変数にShを突っ込んでみたら
中身が見られるようになった。
どっかで、オブジェクト変数は利用されるまで中身が入らないよ
みたいな話を聞いたような・・・。
中身が見られるようになった。
どっかで、オブジェクト変数は利用されるまで中身が入らないよ
みたいな話を聞いたような・・・。
174デフォルトの名無しさん (ワッチョイ bf6d-LaqR)
2017/07/09(日) 20:17:33.00ID:XJb9KLmK0 >>172
試してみたら、ウォッチ式でもイミディエイトウィンドウでもsh.nameはうまく取れた。
ウォッチ式のshは取れない。
なんかバグの温床になりそうで、このshあんまり使いたくないなぁ…
環境はwindows7 エクセル2010
vbaコード
Private Sub Workbook_NewSheet(ByVal Sh As Object)
MsgBox 1 'ブレークポイントを設定している
End Sub
ウォッチ式に
sh
sh.name
を追加
shは図のとおり、変な状態になる。プロパティなどが表示されない
sh.nameはシート名が表示される
イミディエイトウィンドウは正常
?sh.name
Sheet5
http://stamp-uploda.com/src/file7296.jpg
>>173
プロパティ(sh.name)を呼び出してみた後の状態
(メッセージボックスにはsheeet6と正常に表示された)
やっぱりダメだった。
http://stamp-uploda.com/src/file7297.jpg
なんらかの理由でウォッチ式が正常に機能してないだけならいいけど、正常な状態でこれだとどういう状況なんだろう
試してみたら、ウォッチ式でもイミディエイトウィンドウでもsh.nameはうまく取れた。
ウォッチ式のshは取れない。
なんかバグの温床になりそうで、このshあんまり使いたくないなぁ…
環境はwindows7 エクセル2010
vbaコード
Private Sub Workbook_NewSheet(ByVal Sh As Object)
MsgBox 1 'ブレークポイントを設定している
End Sub
ウォッチ式に
sh
sh.name
を追加
shは図のとおり、変な状態になる。プロパティなどが表示されない
sh.nameはシート名が表示される
イミディエイトウィンドウは正常
?sh.name
Sheet5
http://stamp-uploda.com/src/file7296.jpg
>>173
プロパティ(sh.name)を呼び出してみた後の状態
(メッセージボックスにはsheeet6と正常に表示された)
やっぱりダメだった。
http://stamp-uploda.com/src/file7297.jpg
なんらかの理由でウォッチ式が正常に機能してないだけならいいけど、正常な状態でこれだとどういう状況なんだろう
175デフォルトの名無しさん (ワッチョイ bf23-KuRC)
2017/07/09(日) 20:42:05.40ID:e2g8wwYr0 >>174
Dim sheet as Worksheet
Set sheet = Sh
これをmsgboxの前に追加すると全部の変数がウォッチで見られると思う。
ググってみたらNewで作ったオブジェクトは初めて利用するまで空ですよ
らしいので、新シートのオブジェクトは内部的にNewで作成している?
Sh.nameが引けるのは何ででしょう?
Dim sheet as Worksheet
Set sheet = Sh
これをmsgboxの前に追加すると全部の変数がウォッチで見られると思う。
ググってみたらNewで作ったオブジェクトは初めて利用するまで空ですよ
らしいので、新シートのオブジェクトは内部的にNewで作成している?
Sh.nameが引けるのは何ででしょう?
176デフォルトの名無しさん (スップ Sdbf-Yl52)
2017/07/09(日) 20:43:00.97ID:vBmV/XSmd それよりも改行しないコードかく人は何を考えてコード書いてるのか気になる
177デフォルトの名無しさん (ワッチョイ 9791-9DAm)
2017/07/09(日) 20:43:34.76ID:BT4+59vh0 >>174
objectで受け取ってるからshのままでは何のクラスなのかわからないからどんなプロパティがあるかわからない
Nameプロパティを指定したら
Nameプロパティを持っているクラスとして解釈して
Nameプロパティの位置を文字列として表示しただけ
worksheetクラスのデフォルトプロパティがNameだからかな
countプロパティとかとして解釈させたら想定外の値になると予想
objectで受け取ってるからshのままでは何のクラスなのかわからないからどんなプロパティがあるかわからない
Nameプロパティを指定したら
Nameプロパティを持っているクラスとして解釈して
Nameプロパティの位置を文字列として表示しただけ
worksheetクラスのデフォルトプロパティがNameだからかな
countプロパティとかとして解釈させたら想定外の値になると予想
178デフォルトの名無しさん (ワッチョイ bf23-KuRC)
2017/07/09(日) 20:46:50.81ID:e2g8wwYr0179デフォルトの名無しさん (ワッチョイ 9791-9DAm)
2017/07/09(日) 20:49:10.77ID:BT4+59vh0180デフォルトの名無しさん (ワッチョイ 9791-9DAm)
2017/07/09(日) 20:54:20.52ID:BT4+59vh0181デフォルトの名無しさん (ワッチョイ 778b-utq/)
2017/07/09(日) 20:55:59.71ID:oI2zN/et0 てかお前らそんなに一か八かでactivesheet使ってんのかよw
182デフォルトの名無しさん (ワッチョイ bf6d-Rm1X)
2017/07/09(日) 21:19:51.98ID:XJb9KLmK0 これが通るけど、ウォッチ式には現れない
多分ウォッチ式の不具合だと思う
そう考えないと気持ち悪くて仕方ないし疲れてきた・・・
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Sh.Calculate
MsgBox Sh.Index
End Sub
http://stamp-uploda.com/src/file7299.jpg
>>175
sheetでもShでも見れるようになりました
Shの参照をコピーしたのでインスタンスが生成されたのかな
>>177
indexプロパティでも通りましたし
Sh.Calculateメソッドでも通りました
>>181
使ってないよ。sheetの指定はsetした変数を使ってる
昔はactive〜やselect〜を使ってたけどね
多分ウォッチ式の不具合だと思う
そう考えないと気持ち悪くて仕方ないし疲れてきた・・・
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Sh.Calculate
MsgBox Sh.Index
End Sub
http://stamp-uploda.com/src/file7299.jpg
>>175
sheetでもShでも見れるようになりました
Shの参照をコピーしたのでインスタンスが生成されたのかな
>>177
indexプロパティでも通りましたし
Sh.Calculateメソッドでも通りました
>>181
使ってないよ。sheetの指定はsetした変数を使ってる
昔はactive〜やselect〜を使ってたけどね
183デフォルトの名無しさん (ワッチョイ 9791-9DAm)
2017/07/09(日) 21:38:18.71ID:BT4+59vh0 >>182
worksheetクラスではないクラスのプロパティを指定したらどうなると予想する?
例えばRangeクラスのプロパティとか
もしかしたらサイズとかを見ていてサイズが異なる場合はキャスト出来ないかもしれないど
メモリ領域には値が格納されているけどそれをどう解釈するかはクラスが決まらないと特定できない
worksheetクラスではないクラスのプロパティを指定したらどうなると予想する?
例えばRangeクラスのプロパティとか
もしかしたらサイズとかを見ていてサイズが異なる場合はキャスト出来ないかもしれないど
メモリ領域には値が格納されているけどそれをどう解釈するかはクラスが決まらないと特定できない
184デフォルトの名無しさん (ワッチョイ bf6d-U373)
2017/07/09(日) 21:45:51.77ID:XJb9KLmK0 >>183
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Debug.Print Sh.Range("a1").Address
End Sub
で
$A$1
が返ってきたわ
http://stamp-uploda.com/src/file7301.jpg
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Debug.Print Sh.Range("a1").Address
End Sub
で
$A$1
が返ってきたわ
http://stamp-uploda.com/src/file7301.jpg
185デフォルトの名無しさん (ワッチョイ bf6d-U373)
2017/07/09(日) 21:47:17.93ID:XJb9KLmK0 写ってないけどウォッチ式のshのプロパティは不明なままね
ウォッチ式がおかしい以外考えにくい
ウォッチ式がおかしい以外考えにくい
186デフォルトの名無しさん (ワッチョイ bf23-KuRC)
2017/07/09(日) 22:03:56.91ID:e2g8wwYr0 Private Sub Workbook_NewSheet(ByVal sh As Object)
Dim obj As Object
Set obj = sh
MsgBox obj.Name
End Sub
これだと中身が見られないけど通る。
やっぱり>>183の型キャスト説じゃないかなぁ。
ローカルウィンドウでも見られないし。
obj.Value = "aaa" で実行時エラーになる。
「ん〜何か知らないけどValueに入れるよ?あっねえわw」 ってことでは?
.Nameや.Range().Addressはあったんで通る。
Dim obj As Object
Set obj = sh
MsgBox obj.Name
End Sub
これだと中身が見られないけど通る。
やっぱり>>183の型キャスト説じゃないかなぁ。
ローカルウィンドウでも見られないし。
obj.Value = "aaa" で実行時エラーになる。
「ん〜何か知らないけどValueに入れるよ?あっねえわw」 ってことでは?
.Nameや.Range().Addressはあったんで通る。
187デフォルトの名無しさん (ワッチョイ bf6d-J8Ag)
2017/07/09(日) 22:23:32.11ID:XJb9KLmK0 >>186
それはrange指定してないっす・・・
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Sh.Cells(1, 1).Value = "aaa"
End Sub
で通ったよ
それはrange指定してないっす・・・
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Sh.Cells(1, 1).Value = "aaa"
End Sub
で通ったよ
188デフォルトの名無しさん (ワッチョイ 9791-Razr)
2017/07/09(日) 22:31:30.92ID:BT4+59vh0 >>184
Debug.Print Sh.Range("a1").Address
ではなくて
Debug.print sh.address
だったらどうなるかって意図だったけど
ためしたら実行時エラーになる
これはtypename(Sh)を表示したらわかるけど
Shという変数自体にクラス(型)に関する情報を持っているから
無理矢理Rangeクラスのプロパティを表示させようとするとエラーになる
dim rng as Range
set rng = Sh
とかやっても実行時エラーになる
文法的にはエラーじゃないからコンパイルは通る
VBAが型チェックしてバグにならないようにしていると思う
他の言語だとこれができるものもある
Debug.Print Sh.Range("a1").Address
ではなくて
Debug.print sh.address
だったらどうなるかって意図だったけど
ためしたら実行時エラーになる
これはtypename(Sh)を表示したらわかるけど
Shという変数自体にクラス(型)に関する情報を持っているから
無理矢理Rangeクラスのプロパティを表示させようとするとエラーになる
dim rng as Range
set rng = Sh
とかやっても実行時エラーになる
文法的にはエラーじゃないからコンパイルは通る
VBAが型チェックしてバグにならないようにしていると思う
他の言語だとこれができるものもある
189デフォルトの名無しさん (ワッチョイ 9791-Razr)
2017/07/09(日) 22:35:23.27ID:BT4+59vh0 >>187
ShがWorksheetクラスだっていうのが判ってるからRangeを指定するってわかるけど
Objectクラスだったら何のプロパティを持っているかわからなくない?
Objectクラスはすべてのクラスのスーパークラスだから何でも参照できる
Sh as Objectと宣言されているShが実態はRangeクラスである場合もある
その場合は、Sh.Value = "a"でも実行時エラーにはならない
ShがWorksheetクラスだっていうのが判ってるからRangeを指定するってわかるけど
Objectクラスだったら何のプロパティを持っているかわからなくない?
Objectクラスはすべてのクラスのスーパークラスだから何でも参照できる
Sh as Objectと宣言されているShが実態はRangeクラスである場合もある
その場合は、Sh.Value = "a"でも実行時エラーにはならない
190デフォルトの名無しさん (ワッチョイ bf6d-J8Ag)
2017/07/09(日) 22:50:14.83ID:XJb9KLmK0 >>188-189
なるほど、意図が分かりました。コンパイルエラーになる意味もわかりました、ありがとうございます
以下の状態だと、shの型はobject/Sheet5としてウォッチ式に認識されます
この「Sheet5」というのは何でしょうか?
デフォルトプロパティでしょうか?
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Dim sheet As Worksheet
Set sheet = Sh
Debug.Print 1 'ここでブレークポイント
End Sub
なるほど、意図が分かりました。コンパイルエラーになる意味もわかりました、ありがとうございます
以下の状態だと、shの型はobject/Sheet5としてウォッチ式に認識されます
この「Sheet5」というのは何でしょうか?
デフォルトプロパティでしょうか?
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Dim sheet As Worksheet
Set sheet = Sh
Debug.Print 1 'ここでブレークポイント
End Sub
191デフォルトの名無しさん (ワッチョイ bf6d-J8Ag)
2017/07/09(日) 22:58:28.17ID:XJb9KLmK0 しかし>>175がどうしてもわかりません
object型をobject型に渡してもプロパティは分からない、それは分かります
http://stamp-uploda.com/src/file7303.jpg
object型をworksheet型に渡すと、ウォッチ式で見れるようになる、それがわからない
http://stamp-uploda.com/src/file7302.jpg
全部のプロパティ・メソッド見たら全部一致してたからworksheetとしてコピーしますね〜ということ?
object型をobject型に渡してもプロパティは分からない、それは分かります
http://stamp-uploda.com/src/file7303.jpg
object型をworksheet型に渡すと、ウォッチ式で見れるようになる、それがわからない
http://stamp-uploda.com/src/file7302.jpg
全部のプロパティ・メソッド見たら全部一致してたからworksheetとしてコピーしますね〜ということ?
192デフォルトの名無しさん (ワッチョイ 9791-Razr)
2017/07/09(日) 23:03:28.23ID:BT4+59vh0 >>190
Set sheet = Sh
を実行した時点で、Sh = sheet = Worksheetクラスのオブジェクトと特定可能
なのでworksheetクラスのデフォルトプロパティを表示しているのではないか
ウォッチ式にsheet変数も追加すると、そのタイミングで
Shの他のプロパティも見えるようになった
Set sheet = Sh
を実行した時点で、Sh = sheet = Worksheetクラスのオブジェクトと特定可能
なのでworksheetクラスのデフォルトプロパティを表示しているのではないか
ウォッチ式にsheet変数も追加すると、そのタイミングで
Shの他のプロパティも見えるようになった
193デフォルトの名無しさん (ワッチョイ bf23-KuRC)
2017/07/09(日) 23:06:31.26ID:e2g8wwYr0 >>191
型キャストで
Shがワークシートだと判明したので
Shとsheetは同じ物なので
両方のプロパティが同じで表示されるのではと思うが。
詳しくはマスターにまかせる。
と思ったらもう回答されていた。
すごい勉強になった。
型キャストで
Shがワークシートだと判明したので
Shとsheetは同じ物なので
両方のプロパティが同じで表示されるのではと思うが。
詳しくはマスターにまかせる。
と思ったらもう回答されていた。
すごい勉強になった。
194デフォルトの名無しさん (ワッチョイ 9791-Razr)
2017/07/09(日) 23:09:27.92ID:BT4+59vh0195デフォルトの名無しさん (アウアウエー Sadf-thUc)
2017/07/10(月) 09:22:58.03ID:HOfsyLJOa activesheet使うのはworksheets.copy使うときぐらいだな
真面目に作るときは書式とか直で指定するように頑張るけど
真面目に作るときは書式とか直で指定するように頑張るけど
196デフォルトの名無しさん (ワッチョイ 7773-zf8i)
2017/07/10(月) 12:08:47.45ID:G+8qCprO0 レコードセットをそのままシートに張り付けると、元の型を継承して数字のみのカラムも文字列として貼られるんだけど、さすがにどうしようもない?
197デフォルトの名無しさん (スップ Sd3f-nGAm)
2017/07/10(月) 12:39:11.04ID:okOc14zTd >>196
あとで一括して和0すりゃいいじゃん
あとで一括して和0すりゃいいじゃん
198デフォルトの名無しさん (ササクッテロロ Spcb-9DAm)
2017/07/10(月) 12:47:22.77ID:8dcdQUy6p >>197
和は加算の結果を表す言葉
0を加算とか足す0じゃないと意味が違ってくる
因みにレコードセットの型はcolumnの最初の7行分のデータから推測されるとかだったと思うから
目的の型になるようにソートすればいいかも
和は加算の結果を表す言葉
0を加算とか足す0じゃないと意味が違ってくる
因みにレコードセットの型はcolumnの最初の7行分のデータから推測されるとかだったと思うから
目的の型になるようにソートすればいいかも
199デフォルトの名無しさん (ドコグロ MM2b-jxDt)
2017/07/10(月) 13:37:23.50ID:WkincIndM 関数の引数にbyval ws as Worksheetってやるとどうなるの?
worksheetに対しては、byrefしか使ったことない
worksheetに対しては、byrefしか使ったことない
200デフォルトの名無しさん (ワンミングク MM7f-jTKI)
2017/07/10(月) 14:25:22.38ID:/gGZBLtxM オブジェクト型はbyval渡し出来ないんじゃなかったっけ?
201デフォルトの名無しさん (スップ Sd3f-nGAm)
2017/07/10(月) 14:36:15.11ID:okOc14zTd202デフォルトの名無しさん (スップ Sd3f-nGAm)
2017/07/10(月) 14:38:53.50ID:okOc14zTd203デフォルトの名無しさん (ブーイモ MMbf-MhHl)
2017/07/10(月) 15:15:06.40ID:UwxUnls6M >>199
たぶんプロシージャ内の set ws=hoge が引数に反映されるかされないかが変わってくる
たぶんプロシージャ内の set ws=hoge が引数に反映されるかされないかが変わってくる
204デフォルトの名無しさん (ドコグロ MMdf-jxDt)
2017/07/10(月) 16:10:50.58ID:1UBLPYX0M205デフォルトの名無しさん (スッップ Sdbf-Yl52)
2017/07/10(月) 17:19:20.24ID:1LvSwn3ad thisworkbookをoptionalな引数のデフォルト値にしたいんだけどできない
何かいい方法知りませんか
何かいい方法知りませんか
206デフォルトの名無しさん (スップ Sd3f-nGAm)
2017/07/10(月) 18:34:12.31ID:okOc14zTd >>205
確認せずに答えるけど、できないならOptionalのデフォルト値をNothingにして、
モジュール内で判断・分岐する
If a Is Nothing Then Set a = ActiveWorkBook
とか
確認せずに答えるけど、できないならOptionalのデフォルト値をNothingにして、
モジュール内で判断・分岐する
If a Is Nothing Then Set a = ActiveWorkBook
とか
207デフォルトの名無しさん (ワッチョイ bf6d-KuRC)
2017/07/10(月) 18:40:40.88ID:9dSXLq4x0 デフォルト値は定数式で、って言われるな
デフォルト値を文字列にして"thisworkbook"、evalで…とか考えたけど2013持ってないから試せない
そこまでしても読みにくくなるだけなので、素直に>>206みたいに条件分岐させたほうが良いと思う
デフォルト値を文字列にして"thisworkbook"、evalで…とか考えたけど2013持ってないから試せない
そこまでしても読みにくくなるだけなので、素直に>>206みたいに条件分岐させたほうが良いと思う
208デフォルトの名無しさん (ブーイモ MMdb-MhHl)
2017/07/10(月) 19:04:18.69ID:fjsjDBbbM 質問です。
ユーザーフォームをShowModal=Falseで表示しており、フォームを表示したまま、フォーカスをフォームからセルに移動することは可能でしょうか?
cells(1,1).select や application.goto cells(1,1) ではフォーカスがフォームから動きませんでした。
ユーザーフォームをShowModal=Falseで表示しており、フォームを表示したまま、フォーカスをフォームからセルに移動することは可能でしょうか?
cells(1,1).select や application.goto cells(1,1) ではフォーカスがフォームから動きませんでした。
209デフォルトの名無しさん (ワッチョイ bf6d-gkD3)
2017/07/10(月) 19:17:57.83ID:9dSXLq4x0 >>208
昔やったことあるなぁ
と思って試したら、仕様変更でできなくなってるっぽい
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=44929;id=excel
2010は無理だった
昔やったことあるなぁ
と思って試したら、仕様変更でできなくなってるっぽい
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=44929;id=excel
2010は無理だった
210208 (ブーイモ MMdb-MhHl)
2017/07/10(月) 19:26:18.02ID:fjsjDBbbM211デフォルトの名無しさん (スッップ Sdbf-Yl52)
2017/07/10(月) 20:52:31.16ID:93pFc0tnd212デフォルトの名無しさん (ワッチョイ 9791-9DAm)
2017/07/10(月) 21:00:26.90ID:N/fNiVFC0 >>211
コンパイル時点で決まってないからかな〜
コンパイル時点で決まってないからかな〜
213208 (ブーイモ MMdb-MhHl)
2017/07/11(火) 12:39:40.24ID:fzHCV1ljM >>209
AppActivateもApplication.Visible=Trueでもいけました!
ちなみに以下のも試しましたが全部ダメでした。
ActiveWindow.Activate
ActiveWorkBook.Activate
ActivateSheet.Activate
2010以降だとWIN32APIとかでシートのマウスクリックを挟まないとダメかもですね。
AppActivateもApplication.Visible=Trueでもいけました!
ちなみに以下のも試しましたが全部ダメでした。
ActiveWindow.Activate
ActiveWorkBook.Activate
ActivateSheet.Activate
2010以降だとWIN32APIとかでシートのマウスクリックを挟まないとダメかもですね。
214デフォルトの名無しさん (ワッチョイ bf6d-Rm1X)
2017/07/11(火) 19:59:21.82ID:L+/Hncu30215デフォルトの名無しさん (ワッチョイ 9f6f-rvkC)
2017/07/12(水) 19:38:42.24ID:qkF1IqO80 Sh As Object
Sh
Sh
216デフォルトの名無しさん (ワッチョイ 9f6f-rvkC)
2017/07/12(水) 19:41:14.38ID:qkF1IqO80 ↑誤送信すまん。
Sh As Object
Sh As Worksheet
どちらでも動くのは分かる。
Objectにするのって、
どんな値が入るかわからないから、
Variantでいいやって考えるのと同じ?
Sh As Object
Sh As Worksheet
どちらでも動くのは分かる。
Objectにするのって、
どんな値が入るかわからないから、
Variantでいいやって考えるのと同じ?
217デフォルトの名無しさん (ワッチョイ bf6d-KuRC)
2017/07/12(水) 19:46:47.71ID:xxYqMu/90 どんな値が入るかわからないコードってどんなコード?
デバッグ用にエラーで分岐させた先とか?
デバッグ用にエラーで分岐させた先とか?
218デフォルトの名無しさん (ワッチョイ 778b-utq/)
2017/07/12(水) 19:50:58.17ID:vG3FHDEt0 つっこむならせめて値と型の違いぐらい分かっていて欲しかったなあ
219デフォルトの名無しさん (ワッチョイ 9723-zf8i)
2017/07/12(水) 19:53:10.98ID:+y58Cois0 >>217
variantさんディスってるの?
variantさんディスってるの?
220デフォルトの名無しさん (ワッチョイ bf6d-pHDl)
2017/07/12(水) 20:00:38.68ID:xxYqMu/90221デフォルトの名無しさん (ワッチョイ bf23-KuRC)
2017/07/12(水) 20:10:18.44ID:agdmn3RR0 NewSheetイベントの引数の場合、Shには
「Worksheet オブジェクトまたは Chart オブジェクトが渡されます」
と書いてあるので
どっちが渡されてもいいようにObjectなのでしょう
「Worksheet オブジェクトまたは Chart オブジェクトが渡されます」
と書いてあるので
どっちが渡されてもいいようにObjectなのでしょう
222デフォルトの名無しさん (ワッチョイ 9faa-KuRC)
2017/07/12(水) 21:14:58.86ID:IZp09kNA0 俺の書くVBAはVariantばっかりだけど問題ないよね?
223デフォルトの名無しさん (ワキゲー MMdf-R1hf)
2017/07/12(水) 21:19:09.13ID:Nu9oIAfCM 個人利用である限りはね
224デフォルトの名無しさん (ワッチョイ 976f-KuRC)
2017/07/12(水) 21:27:49.15ID:M2bsHFCW0 書籍にさえ糞みたいなコードが平然と書かれてるVBA
どんなコードだってヘーキヘーキ
どんなコードだってヘーキヘーキ
225デフォルトの名無しさん (ワッチョイ bf6d-Rm1X)
2017/07/12(水) 21:28:35.71ID:xxYqMu/90 そもそも宣言しなくても特に問題はない
vbaの型なんてやわらかすぎてあってないようなもん、死にはせん
vbaの型なんてやわらかすぎてあってないようなもん、死にはせん
226デフォルトの名無しさん (ワッチョイ 9faa-KuRC)
2017/07/12(水) 21:34:45.69ID:IZp09kNA0227デフォルトの名無しさん (ワキゲー MMdf-R1hf)
2017/07/12(水) 21:40:21.42ID:Nu9oIAfCM ただこーゆー所でVariantプログラムって言うとなんやかんやめんどくさいので胸の内に秘めとくことをオススメする
228デフォルトの名無しさん (ワッチョイ 9faa-KuRC)
2017/07/12(水) 21:47:21.99ID:IZp09kNA0 俺がそのVariantを全部なくしてやるよ!
↓
↓
229デフォルトの名無しさん (ワッチョイ bf6d-Rm1X)
2017/07/12(水) 21:48:46.29ID:xxYqMu/90 NULLじゃなくてnothingでは
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「もうキモくてキモくて…」29歳女性が語る“おぢアタック”の実態。「俺ならイケるかも」年下女性を狙う勘違い中年男性には共通点が [Hitzeschleier★]
- テレビ朝日 本社から男性が転落し死亡。関連会社社員か 当たった通行人が左肩軽傷 [阿弥陀ヶ峰★]
- 中国軍機がレーダー照射 小泉防衛大臣の説明に「矛盾している」中国外務省報道官が批判 [♪♪♪★]
- 「これいいじゃん!!!」 セブン-イレブンの1620円で買える“1人用クリスマスケーキ”🎂に注目殺到「天才すぎる」 [パンナ・コッタ★]
- テレビ朝日本社から20~30代の関連会社社員とみられる男性が転落し死亡 六本木けやき坂通りの通行人にはけが人なし [少考さん★]
- 高市早苗首相が天理教系企業に“巨額発注” 総額5000万円 本人は「政治団体の活動に必要な支出」と回答 ★2 [Hitzeschleier★]
- ぼざろの結束バンドで一番クラス男子にシコられてそうなキャラ
- enaga(´・Ǎ・`) ◆99xH8ena32 ってコテわろたwwwwwwwwwww
- 【悲報】小泉防衛大臣、中国のレーダー照射事件をNATO事務総長に報告 [834922174]
- 【乞食速報】プロクオリティ ビーフカレー 96食 4262円 [268244553]
- 年末のvip芋煮会って何日だっけ?
- 歴史って「この教科には暴力的な表現が含まれます」とか警告しといた方がいいよな
