1 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 01:50:27.76 ] ここは Visual Basic 〜6.0 の質問スレです。 質問者は使用しているOS、VBのバージョン、サービスパックのバージョン、 「何がしたくて、どうしたけど、どう困っているのか」を明確に書きましょう。 VB.NETは別物なので専門スレで、VBA、APIの質問もそれぞれのスレで。 ○ 質問者の心得 一.質問する前にMSDNやGoogle、過去ログにも目を通してみる。 二.VBScript、インストーラーなどはこのスレでOK。 三.質問は第三者にもわかりやすいよう簡潔かつ具体的に。 四.荒らしは相手しない。 ○ 回答者の心得 一.答えられない質問は無駄に罵倒せずスルー。無理するな。 二.代用法を強制しない。 三.回答する上で必須ではない情報をむやみに聞き返さない。 四.荒らしは相手しない。 五.VB情報募集中。 六.回答は質問者が理解できるよう具体的に。 MSDN Online Japan ホーム www.microsoft.com/japan/msdn/default.asp Visual Studio 6.0 Service Pack 6 msdn.microsoft.com/vstudio/downloads/updates/sp/vs6/sp6/default.aspx Google www.google.co.jp/ ※「まず自分で調べる」クセを身につけよう。
735 名前:デフォルトの名無しさん [2011/12/07(水) 23:27:05.55 ] 728です。 Ethernet-シリアルコンバンーターは、CONTECのRP-COM(FIT)H-AFです。 www3.contec.co.jp/B2B/ConIWCatProductPage_B2B.process?Merchant_Id=1&Section_Id=54&Catalog_Id=54&Product_Id=1528 当機は、仮想ポートには対応しております。
736 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 23:49:48.95 ] じゃあ解決だね
737 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 23:51:42.93 ] >>735 マニュアルとドライバぐらいダウンロードしないよ。 制御PCに仮想COMドライバをインストールすればよい。 後は普通のCOMポートと同じように使用できる。 もしくは、もう一台シリアルコンバーターを買ってきて、 制御PCのCOMポートに接続してあげればよい。 もし制御PCからUDPを使って装置を制御する事を期待しているなら、 装置のファームウェアを変更して、RP-COM(FIT)H-AFの専用コマンドに 対応するように作りかえる必要がある。 ただし、この手のハードウェアは制御線の動作に癖があるので、 CS/RSやCTS/RTSを変わった使い方してるとまともに動かない事もある。
738 名前:デフォルトの名無しさん mailto:sage [2011/12/08(木) 00:00:45.20 ] >>734 ない。
739 名前:デフォルトの名無しさん [2011/12/08(木) 01:36:46.69 ] 728です。 大変参考になりました。 ありがとうございました。
740 名前:デフォルトの名無しさん mailto:sage [2011/12/08(木) 09:43:50.99 ] VBの総合スレみたいのはないのかな。 コードは出来てる(と思う)んだけど、今VBが使えない環境なもんで、 誰か代わりに実行してULし直して貰えたりしませんか? www1.axfc.net/uploader/Sc/so/298858.zip 同梱ファイルのバイナリを書き換えるだけの物なんだけど、手動じゃちょっと膨大で。
741 名前:デフォルトの名無しさん mailto:sage [2011/12/08(木) 10:50:53.13 ] その程度の内容ならVBじゃなくてもベクターなどから適当なBasicなり他の言語でもひろって作ればええやん
742 名前:デフォルトの名無しさん mailto:sage [2011/12/08(木) 12:00:51.92 ] >>727 >文字化けが生じてしまった あたりまえだ。 固定バイトで区切るんだから、2バイト文字の間で区切ったら 文字と対応しないバイト列になるんだから 表示できない。 文字コード変換してとか解決したように見えただけだろ。 もし表示できてるなら、指定バイトで区切られてないはず。 表示したものをもう一度書き出すプログラムなんて世に送り出さないでくれ。
743 名前:デフォルトの名無しさん mailto:sage [2011/12/08(木) 12:23:58.60 ] >最終的には、ADODB.streamの文字コード変換を使って解決した。 2バイト文字を切ったとかじゃなくて、そもそも違う文字コードのを データを表示しようとして化けただけじゃないか シフトJIS固定長で文字が境界またぐなら、格納時に考慮しとくべき問題だが
744 名前:デフォルトの名無しさん mailto:sage [2011/12/08(木) 12:38:34.22 ] >>741 すみません、スマホしかないもので。 ダメもとで、とりあえずあちこち見ながら書いてはみたものの。 でもそれ程基礎的な物ならスマホ上でも動くアプリあるかもしれないですね。 もう少し勉強し直してみます、ありがとうございました。
745 名前:デフォルトの名無しさん mailto:sage [2011/12/08(木) 13:04:46.33 ] スマホで動くものをVBで作れと?
746 名前:デフォルトの名無しさん mailto:sage [2011/12/08(木) 13:06:52.79 ] Androidのアプリなら作れるけど
747 名前:デフォルトの名無しさん mailto:sage [2011/12/08(木) 14:17:19.97 ] VB6でやろうとするのはどんな苦行だろう
748 名前:デフォルトの名無しさん mailto:sage [2011/12/08(木) 20:07:09.17 ] Windows Mobileと呼ばれる前のPocket PC 2003で動くeVB3用アプリなら作れるけど
749 名前:デフォルトの名無しさん mailto:sage [2011/12/08(木) 21:21:16.25 ] 俺はeVC3なら作れる
750 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 01:46:41.86 ] いわゆる趣味でプログラミングとかしてんだけど ちょっとした作業ツールとか作るの慣れたVB6が楽すぎて未だにVB6から離れられない
751 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 03:19:45.10 ] すごく初歩的な質問なんだけど、インスタンスの生成方法がさっぱり分からんorz Dim btn As CommandButton ' コンパイル通るし、実行してもエラー起きない Dim btnA As New CommandButton ' New キーワードの使い方がだめ とエラーが出る Set btn = New CommandButton ' 同上 Dim a As New Class1 'Class1は何も書いてない適当なクラスモジュール。 問題ない。 おそらく、CommandButtonは抽象クラスだから生成出来ないのかな?と考えてはいるんですが エラーメッセージが変だし、Class1でコンストラクタなど定義してないにもかかわらず、生成出来る不思議。 そして、ネット上で探してもノイズ(VB.NET)が多すぎてよく分からんorz
752 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 03:42:06.27 ] あと、変数の宣言を強制する方法は分かったけど、 (デフォルトで入れておけよ…デフォルトで入ってないから未定義の変数を読み出す様なひどいソースを引き継ぐことになったorz) 型変換、キャストも強制するオプションはどうすれば? あと、誰かLongのリテラルの書き方教えてくれ、 Dim j As Long j = &HFFFF MsgBox(j) ' -1 !? MsgBox(&H10000 - 1) ' 65535 とりあえず Const H0xFFFF = &H1FFFF - &H10000 Const H0x8000 = &H18000 - &H10000 というようなのを定義してごまかしてるけど。 とりあえず、この入門書(笑)は風呂の焚き物にしかならんな…
753 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 05:08:55.90 ] 私こと初心者が適当な風に回答します >>751 CommandButtonなどのコントロールは、たしかNewでインスタンスは生成できないとか 「VB6 動的 コントロール」でググるとコントロールの動的追加について記載サイト出てくるかも >>752 こゆこと? Dim a As Long, b As Integer, c As Single, d As Double ↓ Dim a&, b%, c!, d# a = 100& (Long型) b = 100% (Integer型) c = 100! (Single型) d = 100# (Double型) オプションは分からないけどキャストは CInt() CLng() CSng() CDbl() とかそういう関数あるよ
754 名前:753 mailto:sage [2011/12/09(金) 05:10:49.37 ] 勘違いしてたり間違ってたりしてたらごめんなさいね
755 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 07:12:29.84 ] >>751 UI部品のインスタンスを動的に作成する場合にはいくつか制限がある。 フォーム上にボタンを張り付けて、Indexに0と指定しておく。 でもってコントロール配列に対して「Load Button1(1)」とすれば、 インスタンスを生成できる。
756 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 07:27:23.06 ] >>742 答えは>>743 。VB6が勝手にUNICODEにしてしまうところでそうなった。 境界またぎはさせてないよ。
757 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 08:17:21.17 ] 配列にしなくても動的作成できるなんて始めてしった 7ujm.net/VB/VB6Controls.html
758 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 09:26:32.58 ] 配列でロードする方法ならIndex 0のプロパティがほとんどコピーされるから 実行時に型を変える(TextBoxに入力したコントロール名のを作成)とかで ない限り、配列ロードでいいんじゃないの。
759 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 09:28:04.83 ] えー ださいよー
760 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 15:15:33.32 ] New使ってるからLoadでのコピーは用途違うんじゃねの?知らんけど
761 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 16:24:09.53 ] >>753 ああ、なるほど、ケツにつけるから併用出来るのか MsgBox(&HFFFF&)ででけた 自動でキャストされることになれてないから、キャストを明示的に指定しなきゃいけない様に設定できたら VB初心者のおいらでも安心してくめるかなと。そうした方が後継者もあんまり混乱しなくてすむし。 >>755-760 thx。要素数に応じて、コントロールを並べることを考えてたからコントロール配列で良さそうだわ。 コントロール配列使えばたぶん必要ないことだと思うけど、 VB6にはまだ匿名関数でクロージャをやったりとか出来ないよね?(確認) コールバックとか難しそうだな…AddressOfで取得したのを直接実行できないのかよ。
762 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 16:33:10.59 ] AddressOfは外部APIに渡すときしか使えなかったような
763 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 17:08:05.52 ] 何言ってるのかさっぱりわからん
764 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 18:31:41.95 ] >>763 いやさ、おまえらみたいになれてる奴には気にならんかもしれんけど d.hatena.ne.jp/snaka72/20100126/1264514893 ここに書いてあるようにCallByNameっていうevalっぽいものじゃなくて Sub hoge(callback as Method) callback() End Sub hoge(AddressOf(foonction)) みたいに出来るもんだと思っててさ。まあ、セキュリティ的に直接関数ポインタを実行出来ない方が正しいと思うけど。 しかし、このIDE使いにくいな… &HFFFF& <-コレはいい、 &HFFFFF& <-勝手に&外される &H0FFFF <-勝手に0を消される
765 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 20:09:16.34 ] 勝手に&が消されるのは指定しなくてもLong型で認識されるからじゃねの
766 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 20:16:14.63 ] CallByNameで諦メロン
767 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 20:33:37.14 ] (インスタンスとか意識して作ったことないから俺には話の内容が高度すぎて)何言ってるかさっぱりわからん
768 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 20:36:46.71 ] ちげーよw
769 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 21:10:33.06 ] VBはじめたいのですがもうVB6.0は手に入らないのでしょうか? VB6用の本を買ったのですがVB2010というのでもいけますかね?
770 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 21:12:46.13 ] VB6とVB2010では全然違うから VB6のやり方ではVB2010では何もできない VB2010のやり方ではVB6では何もできない
771 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 21:12:58.41 ] >>769 6.0と2010は全く違うものです それに6.0は今から覚えるには古すぎるのでお勧めしない
772 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 21:14:34.67 ] 数年前はMSDNのイロイロ入りの奴で手に入れるのが通説だったんだが 今はどうなのかねえ。
773 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 21:15:44.89 ] >>770 >>771 そうなんですか・・・2010用の学習書を買い直しますありがとうございました
774 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 21:21:16.77 ] >>769 VB2010はVB6とは全く別物。.netベースになってる。 VC++2010みたいにWin32も開発できるなんてことは”ない”。完全に.net専用。 つか、新しく始めるならなぜにVB6とか苦行するしw .netでもかまわないならC#とかおすすめよ。C#の方が新機能とかの追加が早いし。 研究とかで.netが使えないなら、C/C++あたりが無難。誰でも使えるしな。 RADツールがほしいならDelphi3〜7という手も悪くない。マイナーだが、プログラム経験があれば1週間もあれば誰でもかけるようになるだろう。 過去の遺産の引き継ぎとか、明確にVB6でなければならない限り、VB6を使う理由もないし、使うべきじゃない。 入手先の前にまず再考を。 別にその本をどぶに捨てたところで全然惜しくないしな。
775 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 21:31:06.68 ] >>774 Cはある程度できるんでC++にしようかなと思います。 ただ簡単なソフトを作ったりするのにはVBが一番簡単かな?と思ったんです
776 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 21:32:18.67 ] ディスコンになって10年経過してる商品について>>769 はさすがにネタ投入(ただし全然面白くないが) としか思えんけど。 逆にネタじゃないなら相当頭がどうかしてる。 こんなところに書き込んでるわけだから、最低限webにアクセスできる環境にはあるんじゃないの?
777 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 21:36:23.30 ] たとえそうだとしてもそのレスをする必要はないような
778 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 21:38:39.02 ] いつもイライラしてるIT土方が来たようだな^^
779 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 21:39:04.41 ] いつまでもVB6なんて使ってる化石をからかっただけですけどね
780 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 21:41:04.82 ] やべえ、真性のアスペかよこいつw どこに「いつまでもVB6なんて使ってる」なんて書いてあるんだw
781 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 21:41:39.00 ] おい、つまらんレスはするなバカども
782 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 21:42:54.61 ] >>781 じゃああなたが面白いレスの手本見せて下さいよ〜
783 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 05:39:23.55 ] 簡単なもの作るだけならExcelでも使っとけ つかVBマクロて人気なんだな OpenOfficeに最も望まれてる追加機能がVBA対応とか これじゃVB無くならんわ
784 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 16:03:38.31 ] >>783 Excelっていう土台と、初心者と本格的プログラミングの中間にある 開発環境が他にないからね。 Accessまでいっちゃうと、本格的プログラミング寄りで、何より、データベース って土台は初心者にキツイ。 ということなのだろう。 ただ、そろそろVBAは、言語体系を.NETに近づけたほうがいいとは思う。
785 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 16:14:13.29 ] Excelとかのマクロ言語はVBAやめてJavascript系にしちゃえばいいのに
786 名前:デフォルトの名無しさん [2011/12/11(日) 16:34:15.51 ] 学校のVisual Basic 6.0で線形探索とファイル処理を使ったプログラムを作る課題がでました。 Excelでデータを作って対応させるのように指示を受けました。 私は商品名を入力し、実行するとその商品の画像を表示するようにしたいのですが、 この場合、Excelのデータ作成はどのように行えばいいですか?
787 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 16:44:32.25 ] 商品名と画像ファイル名だけじゃないの?
788 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 17:39:35.98 ] 学校ってまだVB6使ってるの?
789 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 17:41:41.90 ] >>784 近づけるというか、いっそうVBAとCOMを取り除いて、.netベースにしてしまって VBAの代わりにVB.NET(移植向け)、C#(新参/初心者向け)を使えるようにすればいいんじゃね? ExcelやAccessでlinqが使えれば、業務系の人にもうけが良いだろうし。(むしろにて異なるものでキモがられるかね?) >>785 .netって基盤を作ってきたMSだから、今更Javascriptはないと思う。 OOoはVBAとか誰得なものをつけるより、Javascriptでマクロを組めた方が遙かに現実敵だとは思うが。 Google Docsの方はJavascriptだけども、サーバサイドで動くので使いにくいね。
790 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 17:43:13.57 ] >>786 研究室の過去のプログラムの更新にやむなくってのは分かるが 学校で今更VB6を教えてるって、その学校かなりヤバくね? 中学校の部活か何かでVBAでプログラミング体験とかなら分からんでもないが。課題もそのレベルだし。
791 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 17:48:42.38 ] 情報系じゃないが、若いセンセが嘆いてた 教える老人のノート、数十年前のものいまだに使ってるって
792 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 02:34:55.91 ] ワイは日本人やが聞いた情報によると、もうじき中国はバブルがはじけて昔の貧乏な元の中国に戻るらしいで みんなも知っての通りもう経済は破綻してて、取り戻すのは無理なんだそうや その世界ではごっつい有名な政府関係者筋から聞いた確かな情報やで まあお前らほどの頭の良い連中には、今さらなくらいのネタやな、失礼なくらいかもしれん お前らからすればもう常識的なくらいの知識やろ?
793 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 10:26:11.26 ] Windows7で「Microsoft Shell Controls And Automation」を参照設定してexeファイルを作り、XPのパソコンで実行すると、 実行時エラー430(クラスはオートメーションまたは予測したインターフェースをサポートしていません。)が発生しました。 shell32.dllのバージョンが原因なのでしょうか? Dim oShell As New Shell Dim oFolder As Folder2 Set oFolder = oShell.BrowseForFolder(0, "選択してください。", 1) If oFolder Is Nothing Then Exit Sub ElseIf oFolder.Title = "デスクトップ" Then MsgBox "デスクトップは選択できません。", vbOKOnly + vbCritical Set oFolder = Nothing End If If Not (oFolder Is Nothing) Then txtFolder.Text = oFolder.Items.Item.path pFileDir(lstFile.ListIndex + 1) = txtFolder.Text End If Set oFolder = Nothing
794 名前:デフォルトの名無しさん [2011/12/12(月) 15:51:10.15 ] VB初心者なのですが、 xlsmファイルって読み取ることができますか? 読み取れるようであれば例文教えていただけると ありがたいですm(_ _)m
795 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 15:52:47.84 ] Excelが入ってれば読めるよ
796 名前:デフォルトの名無しさん [2011/12/12(月) 15:58:29.53 ] >>795 Excelも入れていて読み込めるはずなのですが xlsmfile = New FileIO.TextFieldParser("ファイル名.xlsm", System.Text.Encoding.GetEncoding("Shift_JIS")) xlsmfile.TextFieldType = FileIO.FieldType.Delimited xlsmfile.SetDelimiters(",") この文では読みこめないのでしょうか?
797 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 16:09:00.17 ] >>796 createobjectして読み込むんだよ
798 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 16:23:43.16 ] >>796 ひょっとして.net+VSTO?VSTOは実は単なるCOMラッパーだったりするから微妙だけど。 そもそも、Microsoft.VisualBasic.FileIO.TextFieldParserって、zipしてある奴も読めるのか? MSDNをさっと目を通すと、CSV/TSVとかのテキストファイル前提っぽいが。 >.GetEncoding("Shift_JIS")) あれ?普通、xlsx/xlsmの中身のエンコードってUTF-8とかUnicode系じゃねーの? あと念のために聞くけど、PC初心者?まるで分かってないオーラが漂いまくってるけど。 ついでに、VSTOはそんな便利じゃないよ。イテレートもろくに使えないし。
799 名前:デフォルトの名無しさん [2011/12/12(月) 16:27:08.33 ] >>797 試してみたんですができませんでした。 createobject の使い方教えてくれませんか?
800 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 16:41:55.33 ] そういえばExcel2007以降とか見たこと無かった。
801 名前:デフォルトの名無しさん [2011/12/12(月) 17:01:08.62 ] >>798 テキストファイルを読むことを前提にしているので大丈夫です。 >あれ?普通、xlsx/xlsmの中身のエンコードってUTF-8とか Unicode系じゃねーの? 調べてみます。 PC初心者です。 これから勉強していきたいのでよろしくお願いします。
802 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 17:01:50.87 ] >>794 読めます。 中身はZIP形式で圧縮されたテキストファイルです。 試しに拡張子をzipに変更した後、開いて、中のファイルをメモ帳ででも開けばよい。
803 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 17:02:57.81 ] >>799 どう試してみたの?
804 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 17:06:09.39 ] >>799 ググった? あと、ここはVB6スレなんだが間違いはないか?
805 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 02:14:57.18 ] >>796 のコードはVB6のコードには見えないな。文法が違う
806 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 08:17:11.38 ] 細かいこと気にスンナよ
807 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 12:45:11.56 ] >>801 ここID出ないから、名前欄に1個前のレス番を毎回入れるか 最初にレスしたレス番を入れるとかしてくれないと誰か分かりづらい。 絞り込みして見る事もできね。 Googleで VB6 XML 読み込み をキーワードに検索して結果の1件目。 t-yoshi-tomi.at.webry.info/200905/article_2.html >Dim XmlDoc As DOMDocument 'xmlデータ用変数 >Set XmlDoc = CreateObject("Microsoft.XMLDom")
808 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 22:12:37.25 ] >>806 言語が全く違うんだから気にスンナレベルじゃねーだろw >>807 VB6ならExcel COMから読み出せば良いんじゃね? VB.NETなら、どこかのZIPライブラリ使って中のxmlをlinqで列挙するのがお手軽かと思うけど
809 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 02:49:46.98 ] すげー初歩的、ランゲージリファレンス嫁ってレベルだと思うんだが イベントについてさっぱりなので教えてくれ。 eventキーワードでのイベントの定義については分かった RaiseEventでのイベントの発生も分かる だけど、実際にメソッドを結びつける方法が分からん まるでわかめ。 privatepaste.com/3e1d507e11
810 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 03:29:20.92 ] イヴェントの使い方 'Class1.cls Public Event EventDaYo() Public Sub Hoge() RaiseEvent EventDaYo End Sub 'Form1.frm Private WithEvents c1 As Class1 Private Sub Form_Load() Set c1 = New Class1 End Sub Private Sub Command1_Click() Call c1.Hoge End Sub Private Sub c1_EventDaYo() MsgBox "EventDaYo" End Sub
811 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 03:46:13.88 ] >>810 キモの部分は Private WithEvents c1 As Class1 Private Sub c1_EventDaYo() これ? でもコレって、ClassAの中にあるCoClassBのイベントにはどう対処するんだ? ClassA: Public Property Get CoClassB(index as integer) as CoClassB CoClassB: Public Event CoClassScream() ってあった場合… ClassAが内包しているクラスのイベントをリレーしないとだめ? というか単純に配列の中にオブジェクト入れてた場合はどうなるの?
812 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 04:51:35.30 ] WithEvents 発生したイベントをキャッチするための入れ子を宣言する (配列にできない、Newで宣言できない、Moduleでは宣言できない) WithEventsを宣言したForm(またはClass)内でしかそのイベントをキャッチできない
813 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 04:55:05.51 ] >>810 Class1で宣言したイヴェントはClass1内からのみ発生させられる Class1のインスタンスから発生したイヴェントをキャッチするには WithEventsでClass1のイヴェントをキャッチする入れ子を宣言し それにあらかじめインスタンスをつっこめばそのインスタンスから発生したイヴェントをキャッチできるようになる が入れ子に設定されたインスタンスからのイヴェントしかキャッチできない
814 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 04:57:03.36 ] >>812 (配列にできない、Newで宣言できない、Moduleでは宣言できない) ↓訂正 (配列にできない、Newで宣言できない、標準Moduleでは宣言できない)
815 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 05:05:48.74 ] 内包リレーってこんな感じか? 'Class1.cls Public Event EventDaYo() Private WithEvents c2 As Class2 Public Sub c2_EventKaYo() RaiseEvent EventDaYo End Sub Private Sub SetC2(c As Class2) Set c2 = c End Sub 'Class2.cls Public Event EventKaYo() Public Sub HogeHoge() RaiseEvent EventKaYo End Sub 'Form1.frm Private WithEvents c1 As Class1 Dim c2 As Class2 Private Sub Form_Load() Set c1 = New Class1 Set c2 = New Class2 c1.SetC2 c2 End Sub Private Sub Command1_Click() Call c2.HogeHoge End Sub Private Sub c1_EventDaYo() MsgBox "EventDaYo" End Sub
816 名前:デフォルトの名無しさん [2011/12/14(水) 05:09:59.08 ] VB6 イベントを作る - RaiseEvent, WithEventsなど homepage1.nifty.com/rucio/main/shokyu/jugyou29.htm
817 名前:デフォルトの名無しさん [2011/12/14(水) 05:20:06.22 ] 質問者は質問をわかりやすく明確に 回答者は回答をわかりやすく明確に カオスな流れになってるぞ
818 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 05:25:49.38 ] イヴェントをキャッチしたいForm(またはClass)内でWithEvents入れ子を作れ Class1内のClass2インスタンスのイヴェントを そのClass1のインスタンス内でキャッチしたけりゃClass1内にWithEventsを書いてそのClass2のインスタンスへの参照入れろ Class1以外、たとえばForm1でClass1内のClass2のイヴェントをキャッチしたけりゃ Form1内にClass2のWithEvents書いてClass1内のClass2のインスタンスの参照を渡すか Class1内でClass2のイヴェントをキャッチしてClass1でイヴェントをキャッチしたってイヴェント発生させろ
819 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 05:36:14.32 ] 質問者と回答者の会話が噛み合ってないな
820 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 08:25:05.62 ] イベントは別のクラスに書くんだよ
821 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 11:32:10.37 ] ヴェとか書くからなんかごちゃごちゃした文章に見える
822 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 11:36:56.97 ] これが参考になる oshiete.goo.ne.jp/qa/504573.html
823 名前:デフォルトの名無しさん [2011/12/14(水) 16:28:56.24 ] VBのアプリで、USBメモリにテキストファイルを書きだした後 タスクバーから取り出しを実行すると定番の 「デバイス'汎用ボリューム'を今停止できません。」 の表記が出て、アプリを終了するまで停止できません。 一応調べましてFileSystemObjectを使い、ファイル保存の際に使用していた dirからFolderExistsに変更ましたが、"アプリ起動後"にUSBメモリを挿すと 想定通りUSBメモリの取り外しが行えるものの"アプリ起動前"から USBメモリが刺さっていると上記のエラーが出て取り出しができないのです。 更に調べて、上記に加えて最後にchdir("C)でローカルドライブに変更してやると アプリ起動前にUSBメモリを挿していても、問題なく取り外しが行えるように なったもののどうもしっくりきません。 どなたかこの状況から原因をエスパーできる方はおりませんか?
824 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 16:46:33.22 ] ローカルに書き出してからUSBにコピーするのがいいよ
825 名前:デフォルトの名無しさん mailto:sage [2011/12/15(木) 13:30:43.68 ] □投稿者/ サテア 一般人(1回)-(2011/12/15(Thu) 10:25:45) 環境/言語:[windows7/visual basic6.0/?] 分類:[VB6以前] 4つのテキストボックスに入力した数字をソートしてラベルに小さい順に表示するプログラムを作成するノルマを与えられています。 しかしvisual basic6.0だとあまりい良い文献がなく、ほとんど参考になりません。 ちなみに自分はオブジェクトを配置するくらいの技能までは持っています。そこから先がすすめません。 何だよそのノルマと技能はwww
826 名前:デフォルトの名無しさん mailto:sage [2011/12/15(木) 13:34:58.64 ] リストボックスに入れてソートさせるのがVBっぽい
827 名前:デフォルトの名無しさん [2011/12/18(日) 12:22:19.04 ] >>823 大きな問題として Dir関数って、フォルダを参照した後で内部的に終了処理がなされてないよね Loopでファイルの列挙ができるようになってる都合上、参照し続けてしまう 前の方のレスにも書いたけど Dir ""とすれば開放できるとするサイトがあるけど、それでもカレントフォルダを参照してしまう で、話は戻るけど やっぱりDir関数を修正した以外の場所で使ってるんじゃないの? またはchdirかも知れないけど、 最後にchdirでUSBメモリ以外を参照すれば抜けるっていうのは、その証拠でしょ
828 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 16:25:51.45 ] >>825 初心者に対する非常に良い問題なのだが、VB6っていう環境が 初心者の学習に向いてない。 投稿者は明らかに初心者なのだが、こういう掲示板で どういう言葉遣いで質問するかわからないから変な用語使うハメに。
829 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 19:37:06.04 ] 単純にソートアルゴリズムの勉強させられてんじゃないの 自分も新人の時に最初の課題として出されたよ 実際自前でソートする事なんかほぼ無いが あの時色々と調べて得た知識は今も生きている
830 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 19:47:27.78 ] そっとしといてやれよ
831 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 22:16:07.93 ] 実はわざわざVB6でやらせて苦行を強いる上司のパワハラ
832 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 09:47:21.79 ] >>827-832 ここはVB6のスレなんだ。 VB6は古いとか.NETやれとか言ってるやつはスレち。 答える気がないなら来るな。 って書こうと思ったら、ここへの質問じゃないのか。 まあいいや。 VB6のスレなんだからVB6かわいがってやってくれ。
833 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 18:38:55.79 ] VBでメモ帳を作成しろと言われた 誰かサンプルソースZIPでくれエロい人
834 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 18:47:11.67 ] >>833 誰に言われたんだ
835 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 19:16:57.89 ] >>832 >>825 はな…どっかの掲示板の転載やで… 答えは求めてないだろ。 (かといってヲチする板でもないがな)