トップページ⇒tech
1001コメント307KB

VBプログラマ質問スレ(6.0以前) Part51

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2007/01/28(日) 10:57:31
ここは Visual Basic 〜6.0 の質問スレです。
質問者は使用しているOS、VBのバージョン、サービスパックのバージョン、
「何がしたくて、どうしたけど、どう困っているのか」を明確に書きましょう。

VB.NETは別物なので専門スレで、VBA、APIの質問もそれぞれのスレで。

○ 質問者の心得
 一.質問する前にMSDNやGoogle、過去ログにも目を通してみる。
 二.VBScript、インストーラーなどはこのスレでOK。
 三.質問は第三者にもわかりやすいよう簡潔かつ具体的に。
 四.荒らしは相手しない。

○ 回答者の心得
 一.答えられない質問は無駄に罵倒せずスルー。無理するな。
 二.代用法を強制しない。
 三.回答する上で必須ではない情報をむやみに聞き返さない。
 四.荒らしは相手しない。
 五.VB情報募集中。
 六.回答は質問者が理解できるよう具体的に。

MSDN Online Japan ホーム
 http://www.microsoft.com/japan/msdn/default.asp
Visual Studio 6.0 Service Pack 6
 http://msdn.microsoft.com/vstudio/downloads/updates/sp/vs6/sp6/default.aspx
Google
 http://www.google.co.jp/

※「まず自分で調べる」クセを身につけよう。
0153デフォルトの名無しさん2007/02/16(金) 11:22:49
とあるデーターベースの中に100人の名前と住所が入っています。
その中から名前に”東”が付く人の名前だけを、
自動的にVBで作ったラベルに、アイウエオ順に入れていかなければなりません。
(ラベルは100個作ってあります)

どのような方法がありますか?
0154デフォルトの名無しさん2007/02/16(金) 12:21:43
宿題か?VB以前にロジックの問題だろ
0155デフォルトの名無しさん2007/02/16(金) 12:33:50
dim wstrsql as string
dim wrstwrk as Recordset

wstrsql = "SELECT * FROM MSTJUSYO WHERE NAME = '" & 東 & "'"
Set wrstwrk = gConnDB.OpenRecordset(wstrsql, dbOpenDynaset)

こんな感じでデーターベースにアクセスするんだと思います。
この続きが分からなくて・・・
お願いします。
0156デフォルトの名無しさん2007/02/16(金) 12:58:57
>>155

おまww
ttp://www.accessclub.jp/dao/index.html
コレでも見て来い
0157デフォルトの名無しさん2007/02/16(金) 13:28:11
>>156
ありがとう
すんげー助かりました
0158デフォルトの名無しさん2007/02/16(金) 13:28:14
Sub func()
Dim obj As Class
Set obj = New Class
If obj <> Null Then
Debug.Print "success!!!"
End If
End Sub
こんな感じのことがやりたいんだけど、Newに失敗したのはどうやって検出すればいいのでしょうか?
obj <> Nullのところでエラーが出ます。
0159デフォルトの名無しさん2007/02/16(金) 15:24:39
NULLじゃなくってNothingじゃねぇのか?wwwww
0160デフォルトの名無しさん2007/02/16(金) 16:37:58
>>159
サンクスコ
0161デフォルトの名無しさん2007/02/16(金) 18:26:37
VB6.0です。
オプションボタンをグラフィックにして使っているのですが、
ダイアログの大きさを変えたときに(最大、最小化含む)
ほんの少し、一番下の影の部分だけ再描画されていないのか、
黒い点などが表示されてしまいます。
デスクトップの壁紙が青かったりすると
青いスジが出たりします。
これを解決する方法はありませんでしょうか。

Resizeの最後でオプションボタンすべてをRefreshしましたがだめでした。
0162デフォルトの名無しさん2007/02/16(金) 18:36:18
>>161
他のハードウェア構成のPCでも同じ事が起こるかチェックしました?
0163デフォルトの名無しさん2007/02/16(金) 18:50:15
>162
していません。確認してみます。
01641612007/02/16(金) 19:32:09
なんだか良くわからないけど、解決しました・・・
一応、他のPCでも同じ状況は起こりました。
ちょっと前のバージョンではこの現象がみられなかったので
相違点を洗い出しながらチェックしました。

オプションボタンの位置をResizeで可変にしてあって、
オプションボタンのTopの計算をいじったら直りました・・・
なんでだろう・・・

とりあえずありがとうございました・・・
0165デフォルトの名無しさん2007/02/16(金) 23:42:45
フォームの読込や表示を制御する方法で、
Loadの逆はUnload、Visible = Trueの逆はVisible = Falseですが
ではShowの反対は何ですか
0166デフォルトの名無しさん2007/02/16(金) 23:59:15
なんか佐野量子の「動物にたとえると、何ですか?」を彷彿とさせるアホ質問だな
0167デフォルトの名無しさん2007/02/16(金) 23:59:34
かっこいい俺様が教えてやる
Hide
0168デフォルトの名無しさん2007/02/17(土) 00:00:04
素でヒデになった。
カッコワルス。
0169デフォルトの名無しさん2007/02/17(土) 00:06:22
罵倒するしか能のないアホ、カッコワルス。
0170デフォルトの名無しさん2007/02/17(土) 00:07:57
質問あれば書き込め。
俺様が見ている間なら即座に返答をやろう
0171デフォルトの名無しさん2007/02/17(土) 00:19:05
っていうか、だいたいフォームのメソッドなんて数が知れてるだろ。
MSDNライブラリで全部みても5分かからないよw
っていうか、メソッドのリスト見るだけでも語感で普通わかる。
0172デフォルトの名無しさん2007/02/17(土) 00:21:58
MSDNライブラリを全部見ようと思ってら数日はかかると思うが・・
0173デフォルトの名無しさん2007/02/17(土) 00:24:32
なんていうか、ダメな奴っていうのは本当なにやらせてもセンスなくてダメなんだね。
プログラミングどころか、日本語の読解能力ももとるなんて、他人ながら哀れだよ
>>172
0174デフォルトの名無しさん2007/02/17(土) 00:32:29
はいはい哀れ哀れ
ここに来る方は感性の優れたエリート達ですか?
あなたが他人に伝わるように書けばいいだけの話さ。
0175デフォルトの名無しさん2007/02/17(土) 00:35:54
VB厨専用スレだからね。
回答するのもVB厨、たかが知れてる。俺を除いてな。
0176デフォルトの名無しさん2007/02/17(土) 00:45:16
自演飽きてきた。
結局質問なしか
0177デフォルトの名無しさん2007/02/17(土) 11:58:51
http://r_akky.at.infoseek.co.jp/mental.html

このゲームにあるような制限時間のバーのようなものを作りたいんですが
分かる人いますか?

あとデジタルタイマーみたいな
20:00から段々減ってくようなタイマーの作り方も分かる人いたら
教えて下さい
01781772007/02/17(土) 11:59:43
すいませんVB6.0です
よろしくお願いします
0179デフォルトの名無しさん2007/02/17(土) 12:10:09
>>177
>制限時間のバー
プログレッシブバーでググれ

>20:00
タイマー貼って値を-1していく
20:00→19:59
19:59→19:57
…
19:00→18:59
となるようなロジックつくればおk
0180デフォルトの名無しさん2007/02/17(土) 12:20:46
VBの実行画面に文字をタイプしていけるような画面って
作れるの?
やり方分かる人いたら教えて
0181デフォルトの名無しさん2007/02/17(土) 12:22:25
>>180
KeyPreviewプロパティ
KeyPressイベント
01821802007/02/17(土) 12:26:40
ありがとう

画面を左右に分けて
左側にタイプさせたい文字を表示
右側にそれをタイプさせていき、打ち間違えがあったら
そこが検出できるようなものを作りたいんですが
そのようなものの作り方はわかりますか?
0183デフォルトの名無しさん2007/02/17(土) 12:31:47
それは自分で考えるしか。
コントロールの使い方がわからないとかなら説明するが
プログラミングの醍醐味であるコードを俺がかいてもしょうがないし。

ヒント?
テキストボックスに入力させて、入力時にChangeイベントを発生させるとか
KeyPressイベントで文字一致を確認させるとか
方法はたくさんある
01841802007/02/17(土) 12:37:23
ありがとう

試行錯誤しながら考えてみます
0185デフォルトの名無しさん2007/02/17(土) 13:13:15
>>173
>読解能力ももとるなんて
「おとる」のtypoなのか、「もとる」の誤用なのか
気になって夜も眠れません。
0186デフォルトの名無しさん2007/02/17(土) 13:15:01
読解能力も桃取るなんて
0187デフォルトの名無しさん2007/02/17(土) 14:39:46
もももすももももものうちすもももももももものうち
0188デフォルトの名無しさん2007/02/18(日) 17:03:31
こんにちは、質問があります。
VB6.0で3Dグラフを描画するのに適した
フリーのコンポーネントって何がありますか?

目的としては、縦100点×横100点前後の微妙にデコボコしている
矩形の素材を、立体的に表示し視覚的に認識することです。
MSChartだと綺麗に表示できなかったり、プロット数が多く
なると時間がかかってしまい困っています。

0189デフォルトの名無しさん2007/02/18(日) 17:18:17
VBのフリーのコンポーネントなんてまず見たことない
0190デフォルトの名無しさん2007/02/18(日) 20:12:57
コレクションに入れた値は変更できないけど
クラスごとAddするとクラス内の値は変更できる
なんで?
クラスのアドレスを参照してるから?
0191デフォルトの名無しさん2007/02/18(日) 20:29:47
日本語でオッケって書かれるぞw
01921802007/02/18(日) 20:42:12
色々調べたり考えたりしたんだけどプログレッシブバーの
作り方が全く分かりません・・・
どなたか作り方分かる人いませんか?

例えば残り30分からスタートしてゲージが段々減っていくような
感じのものを作りたいんですが
0193デフォルトの名無しさん2007/02/18(日) 21:58:16
>>190
値を変更出来ないのは、クラスの場合も一緒でしょ。
クラスを格納しても、コレクションにとっての値であるクラスそのものを
別のクラスに変更することは出来ず、ただ割り当てたキーでそのクラスを返すだけ。
そして返されたクラスは、クラスとして当たり前の操作が出来る。
グローバルなモジュールレベル変数やLetプロパティを用意していれば、
当たり前にその値の変更が出来る。ただそれだけのこと。
0194デフォルトの名無しさん2007/02/18(日) 22:22:10
>>190
>クラスのアドレスを参照してるから?
それで正解。
コレクションが保持してるのはクラスのインスタンスアドレスであって
メンバ変数の値を保持してる訳ではない。
だからAdd元のクラスのメンバ変数の値を変更すると
コレクションからとり出したクラスも同じアドレスを参照しているので
メンバ変数の値が変更されたように見える。
0195デフォルトの名無しさん2007/02/18(日) 23:31:29
>>192
そのゲームにあるような滑らかなゲージが欲しいなら
ピクチャーボックスを配置してLineメソッドでお絵かきしましょう
01961802007/02/18(日) 23:49:12
>>195
中のソースはどのようにすればいいんですか?
VB初めてまだ数日で基礎の基礎もよく分かってない
状態なんで、ホントすいません・・・
0197デフォルトの名無しさん2007/02/19(月) 00:01:07
ソースねだる奴はプログラムなんて組もうとするな
プログラマってのは、初心者であっても自分でコードを書く奴のことで
間違っても物乞いソース収集屋のことじゃないぞ
0198デフォルトの名無しさん2007/02/19(月) 00:08:02
>>196
初めにフォームとピクチャーボックスのScaleModeをピクセルにしておく
座標X=0、Y=0から座標X=10、Y=10を対角線とする長方形を黒で中身を塗りつぶして描く
Picture1.Line (0, 0)-(10, 10), vbBlack, BF
あとはMSDN見て頑張って
0199デフォルトの名無しさん2007/02/19(月) 00:19:58
っていうか、今からVB初めてどうすんのw
これから沈んでく泥舟なんだぞw
0200デフォルトの名無しさん2007/02/19(月) 00:42:47
視野が狭いな
0201デフォルトの名無しさん2007/02/19(月) 05:19:25
VBは泥船に間違いない
つうかいまさら6.0憶えてどーするんだよw
0202デフォルトの名無しさん2007/02/19(月) 09:05:28
泥船でもなんでもいいから、チラシの裏に留めとけ。
0203デフォルトの名無しさん2007/02/19(月) 09:11:02
ヒソヒソ (^ω^)(^ω^)(^ω^) だぉ
0204デフォルトの名無しさん2007/02/19(月) 09:12:32
>>201
m9(^Д^)プギャー
02051902007/02/19(月) 09:19:40
>>192,193
ありがとうございます。勉強になりました。
(質問の日本語が変でスイマセン。)
やはりコレクションでAddするのはクラスのアドレスだけで、
クラスメンバは別なんですね。
昔から気になってたので、一つ謎が解けました。ありがとう
0206デフォルトの名無しさん2007/02/19(月) 09:34:56
つ objptr()
0207デフォルトの名無しさん2007/02/19(月) 16:48:38
VB6.0 SP6 / WinXPです。

RichTextボックスに
 
 Call RichTextBox.OLEObjects.Add(, , App.Path & "\pic.bmp")

でビットマップを貼り付けると、裏でmspaint.exeが起動しちゃうんですけど、、、
mspaint.exeの起動を抑制する方法ってあります???
02081902007/02/19(月) 20:44:40
>>206
そんな便利なものが。
VB6にポインタの概念はないもんだと思ってました。。
0209デフォルトの名無しさん2007/02/19(月) 20:58:56
>>207
別のオブジェクト(IE)とかを貼り付けたらどうだろう?
うろ覚えですまん。
0210デフォルトの名無しさん2007/02/19(月) 21:03:02
AdressOf
ObjPtr
StrPtr
VarPtr
今時VB使うならこの辺は必須だろ
0211デフォルトの名無しさん2007/02/19(月) 21:09:43
いやそんなもん使ってまでコレクションの中身更新するぐらいなら
俺なら自分でそういうクラスを作るね。

内部実装がブラックボックスのVBでそんなもん怖くて使えるかよ。
これがまともなPGの感覚だと思うけど
0212デフォルトの名無しさん2007/02/19(月) 21:17:08
すみません。VB6のユーザに本名で登録してます。
どこかのサイトで「バイナリを開いたらユーザー名がわかる」っていうのを見た気がするんですが、
自分で開くとプロジェクト名やモジュールは見つかりましたが、ユーザー名はのってませんでした。
アプリ公開するなら、再インストールしてユーザー名変えてからのほうがいいですか?
ネイティブコンパイルなら大丈夫ですか・・?
0213デフォルトの名無しさん2007/02/19(月) 21:34:35
作者として実名を公開してる人も居るわけだし、別にそのままでも構わないじゃん。
0214デフォルトの名無しさん2007/02/19(月) 21:43:12
それはそうだけど、やっぱりHNみたいなので通してるので本名がのると辛いって言うか…
アプリがずっと後まで残ることを考えたら、やっぱり恥ずかしいのもありますし。
友人ならいいけど、知らないところで詩子の名前が調べられて広まったらやっぱり嫌なので。。。
0215デフォルトの名無しさん2007/02/19(月) 22:49:56
それはアプリがある程度有名になってから心配する話では
0216デフォルトの名無しさん2007/02/19(月) 23:04:22
どうせレジストリ読んでるだけだろ
と持ってないのにカキコ
0217デフォルトの名無しさん2007/02/20(火) 00:36:34
>>211
たしか昔は盛んに使ってたと思うんだが
とりあえず今時は資料が無くて怖いな

ちなみにVBの公開オブジェクトの内部実装はCOMです
0218デフォルトの名無しさん2007/02/20(火) 09:23:59
>>210
そんなの使うぐらいなら、VB使わない。w
0219デフォルトの名無しさん2007/02/20(火) 10:00:14
視野が狭いな
0220デフォルトの名無しさん2007/02/20(火) 10:55:00
どっちが?
VBに拘ることの視野の狭さ?使えるアンドキュメント関数を使わない視野の狭さ?
0221デフォルトの名無しさん2007/02/20(火) 14:07:49
>>220
たぶん2つしか挙げられないこと。
0222デフォルトの名無しさん2007/02/20(火) 14:16:56

( ̄ー ̄)ニヤリ
0223デフォルトの名無しさん2007/02/21(水) 03:28:06
前スレ801、自己解決。
Visual Basic 6.0のバグで、msvbvm60.dllの修正が出る。
0224デフォルトの名無しさん2007/02/21(水) 17:21:55
VBから参照設定の操作をしたいのですが、
タイプライブラリ名からGUIDを取得するにはどうすればいいでしょうか?
0225デフォルトの名無しさん2007/02/21(水) 19:45:23
こんなスレがあったんだな

6.0で質問なんだが、プログラム実行中にテキストを打ち込むとき
Enterを押して改行できるようにする方法ってあるのか?
multilineをTrueにすると文章が行の端まで打ったら
自動的に改行はできるんだが
0226デフォルトの名無しさん2007/02/21(水) 21:22:48
キーイベントでchr(10)追加するとか
0227デフォルトの名無しさん2007/02/21(水) 21:27:12
え?開業されないっけ?
0228デフォルトの名無しさん2007/02/21(水) 23:32:00
>multilineをTrue
ならエンターで改行されると思う。
KeyPressでなんかやってなければ。

Tabの話じゃないよな?


VB6のプロ・グラマーに質問なんだが
一定時間処理をとめたいときってタイマー使ってますか?
Sleepだと全体がとまるし、DoEventsループだと、CPU処理が99%になるから使わんほうがいいよな
(見た目だけだが)

やっぱタイマーしかないんだろうか
0229デフォルトの名無しさん2007/02/21(水) 23:44:06
処理止めるっていっても
普通止まったように見せてるだけだし。。。
実際に止めたらそりゃ返ってこないよ
0230デフォルトの名無しさん2007/02/21(水) 23:56:38
プロのグラマーではなく、プロのプログラマな漏れはお呼びでないと
0231デフォルトの名無しさん2007/02/22(木) 00:36:53
■clsA
  Public cB As clsB

■clsB
  Public cA As clsA

■modS
  Dim cA = new clsA
  Dim cB = new clsB

  set clsA.cB = cB
  set clsA.cB.cA = cA

  ↓

  cA.cB.cA.cB.cA.cB…


暇だし誰か共同でアプリ作ろうぜ
0232デフォルトの名無しさん2007/02/22(木) 00:44:00
そういや雑談スレないよな。

>>230
プロプログラマー?
0233デフォルトの名無しさん2007/02/22(木) 07:05:39
>>228
厨房乙
0234デフォルトの名無しさん2007/02/22(木) 09:13:18
質問します。
現在プログラム実行時に以下のエラーが発生して困っています。

エラー内容
実行時エラー'429'
ActiveXコンポーネントはオブジェクトを作成できません。

コード
Dim fso as New FileSystemObject
fso.FileExists("a.txt")      '←ここでエラー発生

環境
OS:Windows XP Professional SP2
Visual Studio 6.0 SP6

ぐぐったり、ランタイムの再インストールなどしてみましたが
解決できませんでした。解決方法になりそうなことなど、わかる
方いましたらお願いしますm(_ _)m
0235デフォルトの名無しさん2007/02/22(木) 09:53:57
>>234
つhttp://support.microsoft.com/kb/247979/
02362342007/02/22(木) 13:40:18
>>235
反応遅くてすみません。

ありがとうございます!解決しました!!
サポートオンラインも探してはいたんですけど
探し方が悪かったみたいです。助かりましたm(_ _)m
02372252007/02/22(木) 18:51:55
どうもありがとう、解決しました
もう一つ質問で、タイプ中にある時間が来たら
突然違う画面に変わるっていう構造になってるんだけど
その切り替わった瞬間に今まで打ち込んでた文章等が記録されて
実行を停止したあともそのタイプした内容を保存して確認すること
ができるような仕組みって作ることできる?
0238デフォルトの名無しさん2007/02/22(木) 20:47:53
テキストファイルに保存とか、。
rtf、xmlとかでもいいし、短文ならiniやレジストリに吐いても良いと思う
0239デフォルトの名無しさん2007/02/22(木) 23:24:34
右クリックしたときに出る特定のポップアップメニューをフックして項目を追加したいのですが、
どなたか方法ご存知な方いませんか?
これって拡張シェルになるのでしょうか…
0240デフォルトの名無しさん2007/02/22(木) 23:32:12
>>239
情報隠さないで、具体的に何の何処をどうしたいのか書こうよ
02412392007/02/23(金) 00:02:12
すいません。。

VBアプリを常駐しておいて、他のアプリでタイトルバーを右クリックしたときでるポップアップメニューに機能追加したいんです。
「このウインドウを指定の位置に移動」とか「ウインドウを印刷」を表示して、選択したイベントをVBアプリで処理させたい。

・他アプリのポップアップに無理やり項目を追加する
・追加した項目を選択したらVBにイベントを発生させ、その処理を実行
「VB ポップアップメニュー フック」などで検索してみたんですが、他のメニューに項目追加する方法がみつかりませんでした…

WinRARなどの圧縮アプリだと、ファイルを右クリックしたときに「圧縮する」などのメニューが表示されますが
これと同じことが出来たらいいなと思っています。

判りにくかったらごめんなさい。
このサイトが勉強になるなどでも良いので、わかる方がいたらぜひ。
0242デフォルトの名無しさん2007/02/23(金) 00:03:07
Win2k、VB6.0 SP6 でビルドし、ディストリビューションウィザードを使って、パッケージして、
別のマシン(WINXP SP1)に\Packageフォルダごとコピーして、\Package 下のsetup.exe で
インストールしよとすると、インストール途中でエラーが発生します。
どうすれば解決できるでしょうか?

インストール時のエラーメッセージは

"ファイルC:\WINDOWS\system32\DATAFORM.OCXの登録中にエラーが発生しました。"

です
0243デフォルトの名無しさん2007/02/23(金) 00:36:19
>>241
ファイルの右クリックメニューはレジストリ依存。君がやろうとしてる事とは全く別物。
「システムメニュー 拡張」とかでググってみろ。自身のシステムメニューを拡張する方法から
他のアプリのメニューを弄る方法まで、いろいろ解説やらサンプルやらが転がってる。
これで解らなければ君には無理って事だ。諦めろ。
02442392007/02/23(金) 00:39:40
>>243
たとえばWinRARとかブラウザのメニューなんかは、その時点でアプリが起動してるわけではないので
動き的に違うのはわかってたんですが、やりたいことのイメージとしてそれくらいしかわからなかったので…

ありがとうございます。これから検索して調べてみます。
0245デフォルトの名無しさん2007/02/23(金) 05:11:42
BrowseForFolderを用いたフォルダ選択ダイアログで、モーダルダイアログにする方法を
ご存じの方、いらっしゃいませんか?
今は、ボタンをクリックしたら、

Dim ShellApp As Object
Dim oFolder As Object

Set ShellApp = CreateObject("Shell.Application")
Set oFolder = ShellApp.BrowseForFolder(0, "フォルダを選択してください。", &H10&)

として、oFolder.items.Item.Path からフォルダのパスを得ています。
ボタンをEnableにしたままだと、何個も表示されるので困っています。

フラグ等を用いる方法も考えましたが、ダイアログがモーダルなのが一番よいと思いまして
書き込みました。

0246デフォルトの名無しさん2007/02/23(金) 07:44:46
>>245
Shell.ApplicationではなくWin32APIの方を使おうよ
0247デフォルトの名無しさん2007/02/23(金) 13:02:55
VB6+ACCESSでVB6のフォームのテキストボックスにIDを入力して
そのIDがあれば結果を表示して該当データがなければメッセージボックスを表示させるんですけど
SQL文を実行して成功したら表示or失敗したらメッセージボックスの部分がわかりません
0248デフォルトの名無しさん2007/02/23(金) 13:18:52
>>247
そうですか
0249デフォルトの名無しさん2007/02/23(金) 13:19:37
いや教えてくださいよ
0250デフォルトの名無しさん2007/02/23(金) 13:27:35
教えても、なんもいいことないし
0251デフォルトの名無しさん2007/02/23(金) 13:30:01
死ねよ糞人間が
0252デフォルトの名無しさん2007/02/23(金) 14:03:58
何がわからんかさっぱりわからん
それに件数0の場合とテーブルないときの失敗じゃ処理違うし
■ このスレッドは過去ログ倉庫に格納されています