[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 01/29 07:34 / Filesize : 283 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Excel VBA 質問スレ Part22



1 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 22:36:18.78 ]
01 pc11.2ch.net/test/read.cgi/tech/1054356121/
02 pc11.2ch.net/test/read.cgi/tech/1168308855/
03 pc11.2ch.net/test/read.cgi/tech/1180192018/
04 pc11.2ch.net/test/read.cgi/tech/1189814602/
05 pc11.2ch.net/test/read.cgi/tech/1197448064/
06 pc11.2ch.net/test/read.cgi/tech/1205231499/
07 pc11.2ch.net/test/read.cgi/tech/1212587819/
08 pc11.2ch.net/test/read.cgi/tech/1219673793/
09 pc11.2ch.net/test/read.cgi/tech/1228372971/
10 pc12.2ch.net/test/read.cgi/tech/1235332603/
11 pc12.2ch.net/test/read.cgi/tech/1241885130/
12 pc12.2ch.net/test/read.cgi/tech/1247566074/
13 pc12.2ch.net/test/read.cgi/tech/1254281104/
14 pc12.2ch.net/test/read.cgi/tech/1262748898/
15 pc12.2ch.net/test/read.cgi/tech/1271261239/
16 hibari.2ch.net/test/read.cgi/tech/1280045912/
17 hibari.2ch.net/test/read.cgi/tech/1289182437/
18 hibari.2ch.net/test/read.cgi/tech/1298240666/
19 hibari.2ch.net/test/read.cgi/tech/1305754555/
20 hibari.2ch.net/test/read.cgi/tech/1312435844/

前スレ:
Excel VBA 質問スレ Part21
hibari.2ch.net/test/read.cgi/tech/1316931607/

321 名前:デフォルトの名無しさん [2011/12/18(日) 16:51:48.87 ]
Application
ActiveWindow
Application.ActiveWindow

この違いはなんなのでしょう?
誰か違いのわかる男(あるいは女)はいますか?

322 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 17:41:31.56 ]
字数が異なります

323 名前:321 [2011/12/18(日) 17:50:13.70 ]
ふざけるな

324 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 17:58:43.06 ]
>>321
前提として
ApplicationはExcel自体
WindowはExcel内の子ウィンドウで、Book などに対応して作成される

Excelを起動すると、Applicationオブジェクトが作成される
Bookを作成すると、Applicationオブジェクト配下に、WorkbookオブジェクトとWindowオブジェクトが作成される
もう一つBookを作成すると、Applicationオブジェクト配下に、別のWorkbookオブジェクトと別のWindowオブジェクトが作成される
workbookは文書内容そのものを保持し、Windowはドキュメント内容以外の状態や表示設定(Book単位のActiveCellや画面の拡縮率など)を保持する
ActiveなBook(ActiveWorkbook)を切り替えると、ApplicationオブジェクトのActiveWindow、ActiveCell、ActiveChartなども一式自動的に切り替わる

で、
Application は、ActiveSheet.Applicationの省略形で、Excel全体を表すApplicationオブジェクトを指す
Application.ActiveWindowは、Excel内のアクティブなWindowオブジェクトを指す(workbookを切り替えるとWindowオブジェクトも切り替わる)
ActiveWindow は、Application.ActiveWindow の省略形で、Application.ActiveWindow と同じ

おそらく内部では、
Application.ActiveCell を参照したとき、Application.ActiveWindow.ActiveCell を返すような実装になってるはずなので、
ActiveCell
Application.ActiveCell
ActiveWindow.ActiveCell
Application.ActiveWindow.ActiveCell
の4つは常に同一になるはず

325 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 18:32:16.70 ]
2つのオブジェクトが同一かどうか調べる方法ってあるのかな?
たとえば

Set ObjA = ActiveCell
Set ObjB = Application.ActiveWindow.ActiveCell
If ObjA = ObjB Then …

みたいな感じで

326 名前:321 [2011/12/18(日) 18:42:08.92 ]
>>324
ご丁寧なご説明ありがとうございます。
かなりわかってきたような気がします。
>>322のアホとは違いますね。
つこてる豆が違います。
こういう基本的とも思えることまで解説した本などがあればいいのにね。

327 名前:デフォルトの名無しさん [2011/12/18(日) 19:02:29.27 ]
>>325
実際に試したら
書いているとおりのコードで調べることができましたよ。

Sub Test()
Dim objA As Object
Dim objB As Object
Set objA = ActiveCell
Set objB = Application.ActiveWindow.ActiveCell
If objA = objB Then
Stop   '<=ここで止まった。
End If
End Sub

328 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 19:06:04.93 ]
"つこてる豆が違います" の検索結果が見つかりませんでした。
つ こ てる 魔 眼 が 違います の検索結果を表示しています。

Bingワロタw

329 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 20:41:28.74 ]
なぞなぞ
Debug.Print ActiveCell Is ActiveCell
の結果はFalse。さて理由は?



330 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 20:52:33.37 ]
>>327
ダウト。これ試してみ

Sub Test()
  Dim objA As Object, objB As Object
  Set objA = Range("A1")
  Set objB = Range("B2")
  If objA = objB Then Debug.Print "同じ"
End Sub

331 名前:327 [2011/12/18(日) 21:22:50.30 ]
>>330

If objA = objB Then
でレンジを入れたオブジェクト変数を比較すると、
objAとobjBのValueで比較するみたいですね。

上記コードに
else
Debug.Print "違う"
を付け加えて、セルに違う値入れて実行したら"違う"になりました。
あとは例えば比較対象をobjA.AddressとobjB.Addressにすると"違う"と判別されましたし、
A1とB2で書式設定を違うものにしたら
objA.NumberformatとobjB.Numberformatの比較も"違う"という結果になります。


332 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 21:29:46.45 ]
>>329
ひょっとして、
ActiveCellが返すRangeオブジェクトは現在の選択座標をもとに都度新規に作成されるとかそういう話?

333 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 21:34:17.84 ]
それを言うなら
Range("A1") Is Range("A1")
もFalseだね

334 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 21:39:41.65 ]
>>329
これ前から謎だったんたよな
正解を教えてくれると助かる

で自分なりに出した答えは
セルの参照先は一緒だけどRangeオブジェクト(インスタンス?)が違うから

下と同じ原理かなと思う
 Set objA = Range("A1")
 Set objB = Range("A1")
 Debug.Print objA Is objB

 Set objA = Range("A1")
 Set objB = objA
 Debug.Print objA Is objB
前者はFalse だけと 後者はTrue

335 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 22:45:17.52 ]
ヒント
Set objA = Worksheets(1)
Set objB = Worksheets(1)
Debug.Print objA Is objB
これはTRUE

336 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 23:16:30.48 ]
うわあ・・・

337 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 23:22:59.09 ]
別のプロシージャに配列渡してその値変えたら元も変わる?

338 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 23:25:51.03 ]
ちょっと試せばすぐにわかるのに

339 名前:334 mailto:sage [2011/12/18(日) 23:27:21.13 ]
>>335
これは
シートオフジェクトは最初からあるからだったりするのか?
VBEでみるとシートオフジェクトが見えるし



340 名前:334 mailto:sage [2011/12/18(日) 23:30:23.28 ]
シートオフジェクト ってなんだよ(笑)
シートオブジェクト だった

341 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 23:33:39.87 ]
VBAからVBEのユーザーフォームデザイン編集画面でツールボックスを右クリックして「その他のコントロール」を選択した時にでるダイアログの
「利用可能なコントロール」を制御する事は可能ですか?
制御は出来なくても利用可能か調べたりチェックされているかどうか調べる方法でも良いです

342 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 00:01:49.44 ]
>>338
あなたのVBA力と回答力を試しているんですが

343 名前:デフォルトの名無しさん [2011/12/19(月) 02:24:24.73 ]
VBAでIEのHTML表示領域の幅と高さを調べたいのですが
どうすればよいでしょうか?
HTMLDocument の HeightやWidthですと
IEのウインドウ幅と高さの取得になってしまいます。

344 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 02:30:36.62 ]
tree viewを使用し、配列gets(n,m)のツリーを作成しようと思ったのですが
n = 0
m = 0

Do While gets(n, m) <> ""

thttp = gets(n, 0) '親カテゴリ
TreeView1.Nodes.Add , , thttp, thttp, "oya"
m = 1

Do While gets(n, m) <> ""
sthttp = Split(gets(n, m), "/") '子カテゴリFormat = KEY/TITLE
TreeView1.Nodes.Add thttp, tvwChild, sthttp(0), sthttp(1), "child"
m = m + 1
Loop

n = n + 1
m = 0

Loop

gets(n,m)はm=0が親カテゴリ m>0が子カテゴリで
親カテゴリ(n,0)は 単語 が格納されて、子カテゴリ(n,m)m>0には KEY/単語 が格納されています
空白の要素を余分に持っているため <> "" で飛ばしています
親カテゴリ(n,0)の要素が空白になった時終了するようにしているのですが
実行すると実行エラー35602 "Key is not unique in collection"と出てツリーが作成できません

345 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 02:46:08.20 ]
同じkeyが指定されてるんじゃね

346 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 03:14:42.05 ]
keyは親子の関係なく 一意でないと いけなかったと思ったけどそうなってる?

347 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 03:20:57.96 ]
>>345-346
ご指摘通りでした
配列の内容を見直しましたところ同じKEYの物がありました
ありがとうございます

348 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 03:34:19.11 ]
>>343
scrollHeight, scrollWidth


349 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 04:23:13.62 ]
>>343
表示領域とは?

>>348 以外に
ClientWidth ClientHeight
もあるが



350 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 09:29:22.69 ]
>>334
Isってメモリのアドレスを比較してるんだよ。
 Set objA = Range("A1")
 Set objB = Range("A1")
 Debug.Print objA Is objB
って
 Set objA = Range("A1")
 Set objB = Range("A1")
 Debug.Print ObjPtr(objA) = ObjPtr(objB)
と同じ。


351 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 16:15:11.69 ]
どういう時にインスタンスが複製されるのかよくわからんちん

352 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 20:07:31.39 ]
>>351の言う複製の意味がよくわからんちん

353 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 23:12:18.80 ]
public変数使わない方が良い理由が分からん

354 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 23:20:55.81 ]
>>339-340
>シートオフジェクトは最初からあるからだったりするのか?

多分そう。

Cell オブジェクトなんてものがあれば、Cells("A1") Is Cells("A1") が
True になるかもしれないけど、VBA には、Cell オブジェクトはなくて、
(*仮に単一のセルだとしても) 常にRange オブジェクトになってしまう。

Range オブジェクトは、当然範囲の情報を持つ必要があるので、
Obj = ActiveCell とやる度に、各々別の Range オブジェクトが「生成」される。

と言うのが、>>329 の答えだと思う。

355 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 23:21:41.47 ]
>>353
>public変数使わない方が良い理由が分からん

必要ない奴に見せたがることはないだろ。

356 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 23:23:37.89 ]
ユーザーフォーム間で変数やり取りとかするときにどうしてもpublic使いたくなる
それでもやっぱりpublicには抵抗がある

357 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 23:32:17.87 ]
パブリックプロパティならいいんじゃない

358 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 01:07:18.25 ]
>>353
プログラムの規模が大きくなった時にバグの元になりやすいっていう経験則だよ
今はまだピンと来なくても、先人の言うことは聞いておいた方がいい

359 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 07:37:37.21 ]
逆にPublic変数を使った方がいいっていうシチュエーションはあるのかな



360 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 07:50:40.39 ]
Public変数

メリット:小規模プログラムで受け渡しI/Fを考えなくて良い

デメリット:クラス間の結合度が問題になる(再利用しにくくなる)

位?

ところでVBAって
ユーザー定義型変数の参照渡しをプロシジャ引数で渡せたっけ?
もちろんPublicで型宣言しておいて。
なんだか言語仕様上ダメだった記憶がある。

変数クラスを定義してそのクラスのインスタンスをローカルで定義して
参照渡ししないとダメだった記憶もある。

なので、ユーザーフォームクラスとの受け渡しはPublic使った様な記憶
がある。

361 名前:デフォルトの名無しさん [2011/12/20(火) 11:09:24.62 ]
>>360
矢切りの渡しでなら渡せる

362 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 13:33:28.48 ]
矢切の渡しってたまに聞くけどどういう意味なの?
調べてもそれっぽいのでてこないけど

363 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 15:58:55.11 ]
ListViewのSortOrderって昇順と降順しかない?
1,5,10,50,100
とあるとしても
1
10
100
5
50
となってしまいます
これを
1
5
10
50
100
のようにできないですか?

364 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 19:23:33.25 ]
>>362
だよな。それが心のこりだわ。

365 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 19:43:09.87 ]
Functionプロシージャ内でSubプロシージャって呼び出せますか?
自分でやったらダメでしたが、何か方法があれば教えてください。

366 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 20:27:23.48 ]
普通に呼べるが

367 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 21:16:35.69 ]
>>366
具体的には、シートで「=Function名(引数値)」って書いたんですが
Function中のSubが実行されないのが疑問になっています。普通に呼べますか?

368 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 21:36:46.56 ]
呼べる。MsgBox入れてみればわかる。

369 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 21:45:52.54 ]
あ、MsgBoxは動きました。有難う御座います。
自分がしたいのは、ワークシートのA1をクリアする様なSubを
Function中から呼び出す様にして、そのワークシートで
=Function名(引数)
とA1以外のセルで書いて、シートのA1をクリアすることです。



370 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 21:51:56.35 ]
求むESPer

371 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 21:58:53.06 ]
>>369
support.microsoft.com/kb/170787/ja


372 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 22:19:19.93 ]
>>371
おお、有難う御座います!そうか、できないのかぁ。セルの総和とかで
クリアするかどうかをFunctionで判定して消去、ってやりたかったなぁ。

373 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 23:17:07.48 ]
関数でシート操作をしたいんだろうけど
更新処理をフックにするくらいだろうなあ

374 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 03:41:16.16 ]
>>360
>ユーザー定義型変数の参照渡しをプロシジャ引数で渡せたっけ?
Public Type hogeType
    a As Integer
    b As Integer
End Type

があるとして

Sub test()
    Dim hoge As hogeType
    hoge.a = 1
    hoge.b = 2
    MsgBox hogesum(hoge)
    MsgBox hoge.a
End Sub
Function hogesum(ByRef hage As hogeType) As Integer
    hogesum = hage.a + hage.b
    hage.a = 0
    hage.b = 0
End Function

でtestを走らせると、3と0と表示される
問題なく渡せるようだ

ちなみに引数をByValにすると
ユーザー定義型をByValで渡すことはできません
ってコンパイルエラーになった

できないのは値渡しと矢切りの渡しだな

375 名前:360 mailto:sage [2011/12/21(水) 07:31:46.89 ]
>>374

申し訳ないですが、言葉がごっそり抜けてました。

-----------------------------------------------------

(誤)
ところでVBAって
ユーザー定義型変数の参照渡しをプロシジャ引数で渡せたっけ?

(正)
ところでVBAって
標準モジュールでGlobal定義されたユーザー定義型変数の参照渡しを
標準モジュールからクラスモジュールのプロシジャに
プロシジャ引数で渡せたっけ?

-----------------------------------------------------

同一クラス内や標準モジュール内で渡せるのは知ってます(実際にできているので)。
標準モジュールからクラスモジュールのプロシジャに渡そうかなと思って書いたら、
VBAから怒られた。

解決方法は、
クラスモジュールにユーザー定義型変数だけPublic定義したクラスを定義して
そのクラスのインスタンスを標準モジュールに定義してからそのObjectを参照渡しする。

だけど、面倒なので、サクッと渡せないかなぁ、とおもっだだけです。

376 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 07:33:57.50 ]
>>375
Friendでいけたような記憶が

377 名前:360 mailto:sage [2011/12/21(水) 07:34:45.04 ]
あと、

矢切りの渡しって
「global宣言されたユーザー定義型変数を標準モジュールからクラスモジュールのプロシジャに参照渡しする」
の意味でしょうか?
隠語を良くしらないので(不勉強済みませんが)。

378 名前:360 mailto:sage [2011/12/21(水) 07:37:20.28 ]
>>376
Friendも試したけどダメだった様な記憶があります。
VBだと可能らしい(VBは使ったことないですが)。

というので混乱した覚えがあります。

379 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 08:19:02.97 ]
>>377
昔、矢切の渡しってヒット曲があっただけのおっさんジョークだからあまり真面目に受け取るなよ… w



380 名前:360 mailto:sage [2011/12/21(水) 08:23:29.73 ]
りょうかい。
まぁ、ワシも40過ぎのおっさんですけどねw

381 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 16:50:38.27 ]
Windows97 Excel2003で、アドインについて。
下記のコードを一度実行後にxlaファイルの配置場所が変わった場合、そのまま再度下記を実行すると、変更後のパスでAddしても、実際には変更前のパスのアドインが追加されます。(ファイルがないため関数実行部分でエラー)

Set myAddIn = AddIns.Add(パス.あどいん.xla)
myAddIn.Installed = true
アドイン関数実行
myAddIn.Installed = false

どうもエクセル→ツール→アドイン から、該当するアドインを手動で削除しないとパスの変更に対応できないのですが、どうにか自動で対応できないでしょうか。
AddしたxlaファイルをKillしてもダメでした。

ケータイからなので見にくければすみません。よろしくお願いします。


382 名前:デフォルトの名無しさん [2011/12/21(水) 18:47:10.91 ]
質問あげ

383 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 20:42:08.31 ]
そのOSパチモンだよ

384 名前:381 [2011/12/21(水) 21:14:08.81 ]
うわどういう間違いしてんだorz
OSはXPです……

385 名前:381 mailto:sage [2011/12/21(水) 21:15:50.46 ]
自ら晒しageしてしまった…

386 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 22:05:49.76 ]
アドンズからリムーブしてみては?

387 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 22:17:31.77 ]
>>375
クラスモジュール(Class1)
Function hogesum(ByRef hage As hogeType) As Integer
    hogesum = hage.a + hage.b
    hage.a = 0
    hage.b = 0
End Function

標準モジュール

Public Type hogeType
    a As Integer
    b As Integer
End Type
Sub test()
    Dim hoge As hogeType
    Dim c As New Class1
    hoge.a = 1
    hoge.b = 2
    MsgBox c.hogesum(hoge)
    MsgBox hoge.a
End Sub

同じように3と0の表示
ためしたのは2007だから、それ以前のバージョンではどうかしらんが、問題なさそうだ
具体的にどういうエラーが出てたのか気になる


388 名前:360 mailto:sage [2011/12/21(水) 23:13:55.10 ]
どうもです。

私は2003で駄目だったんですが、
VBA6.Xという意味では同じですかね?
ただ、やったのが2年位前だったんで?です。

ユーザー定義型のサイズが数10KBクラスなので
その辺が怪しいのかも?

ありがとうございました。

389 名前:360 mailto:sage [2011/12/21(水) 23:21:38.00 ]
あ・・・思い出した

String型がメンバに含まれてました。
サイズを指定してないので動的変数ということになるので
その辺も影響しているかもです。
それと、ユーザー定義型のメンバに他のユーザー定義型を含んでます。


エラーメッセージは・・・・忘れてしまいましたが、
何となく理由が分かった様な気がします。
ありがとうございました。



390 名前:381 mailto:sage [2011/12/22(木) 09:50:46.01 ]
>>386
いろいろやってみましたが、リムーブの仕方がわかりません…
諦めて手動でやってもらう手順にするしかないかな…

391 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 12:38:16.17 ]
VBAと相性の良い言語って何がある?

392 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 12:53:13.38 ]
相性ってどういうこと?
どの言語でも組み合わせて使うという発想はあんまりないと思う
目的で使い分けるのが普通じゃないのかな

393 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 13:26:58.68 ]
Excelとって意味なら.NETかな

394 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 14:16:46.86 ]
VBSとか

395 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 14:24:48.00 ]
ActivePerl+WIN32::OLE

396 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 14:55:45.37 ]
webとデータのやり取りをするって意味です

397 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 15:14:31.06 ]
もしかして探してるのはアドインとかライブラリ?

398 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 20:49:09.81 ]
VBAが言語である事を知らないのでは

399 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 20:54:01.96 ]
入出力にExcelのワークシートを使って、演算処理は高速なCでやりたいとか



400 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 21:39:15.79 ]
>>399
> 演算処理は高速なCでやりたいとか

そんなこと思いつく奴の質問とは思えないが…

401 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 23:02:43.63 ]
3ステップで学ぶExcelVBA入門終わったんだが、次にオススメの課題有りの参考書オススメ無いですか?

402 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 23:05:35.35 ]
横から失礼します。
>>399
>入出力にExcelのワークシートを使って、演算処理は高速なCでやりたいとか
ちなみにこれの実現方法としては、例えばどんなのがあるんですか?

403 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 23:37:59.06 ]
>>402
Excel VBAからDLL呼び出し
www.ne.jp/asahi/hishidama/home/tech/excel/dll.html

404 名前:デフォルトの名無しさん [2011/12/23(金) 10:03:27.62 ]
FromにTimerを貼り付けるには?

405 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 10:42:30.15 ]
>>404
>Fromに

それは難しそうだ、その From とやらを作っている会社に問い合わせるべき。

406 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 11:20:34.71 ]
[タイマーコントロール] クラスモジュール
Tips15: VBAでも出来る [ タイマーコントロール ] クラスモジュール (Ver 3.0)
www.h3.dion.ne.jp/~sakatsu/Excel_Tips15.htm

Fromってなんやねん w
Formだろ


407 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 11:28:49.53 ]
Excel.Application.Visible = False
ブック作成

★ループ★
シート追加
ペースト
★ループ★

マクロ動作中に他の作業(ブラウザ使う)とかができない・・・(正確には画面がチカチカする)
完全にバックグラウンドで動作させるのは無理なのかな?

408 名前:404 [2011/12/23(金) 13:36:54.66 ]
>>405
アホ

>>406
ありがとうございます!
やっぱり標準機能ではないのですね
でも工夫すればできるということなんですね

409 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 15:58:49.73 ]
タイマーコントロールってVBAで出来たんだっけ
.netは標準装備だったけど



410 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 19:21:34.60 ]
APIのSetTimerとか使った自前実装っぽい。

411 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 21:16:35.17 ]
なんでググらないんだろうな
タイマーの実現方法調べるのに3時間か…

412 名前:デフォルトの名無しさん [2011/12/23(金) 21:54:29.88 ]
Formについてです。

はじめのときの
Load、Initialize、Activateの使いわけを教えてくださいませ。

あと、おわるときの
Unload、Terminateの使い分けを教えてくださいませ。

ちなみにLoad←→Unload、Initialize←→Terminateと対応ペアがあるようだけど、Activateに対するペアもう一方はなぜないのですか?

413 名前:デフォルトの名無しさん [2011/12/23(金) 22:23:42.54 ]
>>412
home.att.ne.jp/zeta/gen/excel/c04p28.htm
↑を読めば分かると思うけど、Activateの反対はDeactivate

そして、Load、Unload、Show、Hideはメソッドで
Activate、Deactivate、Initialize、Terminateはイベント

414 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 22:35:00.40 ]
>>387
こういう似非オブジェクト指向が面倒だからVBAではPublicばっか使ってるわ
vba程度で大規模なもんつくらねーし

415 名前:413 [2011/12/23(金) 22:35:43.53 ]
>>413はちょっと書き方に配慮が足りなかった。
(メソッドとイベントの対応が分かりにくい書き方になってた)

LoadするとInitializeイベントが発生して、
Showでイベントが発生する。
HideするとDeactivateイベントが発生して、
UnloadでTerminateイベントが発生する。

LoadしないでShowすると自動的にLoadされてShowするし、
HideしないでUnloadしても自動的にHideされてUnloadする。

416 名前:413 [2011/12/23(金) 22:37:50.21 ]
度々スマン
なぜか抜けてた
誤:Showでイベントが発生する。
正:ShowでActivateイベントが発生する。

417 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 22:40:19.38 ]
>>407
できるっしょ

418 名前:デフォルトの名無しさん [2011/12/24(土) 04:42:11.86 ]
特定のセルにコントロールを移したときに
そのセルに文字を入力したいのですがどうすればいいですか?

419 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 04:58:05.63 ]
>>418
SelectionChangeイベント



420 名前:418 [2011/12/24(土) 05:01:13.86 ]
>>419
ありがとうございます

421 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 05:56:28.60 ]
>>412
Loadは命令。Initialize、Activateはその結果実行されるプロシージャ(イベント)
Initializeはそのフォーム(のインスタンス)で1回しか起きないが、Activateは何回でも起きる(可能性がある)
Unloadも命令。Terminateはその結果起きるイベント

>>415
どうせならもうちょっと正確に書け
LoadとUnloadはメソッドじゃない。ステートメントだ
オブジェクト(フォーム)に定義されている命令ではなく、VBA言語に定義されている命令

LoadでInitializeイベントが起きるのも、ShowでActivateイベントが起きるのも結果に過ぎないぞ
ShowしなくてもActivateイベントは(そういう状況になれば)起こるし、HideしなくてもDeactivateイベントも起こる

こっから先は気にしなくてもいいかもしれんが、実験すると

Loadする前にインスタンス生成した段階でInitializeイベントは起こる
まあこれは解る

Unloadするとその時点でTerminateイベントが起こる
どうもインスタンスへの参照が無効になるっぽい。これはちょっと嫌な仕様だ

Unloadしないでインスタンスへの参照を削除した場合、Terminateイベントが起こってないかもしれん
デストラクタはあてにするなって事か

とりあえずLoadとUnloadメソッドは忘れて、Terminateイベントは無いものとして扱うのがいいんじゃないかな

ついでに実験中に気付いたこと
UserForm1.Show vbModeless
MsgBox "表示しました"
このコード走らすと初回表示のActivateイベントが発生しなくなる
これってバグじゃねえかと






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<283KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef