1 名前:デフォルトの名無しさん [2007/12/12(水) 17:27:44 ] ExcelのVBAに関する質問スレです 質問前に 【 >>2-3 】 あたりを良く読むこと 前スレ pc11.2ch.net/test/read.cgi/tech/1189814602/
596 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 05:05:50 ] >>555 モーグは、大村なんとかが嫌いだったので見てなかったんだが、久しぶりに見に行ったら 井川はるきという気持ち悪い奴がのさばってた。 ぐぐったら、こいつ何冊も本出してるな。 掲示板で初心者相手に回答もしてるみたいだし、ほんときもちわりー
597 名前:デフォルトの名無しさん [2008/01/30(水) 07:37:28 ] オラもモーグから来ますた。 ByRefとByValの話はもう終わり? 何かあるのかと思ったら、既出ネタの応酬とグダグダの展開に正直がっかりです。
598 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 09:35:53 ] もともと既出ネタなのに、何を期待してたんだ?
599 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 11:02:26 ] >>596 お前よりは役にたってるよ。 今回の引数の渡し方については、嘘をどうどうと書いたので叩かれてもしょうがないけどな。
600 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 11:13:05 ] しかし彼の本にオブジェクト型はByValで渡すべしなんて書かれてたりしたら、本を買った人がかわいそうだな。
601 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 11:19:17 ] >>594 そんなのありえないだろ? 元のセルが3.0という文字列なら別だが、もともと数値の3なら3だ。 どこかのセルにその値を代入すれば、表示形式によっては3だったり3.0だったりすることはあるがね。
602 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 12:31:31 ] >>599 役にたってるかなんかどうでもいい。 気持ち悪いかどうかって話だ。
603 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 12:49:20 ] 確かにモーグは、今一番キモいコミュニティだな
604 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 13:05:20 ] 漏れが一番Mougでウザイのは、あのしょっちゅうハンドル変えてるやつだな。 EFCを追放された名無しだろうけど。
605 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 13:38:13 ] >>514 参照の参照が渡されるから気持ち悪いというのを、もっと説明してください。
606 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 14:01:26 ] >>605 Mougが下がってるから、あそこで聞けば? もう>>514 はここ見てないかもよ。
607 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 14:48:27 ] 「下がってる」の意味が良くわからないのですが、Mougは巡回対象ではないので、 ここで回答がなければあきらめます。
608 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 15:48:05 ] もともと組み込み屋なのに転職したら最初にVBAやる羽目になってます。 VBはある程度使ってましたが忘れかけ。 質問は ユーザ定義クラスのインスタンス(の参照?)を渡して関数の先で値を入れてもらいたいのですが、 「型が一致しません」となります。何が原因でしょうか? 【Sheet1のpublicプロシージャ】 Public Sub GetData(idx As Long, ByRef item As clsUserA) item.Id = Me.Cells(idx + 1, 1) item.Name = Me.Cells(idx + 1, 2) item.Remark = Me.Cells(idx + 1, 3) item.Visible = Me.Cells(idx + 1, 4) End Sub 【それを呼び出すModule1のプロシージャ】 Sub Test() Dim tmpClass As clsUserA Dim i As Long Set tmpClass = new clsUserA For i = 0 to 10 Call sheetClassList.GetData(i, tmpClass) '★ここでエラー発生 Next End Sub よろしくお願いします・・・。
609 名前:608 mailto:sage [2008/01/30(水) 15:52:10 ] 簡単な名前にしようと思って書き換え忘れorz Call Sheet1.GetData(i, tmpClass) '★ここでエラー発生
610 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 16:36:51 ] >>608 clsUserAのプロパティでInstancingをPublicNotCreatebleに設定しろ
611 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 16:56:42 ] >>610 それは違うエラーが出たので昨日の時点で直しました。 クラスをやめて構造体にしてみたら パブリックオブジェクトモジュールで定義されてないと云々・・・ 何この中途半端な言語・・・。
612 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 17:35:20 ] 本当に解決してほしいのなら、エラーが発生する、検証可能な最低限のコードを「全て」書け
613 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 17:54:48 ] >>608 ところで、Sheet1クラスに定義したGetData( ) を Worksheet型で宣言したオブジェクトから呼ぼうとしてるのだとしたら大笑いなんだが、 そこは大丈夫? (要するに sheetClassList の変数の型が分からないんだが)
614 名前:608 mailto:sage [2008/01/30(水) 17:55:22 ] そのものをうpしてみた。 up01.ayame.jp/up/download/1201683170/attach/%E5%B7%A5%E7%A8%8B%E8%A1%A8.lzh PASSは prog 開いたときの真ん前にあるCommand1を押すと問題のポイントでエラーになります。 成功すると正面の表が変化するはず。
615 名前:608 mailto:sage [2008/01/30(水) 17:57:44 ] >>613 シートにプロシージャを定義してあって、 標準モジュールから呼んでます。 もしかして大笑いコース??
616 名前:608 mailto:sage [2008/01/30(水) 18:02:44 ] さっき配置変更して別のシートから呼んでました。 紛らわしくてすみません。 どっちにしても動きは同じですが。
617 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 19:12:07 ] >>614 再現手順を書け、アホ とりあえず Public Sub GetData(idx As Long, item As clsGantClass) にしたら、コンパイルエラー(呼び出せない)のは無くなった
618 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 19:13:35 ] >>608 ちょ、お前な。 ステップ実行で確認するくらいしろよ! 自分の意図してる場所のセルのデータが、ちゃんと取れてるかどうかと、 代入しようとしている構造体のメンバの変数型が合ってるかどうか。話はそれからだ。 ソース見る限りでは、Variantじゃなくて、クラスを指定しても動くと思うよ。 ⇒ Public Sub GetData(idx As Long, item As clsGantClass)
619 名前:617 mailto:sage [2008/01/30(水) 19:15:01 ] すまん、再現手順は書いてあったな。 ただ、ボタンをクリックしてもエラーは発生しないぞ?
620 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 19:16:21 ] >>610 が原因だったが、あれこれやってるうちに、何がなんだかわからなくなったと見た。
621 名前:608 mailto:sage [2008/01/30(水) 19:35:28 ] エラー出ないですか・・・。 sheetClassListはどこか書き換えたんでしょうか? いまだ動きません。 ほかのマシンで動かしてみようかなぁ
622 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 19:42:38 ] Me.Cells(idx + 1, 1)がLongじゃない。 以上。
623 名前:618 mailto:sage [2008/01/30(水) 19:44:43 ] >>621 え? ちょっと待て。何が分からないの? うpしてくれた .xls でいいんだよな? 直さなきゃいけないトコ、普通に分かるだろ。 あと、気になるのは、1度動かすと、sheetClassList.Count の値がぶっ飛ぶ。(ゼロになる)
624 名前:608 mailto:sage [2008/01/30(水) 20:04:14 ] わかりました○| ̄|_ CellはRaw:2から読まないとだめでしたね・・・(0+1=1 "id"読んでました) GetDataの内部の行ではなく、呼び出しの行がエラーになったために、その部分ばかりこだわってました。 ありがとうございました。精進します。
625 名前:618 mailto:sage [2008/01/30(水) 20:18:34 ] >>624 精進してください。 ちなみに、さっきザッと眺めた限りでは、あと変数型さえ直せば動くと思うよ。
626 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 20:21:01 ] おまいら釣られすぎ。 流れ変えようと>>514 が質問を始めたな。 何が組み込み屋だよwww
627 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 20:24:29 ] それならそれで乗ってやりゃ済む話だろ。 どんだけ粘着なんだよ。キモイやつだな。
628 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 20:37:18 ] >>626 流れをぶった切って申し訳ないが無関係なんで・・・。 組み込み屋馬鹿にスンナヽ(`Д´)ノ
629 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 21:51:38 ] それよりzzって相当生意気な香具師だな
630 名前:デフォルトの名無しさん [2008/01/30(水) 22:44:34 ] 質問です。 配列を一気にboolean型のtrueで初期化する方法はありますか? Dim hairetu As booleanです
631 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 23:06:31 ] OSはWindows XP、Excelは2002です。 エクセルに関しては、授業で習った程度の事しか出来ません。 エクセルのVBAでゲーム作成の課題が出て、マインスイーパを作ってみようと思ったんですが。 全てのボタンをトグルボタンで作ろうとすると、凄く重くなります。 更に一個一個のボタンにコードをいちいち打たなければならないので、 もし出来たとしてもやはり使い物にならなくなると思います。 コードをすっきりさせるやり方で、何か良い方法はありませんか? お願いします。
632 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 23:45:53 ] >>630 APIでメモリ操作 >>631 セルをボタンにみたてたら?
633 名前:デフォルトの名無しさん [2008/01/31(木) 00:11:47 ] 632さん ネットで調べたのがよくわかりませんでした。 どーいうことなのですか?
634 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 09:15:10 ] >>632 それも最初考えてみたんですが…。 マインスイーパでいう、ボタンをクリックすると文字が表示されるという動作と、 ボタンに爆弾の印を付けるという動作をさせるやり方が見つからなくて…。 セルの中の値を非表示にして、クリックなどの動作で其れを表示させるというやり方が 可能なのでしょうか?
635 名前:デフォルトの名無しさん [2008/01/31(木) 09:50:20 ] >>634 workbookのsheetchangeでいちいち全セルのvalueを見回るようにするとか どっちにしろ重くなるけど
636 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 10:03:14 ] コントロール配列とかでイベントプロシージャ共有じゃだめなん? サブクラス化して変数持たせないと呼び出し元識別できないっけ?
637 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 14:24:13 ] >>635 >>636 コントロール配列が出来るなら…何とか出来るかもしれません。 どちらも自分には難しそうですが、またちょっと調べて作ってきます。 すいません、有難う御座います。
638 名前:デフォルトの名無しさん [2008/01/31(木) 21:27:29 ] ワークシートにファイルからオブジェクトを挿入し 同時に同じファイルにハイパーリンクを設定するマクロを作っています。 ひとまずマクロの記録をして、それを元に作成しようと考えたのですが、 記録したものを実行すると2行目、3行目でエラーが出てしまいます。 (改変したものでもエラーが出ます) 2行目はオブジェクトを挿入すると"=EMBED("○○","")"という数式?が追加されるので それを削除する工程です。 明日までには処理完了させねばならないのですが、何が問題なのか御教示下さい。 Sub Macro() ActiveSheet.OLEObjects.Add(Filename:="C:\test.pdf", Link:=False, DisplayAsIcon:=False).Select Selection.Formula = "" ActiveSheet.Hyperlinks.Add Anchor:=Selection.ShapeRange.Item(1), Address:="C:\test.pdf" End Sub
639 名前:デフォルトの名無しさん [2008/02/01(金) 11:16:45 ] 複数あるフォームのひとつを変数扱いで表示することは可能でしょうか。 下のサンプルのようなことをやりたいのですが 「オブジェクトはこのメソッドをサポートしてません」と出てしまいしまいます。 (UserForm1は勿論つくってあります) myForm+ピリオドでShowメソッドが出てこないので、ダメなのは解っているのですが。。 Sub sump() Dim myForm As UserForm Set myForm = New UserForm1 myForm.Show End Sub
640 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 11:48:31 ] >>639 UserForm と UserForm1 はベツモノのクラスだよ。Control と Textbox みたいな親子関係。 変数の型を UserForm1 にしてやればおk。
641 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 12:07:20 ] >>640 できました UserForm1型があるなんて知りませんでした。 親(userform)に子(userform1)を代入、みたいに考えてました・・ ありがとうございます。
642 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 12:26:35 ] >>641 フォーム型のクラスを継承するイメージかな。 当然、フォームの(オブジェクト名)を変更すると、クラス名(変数型)も変わるよ。 一旦、オブジェクトを作成してから、userform型に userform1を代入するのは間違いじゃない。 userform1、userform2・・・と型が増えたときに、userform に代入すれば、どれでも操作できる。 Control と Textbox、Label、Combobox・・・ の関係と似たようなもんだよね。
643 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 12:51:24 ] >>642 639=641です userform1型を使うのはできましたが、これだと myform変数にuserform2を代入できないことがわかりました。(型が違うため) このような場合どうしたらよいでしょうか。 >userform1、userform2・・・と型が増えたときに、userform に代入すれば、どれでも操作できる。 このやり方を知りたいのですが。(繰り返しですみません)
644 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 13:00:34 ] 643です たびたびすみません、object型を使ったらできました! これで合ってるでしょうか。
645 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 14:25:37 ] >>644 ↓こういう作りになってれば、少なくともエラーにはならないと思うんだけど・・・?(Excel2000) Dim a As UserForm1, Dim b As UserForm2, Dim c As UserForm Set a = New UserForm1 Set b = New UserForm2 Set c = a Set c = b Object型は、なるべく使わないに越した事はないよ。ダメだという意味じゃないけど。
646 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 15:32:34 ] >>645 やってみましたが、c.Showでエラーになってしまいます。 (メソッドをサポートしません)
647 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 16:08:12 ] >>646 あー、そういう意味か。 申し訳ない、代入した後は、代入した先の変数型の持ってるメンバしか使えないよ。 Control 型に、ラベルやチェックボックスを入れても.Caption を設定できないのと同じこと。 >myForm+ピリオドでShowメソッドが出てこないので、ダメなのは解っているのですが。。 仰るとおり、Userform 型は、.Show() をサポートしていない。 異なるクラスで、共通のメソッドを呼びたいなら、Objectを使うしかないです。 あるいは、インターフェイス用のクラスを作って Implements する方法があるけど、 フォームに使うのは怖いので、特に事情が無い限りはやめた方がいいと思います。
648 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 16:43:27 ] >>647 了解です、今回はobjct変数でやることにします。 (やりたいことはメッセージ代わりのフォームを打ち分けたいだけなので) 何度もお手数をとらせ申し訳ありませんでした。
649 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 23:54:14 ] VBってオブジェクトと初期インスタンスの名称が同じだって所が半端な感じだよね
650 名前:デフォルトの名無しさん [2008/02/03(日) 16:39:17 ] os:xp excel:2003 VBAで指定列からAを検索し、発見したら隣のセルに0を入れるマクロを組みたいのですが、組み方がVBA初心者の為わかりません。 (例) L列に、A、B、C、D、E、Fとランダムに文字が入っていて、 文字Aを検索し、発見したら隣のI列に値0を入れるというマクロです。 Sub Search() Dim A As String Set A = Worksheets("Sheet1").Cells.Find("A") If A Is Nothing Then ActiveCell.Offset(0, 1).Value = 0 End If End Sub と自分で考えてみたのですが、Aがあった時、、、、 とコードが書けないです。 大変困っているので、ご教授頂けないでしょうか? 長文失礼しました!
651 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 18:19:53 ] 突っ込みどころが多すぎ 全部に突っ込むの面倒なので正解書いておく Sub Search() Dim A As Range Set A = Worksheets("Sheet1").Columns("L").Find("A") If Not A Is Nothing Then A.Offset(0, 1).Value = 0 End If End Sub うわ、プロシージャ宣言やEnd Ifなど、間違いようのない部分以外、全部間違ってるじゃんw
652 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 18:35:44 ] notつけろの一言だけで済む話を教えたがりはこうやるわけだ
653 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 20:53:17 ] >>652 not付けました 実行結果は以下の通りです┐(´ー`)┌ --------------------------- Microsoft Visual Basic --------------------------- コンパイル エラー: オブジェクトが必要です。 --------------------------- OK ヘルプ ---------------------------
654 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 00:44:54 ] For n = 1 to 3 step 1 msgbox ("n nを表示したい場合はmsgbox ("n このあと何するのか分かる人いたら教えて下さい
655 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 00:57:25 ] msgbox ("n")
656 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 02:52:03 ] msgbox n
657 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 03:34:18 ] ("n")バーカ
658 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 13:38:43 ] >>657 pc11.2ch.net/test/read.cgi/tech/1197881068/276
659 名前:デフォルトの名無しさん [2008/02/05(火) 10:49:33 ] 標準モジュールから、ユーザーフォームのテキストボックスに、 文字を表示させるにはどうすればいいでしょうか 以下では、ダメでした。 Sub test() If Range("A1").Value = 1 Then TextBox1.Value = "ぼぼぼぼぼぼ" End Sub
660 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 11:22:30 ] だから、どうダメだったか位書こうぜ。 つーか、エラーメッセージくらい自力で理解しろよ。
661 名前:659 [2008/02/05(火) 11:39:17 ] それが分かったら来ませんがな・・(´・ω・) モジュール間で値渡し?しなければならないというのは 何となく分かるのですが、textbox1の「change」とか「enter」とか どこに記述すればいいのかも分からず、現在に至っております。
662 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 11:49:56 ] >>661 エラーメッセージは出ませんでしたか? 恐らく、>653のようなダイアログが出たと思うのですが。 それを見ても何も理解できないようなら人間やめた方が宜しいかと。
663 名前:659 [2008/02/05(火) 11:55:57 ] >>662 textbox1 の変数が定義されていません と出ますね。 いちおう、フォームでtextbox1は作っているんですよ。
664 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 12:41:37 ] >>663 標準モジュールに記述してるんだったら、 Range("A1").Value にしろ TextBox1.Value にしろ、未定義扱いになると思うが? (どこに属するオブジェクトか判断できない。明示的に指定されていない。)
665 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 12:48:53 ] シートから実行してしまうと、Rangeの方は未定義にならない罠。
666 名前:664 mailto:sage [2008/02/05(火) 12:55:45 ] >>665 うを、ホントだ。素で知らんかった。Activesheetを拾うっぽいね。 どうもありがd。
667 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 13:56:32 ] >>664 その定義方法がですね、textboxから、プロシージャをcallする場合は 分かるのですが、この逆になると、textboxのchangeなのかenterなのか keydownなのかどこで定義したらいいのか・・・そもそも不可能なのか・・
668 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 14:10:50 ] >>667 イベントプロシージャを使うつもりなら、どのイベントで処理するか決めるだけじゃないの? つか、どういう動きをさせたいの?
669 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 14:11:31 ] >>667 もしかして、フォームのプロシージャから標準モジュールをサブルーチンとして使いたいのか? だとしたら、フォーム自身なりテキストボックス自身をそのtest()に渡してやればいい。 やりたいこととやっていることの説明くらいできないようじゃ、先が思いやられるけどね。
670 名前:デフォルトの名無しさん [2008/02/05(火) 15:14:50 ] お付き合い頂き感謝します。 標準モジュールから、ユーザーフォームのテキストボックスを呼び出して、 なおかつそのテキストボックスに任意の文字列を表示させたいです。 テキストボックスのプロシージャから、標準モジュールを呼び出すのは 何とかできるのですが、逆がどうしても出来ません・・
671 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 15:18:49 ] 面倒だから、全ての自作オブジェクトの一覧と全てのプロシージャの一覧出しちゃえよ。 状況説明できない馬鹿にいくら聞いても説明しても無駄だって判ったからさ。
672 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 15:21:08 ] >>670 いや、だから・・・ 何かしらの処理が実現できない、っていう相談じゃなくて、コードの書き方が分からんってこと? 標準モジュールに記述したプロシージャは、どこかから呼ばれるまでは処理が走らない。 その前提の上で、特定のフォームの部品を扱いたいなら、○○(Userform名).Textbox1 例えば、デフォルトのオブジェクト名であれば、Userform1.Textbox1.Value でアクセスできる。 TextBox1.Value だけでは対象が分からんからエラーになる。 単にValue とだけ書くようなもん。
673 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 15:24:36 ] うぜーーーー Sub foo() UserForm1.TextBox1.Text = "abc" UserForm1.Show End Sub
674 名前:672 mailto:sage [2008/02/05(火) 15:29:26 ] >>670 あー、ごめん、よく考えたら 672の書き方じゃ絶対に分からんな。 まずはフォームの実体を取得しなきゃならんので、どこかから呼び出されるのを前提で、 ”基本的には”標準モジュールのプロシージャに引数として処理対象のオブジェクトを渡すか、 フォームのインスタンスを作るトコから全て標準モジュールの処理で書かないといけない。
675 名前:デフォルトの名無しさん [2008/02/05(火) 15:39:12 ] >>972-974 でけた^^ コードの書き方の問題なのかも分かりませんでした・・orz ありがとうございました!
676 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 15:40:29 ] 感謝まで明後日の方向向いているよ。どうしようもねぇな。
677 名前:672 mailto:sage [2008/02/05(火) 15:42:12 ] ワロタw
678 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 15:44:13 ] >>674 なんか勘違いしてない? インスタンス化はアクセスされると自動的に行われるよ?
679 名前:672 mailto:sage [2008/02/05(火) 15:55:59 ] >>678 勘違い、つか、VBが特殊な使い方ができるだけで、 インスタンスを作ってから使うのが基本だと俺は思ってるから、自然とそういう書き方になった。 複数のインスタンスが持てないわけでもなし、何故突っ込まれるのかが分からんが。
680 名前:672 mailto:sage [2008/02/05(火) 16:00:40 ] >>678 あ、スマン、書き込んでから言いたい事が分かった・・・。確かに、勘違いしてるように見える。 申し訳ない。
681 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 16:04:15 ] 少なくとも、VBA/VB6では、規定のインスタンス(暗黙のインスタンス化)を使うのが、 まぁデフォですので・・・。
682 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 16:16:38 ] Windows XP + Excel 2000SP3です。 MouseWheel Fixをアドインマネージャに起動時/ロードで設定すると、VBEを開こうとすると 「インストールの準備中」のダイアログが出て先に進みません。 ただ、なぜだかその状態で一度Excelを終了させてすぐに起動すると、そのダイアログが 終了してVBEが立ち上がるようになります。 「起動時/ロード」を設定せずに、Excel起動後にロードしようとしても、やはり最初の一回は 「インストールの準備中」から先に進みません。 何か、解決法はあるでしょうか?
683 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 16:40:58 ] 自作のDLLをDeclareで参照して使うと、Excelを終了させないとDLLがアンロードされないみたいなんですが、 強制的にDLLをアンロードするにはどうすればいいですか?
684 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 16:57:04 ] >>683 日本語訳はヘンテコなんでこっちで。 PRB: Loading and Unloading DLLs in the Design Environment ttp://support.microsoft.com/?scid=kb%3Ben-us%3B129514&x=14&y=13
685 名前:≠683 mailto:sage [2008/02/05(火) 17:17:18 ] つまり、Declare宣言を編集しようと試みると強制的にアンロードされるってことでいいのかな?
686 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 17:36:25 ] >>685 Declareの"r"を削除して行を離れると、強制コンパイルされてDLLがアンロードされるから、 その行に戻って"r"をタイプして元通りにしろってことね。
687 名前:デフォルトの名無しさん [2008/02/05(火) 23:14:50 ] i = 3 Do While Cells(i, 1) = "東京" If Range(i, 10) = 1 Then Range("i" & Columns.Count).End(xlUp).Value = st4 & st5 st1 = Range(i, 8) st2 = Range(i, 9) With ws2.Range("A" & Rows.Count).End(xlUp) .Offset(0.1) = st1 .Offset(0.2) = st2 End With i = i + 1 Loop 恐れ入ります。 A列3行目から”東京”となっている間ずっと、 もしその行の10列目が”1”であるなら”1”の一つ右の行を確認、 空白だったらST4とST5の文字列を貼り付ける。空欄でなかったらさらに一つ右の行を確認・・・(ループ) さらにST1、ST2の文字列を貼り付け・・・ というのをループさせたいのですが、 ”1”の一つ右の行を確認、空白だったらST4とST5の文字列を貼り付ける。空欄でなかったらさらに一つ右の行を確認・・・(ループ) の部分がよく分かりません。また、実行してみてもLOOPに対するDOが無いとのエラーになってしまいます。 おばかな質問で恐縮ですが、よろしくお願いします。
688 名前:デフォルトの名無しさん [2008/02/05(火) 23:33:09 ] i=i+1の前に end ifがいる。
689 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 06:52:49 ] >>682 そんな現象なったことないが、原因分かんないならVectorとかで同種のソフト拾ってきて使えば? もしくはExcelを再インストールして様子見るとか
690 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 09:48:27 ] >>682 他のアドイン機能はちゃんと動作するのか確認して、異常がないようなら MouseWheel Fix を一旦登録解除(クラスライブラリ)してから、再登録してみたら?
691 名前:682 mailto:sage [2008/02/06(水) 10:50:25 ] >>689 ,690 コメントありがとうございます。 他のアドインは正しく動きました。また、MouseWheel Fixをregsvr32 /uして再登録してみたんですが 状況が改善しませんでした。 いろいろと検索していると、同種のアドインが見つかりましたので、それを試してみたらうまく 動作しているようなので、とりあえずはこちらを使うことにします。 AddAutoScroll for VB6/VBE6 ttp://homepage1.nifty.com/mtj-k/software/addautoscroll_vb6.html
692 名前:デフォルトの名無しさん [2008/02/06(水) 11:30:49 ] OS vista excel 2007 Dim i As Integer Dim x(10), y(10) As Single For i = 1 To 10 x(i) = i y(i) = i Next Cells(1, 1).Value = Application.WorksheetFunction.LinEst(y, x) linest関数を使いたいのですが、試しに上記のようなプログラムを作成したところ 肝心のlinest関数のところで「linestプロパティが取得できません」とエラーがでます 基礎的な間違いをしてる気がするのですが、どうかアドバイスをお願いします
693 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 11:53:18 ] 'テキストファイルを開きます。 Workbooks.OpenText Filename:=strFileName, _ Origin:=xlWindows, _ StartRow:=2, _ DataType:=xlDelimited, _ TextQualifier:=xlNone, _ ConsecutiveDelimiter:=False, _ Tab:=False, Semicolon:=False, Space:=False, Other:=False, _ Comma:=True, _ FieldInfo:=Array( _ Array(1, 2), Array(2, 1), Array(3, 2), Array(4, 2), Array(5, 2), _ Array(6, 2), Array(7, 2), Array(8, 2), Array(9, 2), Array(10, 2), _ Array(11, 2), Array(12, 2), Array(13, 2), Array(14, 1), Array(15, 1), _ Array(16, 1), Array(17, 1), Array(18, 1), Array(19, 2), Array(20, 2), _ Array(21, 2), Array(22, 2), Array(23, 2), Array(24, 2), Array(25, 2), _ Array(26, 1), Array(27, 2), Array(28, 2), Array(29, 2), Array(30, 2), _ Array(31, 2), Array(32, 2), Array(33, 2), Array(34, 2), Array(35, 2), _ Array(36, 2), Array(37, 2), Array(38, 2), Array(39, 2), Array(40, 2) _ ) 上記処理にてWinXP SP2 Office2003 SP3環境では問題なくシート表示するのですが、 WinXP SP2 OfficeXP (SP状態は不明です)の環境では文字化けして表示されます。 化けるフィールドとしては2バイト文字のところで、 テキストファイルとしては半角カナも全角漢字も混在のCSVで 改行コード、文字コードはCRLFのSjisです。 原因と対策がよくわからなくて困っております。 何かご存知でしたら教えていただければ、と思います。 よろしく頼みます。
694 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 12:28:21 ] >>692 xの配列を渡さずに ~.LinEst(y) と書いたら動くから、パラメータの与え方が違うのかな? スマンが使った事が無いので、識者を待つか、ヘルプを見れ。 ttp://office.microsoft.com/ja-jp/excel/HP100698381041.aspx?pid=CH100645381041
695 名前:692 [2008/02/07(木) 07:29:16 ] すみません。 ただの宣言ミスでした。 Dim x(10) as single, y(10) As Single としたら動きました。 >>694 どうもありがとうございます。 聞く時はもっと気を付けてからにしようと思います。
696 名前:デフォルトの名無しさん [2008/02/07(木) 12:10:10 ] 激しくスレ違いかもしれませんが、質問です。 PCゲームを多重起動しようと試みたのですがダメでした。 大抵のゲームはWindowsのアカウントを2つ作成し、別々のアカウントで起動すれば問題ありません。 現在、Vistaを使っているのでXPではどうなるかはわかりませんが(XPは右クリックから別ユーザーで起動が可能)、 Vistaでその手法をとる場合、runasコマンドを使用することになります。 しかしこのコマンドで別々に起動しても、後から起動したほうが無効になってしまいました。 で、ここからがわけわかめなのですが、同一のデスクトップからの起動はダメでも、 Windowメニュー→ユーザー切り替えをし、別々に起動すればうまくいきました。 この違いはいったいなんなのでしょうか?