!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:T3ylemnb0175デフォルトの名無しさん (ワッチョイ 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では
230デフォルトの名無しさん (ワッチョイ 9faa-KuRC)
2017/07/12(水) 21:54:45.14ID:IZp09kNA0 >>229
まあNothingが来れば気を付けなきゃいけないだろうけど、NULLはDBから読んだデータソースに含まれている場合が多いから。
まあNothingが来れば気を付けなきゃいけないだろうけど、NULLはDBから読んだデータソースに含まれている場合が多いから。
231デフォルトの名無しさん (ワッチョイ 778b-utq/)
2017/07/12(水) 21:55:54.59ID:vG3FHDEt0 She As Object
Set She = New LoveDoll
She.DressUp(MaidCostume)
She.Attach(SilliconVagina)
I.Fuck(She)
I.FinishAlone()
She.Detach(SilliconVagina)
I.Wash(SilliconVagina)
Set She = New LoveDoll
She.DressUp(MaidCostume)
She.Attach(SilliconVagina)
I.Fuck(She)
I.FinishAlone()
She.Detach(SilliconVagina)
I.Wash(SilliconVagina)
232デフォルトの名無しさん (ワッチョイ 9faa-KuRC)
2017/07/12(水) 22:01:13.24ID:IZp09kNA0 5行目にSet her = She があればよかった
233デフォルトの名無しさん (アウアウウー Sa5b-pw7F)
2017/07/12(水) 22:40:32.03ID:ybKMfalIa VBEのインテリセンスを止める方法教えてください
234デフォルトの名無しさん (アークセー Sx39-y19a)
2017/07/13(木) 06:37:01.82ID:zrnYEEn3x NewSheetイベントの引数ShがObject型なのは、WorkSheetクラスとChartObjectクラスの両方でNewSheetイベントの呼び出しが定義されていて、実行時にしかShの型が決まらないからだと思うが
Workbook.Sheets(Index)の戻り値がObject型なのと一緒
Workbook.Sheets(Index)の戻り値がObject型なのと一緒
235デフォルトの名無しさん (アウアウエー Sa66-PUpa)
2017/07/13(木) 12:57:05.14ID:vRW6wkrFa variantとかobject形はコンパイルエラーで止めてくれないからめんどい
今ちょうど使いたい場面出てきてるんだが二の足踏んでる
今ちょうど使いたい場面出てきてるんだが二の足踏んでる
236デフォルトの名無しさん (ワッチョイ 6e1b-MRQN)
2017/07/13(木) 13:12:36.23ID:9SrccZi40 指定日(A)から現時点(B)までの経過時間をミリ秒で取得したい場合、
どのようにしたら上手く取れるでしょうか?
VB.NETの時はGetTimeMillisecondsがあったので、(B-A).GetTimeMillisecondsで取得出来たんですが。
どのようにしたら上手く取れるでしょうか?
VB.NETの時はGetTimeMillisecondsがあったので、(B-A).GetTimeMillisecondsで取得出来たんですが。
237デフォルトの名無しさん (ワッチョイ 1d54-pdrj)
2017/07/13(木) 13:25:10.65ID:T6Wx4mwg0 APIのGetTickCountを使う
238デフォルトの名無しさん (ワッチョイ 6e1b-MRQN)
2017/07/13(木) 13:36:43.69ID:9SrccZi40 >>237
ありがとうございます。
GetTickCountも試してはみたんですが、システム稼働してからの時間だからか
自分では上手く取得できませんでした。
「指定日」(今回やりたいのは1970/1/1)からの経過時間をミリ秒取得するには
どのようにしたら良いでしょうか?
ありがとうございます。
GetTickCountも試してはみたんですが、システム稼働してからの時間だからか
自分では上手く取得できませんでした。
「指定日」(今回やりたいのは1970/1/1)からの経過時間をミリ秒取得するには
どのようにしたら良いでしょうか?
239デフォルトの名無しさん (アウアウエー Sa66-PUpa)
2017/07/13(木) 14:33:52.00ID:hn5wvxLda >>236
doubleに変換して計算してまた変換するとか
doubleに変換して計算してまた変換するとか
240デフォルトの名無しさん (アークセー Sx5f-I8+U)
2017/07/13(木) 17:11:00.53ID:mgpP2Dmux >>238
ミリ秒に換算しろ
ミリ秒に換算しろ
241デフォルトの名無しさん (ワッチョイ 006f-z+eH)
2017/07/13(木) 18:03:16.52ID:etRke/LM0 >>238
どうせそんな長いスパンならミリ秒はなんちゃってでいいんでしょ
Application.WorksheetFunction.RoundDown((Date - CDate("1970/1/1")) * 86400000 + Timer * 1000, 0)
どうせそんな長いスパンならミリ秒はなんちゃってでいいんでしょ
Application.WorksheetFunction.RoundDown((Date - CDate("1970/1/1")) * 86400000 + Timer * 1000, 0)
242デフォルトの名無しさん (ワッチョイ f191-+gV6)
2017/07/13(木) 20:31:54.44ID:kGwztgTZ0 >>236
timediff()関数だかdifftime()があったはず
timediff()関数だかdifftime()があったはず
243デフォルトの名無しさん (ワッチョイ f191-+gV6)
2017/07/13(木) 20:34:22.33ID:kGwztgTZ0 datediff()だった
ただ秒単位が最小だった
ただ秒単位が最小だった
244デフォルトの名無しさん (ドコグロ MM36-OTuW)
2017/07/13(木) 21:05:07.35ID:WT5N9OT5M Win32API の GetSystemTime( ) を呼び出して後は頑張って差を計算するなりすればいいだけでしょ
245デフォルトの名無しさん (ワッチョイ 0a23-z+eH)
2017/07/13(木) 21:30:25.15ID:kQSmD3CQ0 そもそもソースがクソ精度のシステム時刻だからmsecなんてあてにならない気がする
直前にNTPで同期をとるとか?
直前にNTPで同期をとるとか?
246デフォルトの名無しさん (ワッチョイ f191-+gV6)
2017/07/13(木) 21:37:03.54ID:kGwztgTZ0 指定日から当日までをdatediffの秒単位で取得して
当日からその時刻までをmsで取得して
足し合わせればいいんじゃね
当日からその時刻までをmsで取得して
足し合わせればいいんじゃね
247デフォルトの名無しさん (ワッチョイ 4b3d-1CH6)
2017/07/13(木) 21:47:59.63ID:OJpyM90P0 ミリ秒の精度が求められる操作をVBAでって嫌だなぁw
248デフォルトの名無しさん (ワッチョイ 006f-z+eH)
2017/07/13(木) 22:44:18.16ID:etRke/LM0 作成するファイルやデータの一意な命名、識別とかに使うんじゃないの
だいたいでいいと思うわ
だいたいでいいと思うわ
249デフォルトの名無しさん (ワッチョイ aa11-OTuW)
2017/07/14(金) 06:02:22.03ID:bYrN3J/p0 要件推理大会は終わった?
250デフォルトの名無しさん (JP 0H32-v2r+)
2017/07/14(金) 10:03:16.31ID:ak+4FQ9QH 要件って喪前らは横浜のシューマイ屋さんか!!!!
(´・ω・`)b
(´・ω・`)b
251デフォルトの名無しさん (ワッチョイ 0a23-z+eH)
2017/07/14(金) 10:25:11.37ID:P3iXCzVv0 Range("250").ClearContents
252デフォルトの名無しさん (ワッチョイ 626f-S4qQ)
2017/07/14(金) 22:15:23.51ID:ont4yiQP0 !!!?
その手があったか!!
今まで、真面目に名前を付けることしか考えなかったわ。
Dim Sh As Worksheet
Set Sh = Thisworkbook.Worksheets("(´・ω・`)b")
こんなのもありだな。
その手があったか!!
今まで、真面目に名前を付けることしか考えなかったわ。
Dim Sh As Worksheet
Set Sh = Thisworkbook.Worksheets("(´・ω・`)b")
こんなのもありだな。
253デフォルトの名無しさん (ワッチョイ c491-BaGs)
2017/07/14(金) 22:29:36.70ID:Ry5eHGcV0 そういやみなさん
その場限りの適当マクロじゃなくて
ずっと使い続けてメンテも必要なVBAでセルにアクセスするなら名前経由でやってます?
自分はまずセルに名前をつけて
Const hoge = "セルにつけた名前"
Range(hoge).value = "うんこ"
みたいなことやってます
ちなみに、シート名でもこれやってるんですが‥
シート名やセル名が変わる可能性を前提にしたら
こういうアプローチになるとは思うんですけど
結局凄く無駄なことをやってる気がして…(結局変えることあんまないし)
特にセルの名前に関しては、どうせその文字列をConstのところにハードコードするなら
名前つけずに
Const hoge ="A1:B5"
でもええやんけとか思ってるんですが
行挿入とかに追従してくれる名前の方を使うべきかなぁとか思ったり…
その場限りの適当マクロじゃなくて
ずっと使い続けてメンテも必要なVBAでセルにアクセスするなら名前経由でやってます?
自分はまずセルに名前をつけて
Const hoge = "セルにつけた名前"
Range(hoge).value = "うんこ"
みたいなことやってます
ちなみに、シート名でもこれやってるんですが‥
シート名やセル名が変わる可能性を前提にしたら
こういうアプローチになるとは思うんですけど
結局凄く無駄なことをやってる気がして…(結局変えることあんまないし)
特にセルの名前に関しては、どうせその文字列をConstのところにハードコードするなら
名前つけずに
Const hoge ="A1:B5"
でもええやんけとか思ってるんですが
行挿入とかに追従してくれる名前の方を使うべきかなぁとか思ったり…
254デフォルトの名無しさん (ワッチョイ e66d-TdFn)
2017/07/14(金) 22:44:26.51ID:YONW9HHx0255デフォルトの名無しさん (ワッチョイ f191-+gV6)
2017/07/14(金) 23:03:04.97ID:QoWI5XEA0256デフォルトの名無しさん (ワッチョイ 0a23-z+eH)
2017/07/14(金) 23:10:22.98ID:P3iXCzVv0 >>253
よくある表の列の増減対応する場合は
列挙体で列名を定義しておいて
Cellsで列名を参照させてる。
途中にぶっこんでも列挙体のほうをちょろっと書き換えればいい。
行にも対応させると、面倒かも。
よくある表の列の増減対応する場合は
列挙体で列名を定義しておいて
Cellsで列名を参照させてる。
途中にぶっこんでも列挙体のほうをちょろっと書き換えればいい。
行にも対応させると、面倒かも。
257デフォルトの名無しさん (ワッチョイ 626f-S4qQ)
2017/07/14(金) 23:41:07.46ID:ont4yiQP0 >列の増減
会社のやつ、一切弄れないようにしたわwwwww
セルを保護するとかじゃなくて、
データの更新時に、全消しして再描画するのwwwwwwwwww
列挿入とかしても無駄ですよってwwwwwww
会社のやつ、一切弄れないようにしたわwwwww
セルを保護するとかじゃなくて、
データの更新時に、全消しして再描画するのwwwwwwwwww
列挿入とかしても無駄ですよってwwwwwww
258デフォルトの名無しさん (ワッチョイ e66d-qA4N)
2017/07/15(土) 00:03:43.14ID:fdp++JjU0 そういうの、このスレだと基本だと思う
・正規化したデータを引っ張ってくる
・ボタン押したらvbaで構築。シートすら削除して再作成
こんなんばっかだろ。誰もさわれなくて非難轟々だけど、どうかんがえてもこっちのほうが安全なんだよな
・正規化したデータを引っ張ってくる
・ボタン押したらvbaで構築。シートすら削除して再作成
こんなんばっかだろ。誰もさわれなくて非難轟々だけど、どうかんがえてもこっちのほうが安全なんだよな
259デフォルトの名無しさん (ワッチョイ e251-X5vM)
2017/07/15(土) 00:11:34.38ID:CxBosAMp0260デフォルトの名無しさん (ワキゲー MM6e-FZLt)
2017/07/15(土) 00:12:14.92ID:kt01pjYOM 学ぶ気のない人からとても怒られるやつ
261デフォルトの名無しさん (スッップ Sd70-QKFr)
2017/07/15(土) 00:49:22.52ID:K6V0aa5ld262デフォルトの名無しさん (ワッチョイ f191-+gV6)
2017/07/15(土) 04:37:45.96ID:7LAckzVN0 >>256
コードをいじらないといけないじゃないか
コードをいじらないといけないじゃないか
263デフォルトの名無しさん (ワッチョイ f191-+gV6)
2017/07/15(土) 04:53:42.10ID:7LAckzVN0264デフォルトの名無しさん (ワッチョイ 626f-S4qQ)
2017/07/15(土) 08:42:06.63ID:tWt2y1Te0 >参照しか出来ないならwebシステムにすればいいんじゃね
ヒント:権限
ヒント:権限
265デフォルトの名無しさん (ワッチョイ aa11-OTuW)
2017/07/15(土) 09:43:36.21ID:jhhap/jh0 >>253
> ずっと使い続けてメンテも必要なVBAでセルにアクセスするなら名前経由でやってます?
状況次第だけどよくアクセスするとか重要なセルは適当なところでまとめて変数に代入してる
Dim hoge As Range
Set hoge = Range("A1")
...
hoge.value = "うんこ"
> 行挿入とかに追従してくれる名前の方を使うべきかなぁとか思ったり…
行とか列の挿入を想定するなら名前をつけてそれで参照する
ユーザーが作成するようなシートなら特定の文字列を検索して場所を特定するとかもやる
> ずっと使い続けてメンテも必要なVBAでセルにアクセスするなら名前経由でやってます?
状況次第だけどよくアクセスするとか重要なセルは適当なところでまとめて変数に代入してる
Dim hoge As Range
Set hoge = Range("A1")
...
hoge.value = "うんこ"
> 行挿入とかに追従してくれる名前の方を使うべきかなぁとか思ったり…
行とか列の挿入を想定するなら名前をつけてそれで参照する
ユーザーが作成するようなシートなら特定の文字列を検索して場所を特定するとかもやる
266デフォルトの名無しさん (ワッチョイ f191-+gV6)
2017/07/15(土) 09:44:21.75ID:7LAckzVN0267デフォルトの名無しさん (ワッチョイ f191-+gV6)
2017/07/15(土) 10:08:30.41ID:7LAckzVN0268デフォルトの名無しさん (ドコグロ MM36-OTuW)
2017/07/15(土) 11:40:57.26ID:aW477mPhM269デフォルトの名無しさん (ササクッテロラ Sp72-+gV6)
2017/07/15(土) 11:48:46.46ID:CRqbHh/Cp270デフォルトの名無しさん (ササクッテロラ Sp72-+gV6)
2017/07/15(土) 11:50:44.37ID:CRqbHh/Cp271デフォルトの名無しさん (ドコグロ MM2e-OTuW)
2017/07/15(土) 12:33:52.46ID:hu77KrcYM >>269-270
レスを分けて書く奴はもれなくバカの法則 w
レスを分けて書く奴はもれなくバカの法則 w
272デフォルトの名無しさん (ワッチョイ e66d-z+eH)
2017/07/15(土) 16:36:10.60ID:fdp++JjU0273デフォルトの名無しさん (ワッチョイ 4b3d-1CH6)
2017/07/15(土) 17:34:03.53ID:0urlci1o0 VBAのマクロって
・マクロ制作者本人の操作を補助する為のものであり、他人に使わせる事は想定されていない
・オフィス製品の操作を補助する為のものであり、アプリケーションの本来の振る舞いを超えた動作は想定されていない
・ユーザーフォームはマクロの操作を容易にする為のものであり、別のアプリケーションであるかの様に振る舞う事は想定されていない
なので想定されていないものを作ろうとしたら不便さを感じるのは当然
どんな言語もそうだけど、想定された使い方なら便利だし、そうでないなら不便だよ
・マクロ制作者本人の操作を補助する為のものであり、他人に使わせる事は想定されていない
・オフィス製品の操作を補助する為のものであり、アプリケーションの本来の振る舞いを超えた動作は想定されていない
・ユーザーフォームはマクロの操作を容易にする為のものであり、別のアプリケーションであるかの様に振る舞う事は想定されていない
なので想定されていないものを作ろうとしたら不便さを感じるのは当然
どんな言語もそうだけど、想定された使い方なら便利だし、そうでないなら不便だよ
274デフォルトの名無しさん (ワッチョイ c491-BaGs)
2017/07/15(土) 17:40:17.34ID:Id32lc0P0 >>255
なるほど
例えば
○年○月 の○のセルを指定する際に
「年」のセルを探してOffset(0,-1)する、みたいな感じですかね
自分はこれも名前つけて管理してましたが
セルが1つの場合はそれで良さそうですね
ただ、全く同じ内容のセルが検索範囲にないことが保証された運用にしないとバグりそうなのでちょっと怖いかも
>>256
表に対してレコードセットみたいなアクセスをしたい場合に
つい最近その方法を知って目からウロコでした
とにかくインテリセンスを効かせたい派なので・・
http://thom.hateblo.jp/entry/2015/12/17/000132
こういうことですよね
行方向に関しては、列のように各行に別々の意味を持たせるような使い方はしたことないので
問題ありませんね
>>261
自分は簡単なSQLを作る(ANDとかORで結合するだけ)に特化したStringBuilderみたいなのだけ使ってますね
>>265
やっぱ可変範囲のこと考えると名前つけるのは意味ありますよね
なるほど
例えば
○年○月 の○のセルを指定する際に
「年」のセルを探してOffset(0,-1)する、みたいな感じですかね
自分はこれも名前つけて管理してましたが
セルが1つの場合はそれで良さそうですね
ただ、全く同じ内容のセルが検索範囲にないことが保証された運用にしないとバグりそうなのでちょっと怖いかも
>>256
表に対してレコードセットみたいなアクセスをしたい場合に
つい最近その方法を知って目からウロコでした
とにかくインテリセンスを効かせたい派なので・・
http://thom.hateblo.jp/entry/2015/12/17/000132
こういうことですよね
行方向に関しては、列のように各行に別々の意味を持たせるような使い方はしたことないので
問題ありませんね
>>261
自分は簡単なSQLを作る(ANDとかORで結合するだけ)に特化したStringBuilderみたいなのだけ使ってますね
>>265
やっぱ可変範囲のこと考えると名前つけるのは意味ありますよね
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 高市首相、トランプ米大統領に「早期に会いたい」 日中関係悪化受け… ★3 [BFU★]
- 「これいいじゃん!!!」 セブン-イレブンの1620円で買える“1人用クリスマスケーキ”🎂に注目殺到「天才すぎる」 [パンナ・コッタ★]
- 【コメ】卸売業者「簡単に安売りできない」「大暴落起きれば大赤字に」 JA「新米の販売進度が近年になく遅い。コメの回転が悪い」 ★5 [Hitzeschleier★]
- 【コメ】卸売業者「簡単に安売りできない」「大暴落起きれば大赤字に」 JA「新米の販売進度が近年になく遅い。コメの回転が悪い」 ★4 [Hitzeschleier★]
- 小島瑠璃子さん、代表取締役を務める会社を破産申請 [牛丼★]
- 高市早苗首相が天理教系企業に“巨額発注” 総額5000万円 本人は「政治団体の活動に必要な支出」と回答 [Hitzeschleier★]
- アオキスーパーが国内初の核融合発電による電力購入契約、2030年代導入へキタ━━━━━━(゚∀゚)━━━━━━!!!!! [303493227]
- なんかさっきからフェイロンのステージ曲が頭から離れないんだが
- 【すこん部🏡】白上フブキ🦊配信中❗【ホロライブ▶】
- 【実況】博衣こよりのえちえちスーパーダンガンロンパ3🧪
- 【悲報】高市内閣、アホだった、、物価高対策に現金給付して良い!と、認めるも自治体は相談してほしい(コメ券やクポン券にして)と懇願 [219241683]
- 【安倍晋三】中国船4隻が領海侵入 [828897501]
