VBプログラマ質問スレ(6.0以前) Part50
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2006/10/22(日) 20:39:53質問者は使用している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
http://www.google.co.jp/
※「まず自分で調べる」クセを身につけよう。
0449デフォルトの名無しさん
2006/11/28(火) 09:45:21vb.netさんでは宣言時に規定の初期値に初期化されます
やりたきゃやってみろ
0450デフォルトの名無しさん
2006/11/28(火) 09:49:47キミ、学校でも頭悪いとか、「○○って話が通じネーよな」とか良く
言われるでしょ?言われるでしょ?
0451デフォルトの名無しさん
2006/11/28(火) 09:51:04値型と参照型では違う。
参照型は初期化しないと、ぬるぽりますよ
0452デフォルトの名無しさん
2006/11/28(火) 13:56:35お前自身の事か?
0453デフォルトの名無しさん
2006/11/28(火) 18:57:12VB6.0でも、ユーザーコントロールを使えばクラスの継承が実現しない?!
空っぽのユーザーコントロールにメソッド書いて、継承時はそれを同じように
空っぽのユーザーコントロールに貼り付け。
画面やクラスでそのユーザーコントロールを動的に生成して、メソッドだけを呼べば
クラスの継承が実現してない??
0454デフォルトの名無しさん
2006/11/28(火) 19:22:46すくなくともそれじゃあね。
VBには目に見えないFormクラスがあって、全てのフォームはそれを継承していると
みなせる、って話ならわかるけど。
まあ当たり前だけどVB6でも継承そのものは可能なんだよね。
ただ言語レベルでサポートしてないだけで。
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpdnprogvbnet/htm/chapter5.asp
0455デフォルトの名無しさん
2006/11/28(火) 20:23:28フォームの継承は、理屈はそうだけど、自分のメソッドも何もできない
からね〜
委任による継承かぁ〜・・・
実際は継承しているわけではなくて、継承チックに見えるように
ベースのクラスを呼んでいるんだよね
でも�d�d。
Implementsによるインターフェースの実装は知っていたけど、継承できない時点で
あんまり役にたたないよね。強いて使うなら、雛形として、このメソッドを使いなさい、かな〜
0456デフォルトの名無しさん
2006/11/28(火) 21:08:430457デフォルトの名無しさん
2006/11/28(火) 21:47:360458デフォルトの名無しさん
2006/11/28(火) 21:54:10んなこと聞いてないし(^ω^)
0459デフォルトの名無しさん
2006/11/28(火) 21:57:21そう、つっかかるな。
オレもVBが好きだ。
ただ、お前ほどのヤシなら、たとえばフォームで継承が
できたら、便利だって事がわかるだろ?
ただ、それだけの事だよ。
継承できなくても、VBは本当にRAD開発では最高の
言語だよ。
0460デフォルトの名無しさん
2006/11/29(水) 12:50:23( ^ω^) ・・・。
0461デフォルトの名無しさん
2006/11/29(水) 13:06:550462デフォルトの名無しさん
2006/11/30(木) 00:14:36> 言語だよ。
そんな餌にクマー(AA略
0463デフォルトの名無しさん
2006/11/30(木) 17:49:08メソッドはありますか??
0464436
2006/11/30(木) 19:52:09Shared、Staticのようなものはありますか?
0465デフォルトの名無しさん
2006/11/30(木) 20:18:34さようなら
0466デフォルトの名無しさん
2006/12/01(金) 06:49:29個々に関数を呼び出せるDLLを作成するには、
どうすればいいのでしょうか?
0468466
2006/12/01(金) 08:01:130469デフォルトの名無しさん
2006/12/01(金) 08:20:280470466
2006/12/01(金) 08:27:200471酔いちくれ ◆J0rwikii8c
2006/12/01(金) 09:01:54だめなのかという疑問。
0472466
2006/12/01(金) 09:13:19クラスを使えない言語からも参照できないといけないのです。
なので、Declare Functionで呼び出せればと思ってました。
0473酔いちくれ ◆J0rwikii8c
2006/12/01(金) 09:28:05いいからかもね〜。
だって、圧倒的に遠回りで遅いから。まあ、仕方ない。
0474466
2006/12/01(金) 09:38:01とりあえずVbでクラスを作って、
それを呼ぶためのDLLをVCかDelphiで作ります。
かなり面倒ですけど、VB側の処理は変更できないので、
この方法でやってみます(`・ω・´)
0475デフォルトの名無しさん
2006/12/01(金) 10:40:21サブクラス化してWndProcでWM_POWERBROADCASTを拾うことはできました
CならこのあとReturnでBROADCAST_QUERY_DENYを返せば良いだけですが
VB6ってどのようにしたら良いのでしょうか
.Netでの方法ならたくさん見つかったのですが・・・
0476デフォルトの名無しさん
2006/12/01(金) 11:02:25>>442
>TextBox2にFocusが遷移しません
わかった、これってGUIの組み方でいつも問題になるところだよね
これって言語によらない共通の問題かなと(>>443さんの指摘は意味はあるかと)
結局、キー入力による「Enter」だけでなく、
マウスでほかのコントロールに移ろうとしてときにも
強制的にTextBox2にfocusしたいってことだよね
確かにVaridateイベントにそれを書いて>>444の対策してもうまくいかないんだよね
そうなると、ちょっと無理気味だが、今TextBox1で編集した直後だよってフラグを
モジュールレベル変数で立てておいて、別の任意のコントロールをクリックしてしまって
そこにFocusが移っても、そこから対策するしかないんではないかと思う
あるいは、次の入力部を強制するためには、次のコントロール以外は
Focus可能なものは表示しておかないようにしておくとかしないといけないわけで
それであれば、結局昔のDOS時代のキーボードオンリーの入力使用に近い
形にするしかないかと
以前にやったことのある対策は、そのGotFocusイベント・プロシージャでそれを参照して
フラグの値に応じて強制的にFocusを飛ばすプロシージャをコールするようなもので
一応はうまく動きはしまたが、注意点はあとでバージョンアップとかしてコントロール
が増えたときにそこも修正追加が必要なことかな
0477475
2006/12/01(金) 11:14:50Elseで条件以外はWndProc = CallWindowProcして
でEnd Functionしたらいけたっぽいんですが
これでいいのでしょうか?w
0478デフォルトの名無しさん
2006/12/01(金) 11:16:42SysInfoコントロールのPowerQuerySuspendじゃ駄目か?
0479酔いちくれ ◆J0rwikii8c
2006/12/01(金) 11:18:15Cでつくった自作の関数呼べばよくね?
>>476
べたなフォーカス遷移として、コントロールのEnabledを
一時的にFalseにして、勝手に次のtabIndexにフォーカス
を移したりする。
コントロールを送って、移したいオブジェクトまでフォーカスを移す。
関数名はせっとふぉーかすでらっくすでおk
0480デフォルトの名無しさん
2006/12/01(金) 11:49:01>コントロールのEnabledを一時的にFalseにして
>勝手に次のtabIndexにフォーカスを移したりする
Enterキーだけで送るときとかにはそういう機能もあったんですね
やってみました
この>>442でのやっかいな問題は、フォーム上の他のコントロールがEnabled=True
状態で存在しているときに、そこにマウスでヒットされると、Validateイベントでは
対応できないということかと思いまして(実際にやってみましたがうまくいきません)
それで>>476かと考えました次第でした
0481デフォルトの名無しさん
2006/12/01(金) 12:49:03拾えたのなら、Cと同じ事するだけでしょ。
つーか、どうやって拾ったんだ?
0482デフォルトの名無しさん
2006/12/01(金) 14:50:29Sendkey でTABキー送りなよォ
ぐひひ
0483デフォルトの名無しさん
2006/12/01(金) 15:38:33vb6のリンカかコンパイルオプションで出力できる
0484デフォルトの名無しさん
2006/12/01(金) 15:39:34モジュールに書くしかないんでね?
さも無きゃ一つのインスタンスを特別扱いするとか
0485デフォルトの名無しさん
2006/12/01(金) 15:40:24vb6は内部でcomのdispatchインタフェイス使ってるので、
明示的に相手の参照はもってません
諦めろ。
0487デフォルトの名無しさん
2006/12/02(土) 00:17:54チャートの折れ線グラフにマウスを当てると
その箇所の値(X軸、Y軸)がテキストボックスに
セットされる。
雰囲気的には株のリアルタイムチャートっぽいものを
実現したいのですが、これが可能なActiveX等を
ご存じでしたら教えてください。
チャート上のマウスのMOVEイベントでその位置の
値が拾えれば良いのですが、Microsoft Chartとかは
不可能でした。
0488デフォルトの名無しさん
2006/12/02(土) 00:29:41Formなりグラフィックメソッドとマウスイベントがあるコントロールなら
普通に何でもいいのではないかと
0489デフォルトの名無しさん
2006/12/02(土) 17:07:17グレープシティの製品にそんなのなかったっけ?
0490デフォルトの名無しさん
2006/12/03(日) 00:16:14コマンドボタンを押すと、テキストエリアに文字が表示されるというシンプルなソースなんですが、
ローカルでHTMLを表示すると問題なく作動するのですが、サーバにUPするとコマンドボタンを
押しても何もおきません。
XPpro+VB6.0で作成してます。
理由がお分かりの方、教えて下さいm(__)m
0491デフォルトの名無しさん
2006/12/03(日) 00:45:06んんんんん、ぬおおおぉぉ〜〜〜ッッッ!!!!
超能力を駆使してみたんだが分からんかった。
スマンのぅ。
0492デフォルトの名無しさん
2006/12/03(日) 02:06:30Java実行中、VB処理はそこで一時停止したいと考えています。
しかし、shell関数は非同期であるため、VB処理の一時停止が出来ませんよね?
こういった場合、どのように対処すればよいのでしょうか?
0493デフォルトの名無しさん
2006/12/03(日) 02:08:40全然分からないので一般的なことしかいえないけど、
セキュリティとかそういうのはちゃんと設定してあるの?
何か参考資料を一つ手元においてやってみた?
0494デフォルトの名無しさん
2006/12/03(日) 02:14:13VBとWin32APIで行くなら
つ http://homepage1.nifty.com/MADIA/vb/API/VBDOUKI2.htm
ScriptingHost使っていいなら
つ http://www.roy.hi-ho.ne.jp/mutaguchi/wsh/refer/lesson9.htm
など
0495酔いちくれ ◆J0rwikii8c
2006/12/03(日) 09:43:05今日は朝から酔うちもうた
ぶーびーすくりぷとと、HTMLを使ってるということでAF?いや、FA?
よくわからんけど、HTMLに
<noscript><p>だめだこりゃ</p></noscript>
と書いて、表示されるようなら、だめなんだろうね
つーか、そーすをかいてみそ。酒のつまみをまってるぞ
0496490
2006/12/03(日) 09:52:21おはようございます。
ソースは下記のとおりです(VBによるDHTMLを試したかっただけなので)。
Private Function SubmitButton1_onclick() As Boolean
TextArea1.Value = "お前は既に" + _
Chr$(10) + Chr$(13) + "死んでいる"
End Function
よろしくお願いしますm(__)m
0497デフォルトの名無しさん
2006/12/03(日) 11:48:03<HTML>
<HEAD>
<TITLE>TEST</TITLE>
<SCRIPT LANGUAGE="VBScript">
Function Submit_onclick()
TEXTAREA1.Value = "お前は既に" + vbCrLf + "死んでいる"
End Function
</SCRIPT>
</HEAD>
<BODY>
<P>
<TEXTAREA id=TEXTAREA1 name=TEXTAREA1></TEXTAREA>
<INPUT id=submit1 type=submit value=Submit name=submit1 onClick="Submit_onclick()">
</P>
</BODY>
</HTML>
ここまでを test.htm で保存、サーバーにあげてIEで開くと動くぞ。
もしかしたらお前さんの思ってるDHTMLと違ってるかもしれないが一般的にはこれのこと。
0498酔いちくれ ◆J0rwikii8c
2006/12/03(日) 11:49:18う〜・・いい気分だ。
ビールが無くなったから、嫁に買いにいかせなくちゃ・・・
ぶーびーのアプリケーションはVBが実行できる環境じゃないと
だめなんだな
ちょっとオレも勘違いしてたよ。ダイナミックHTMLと思ってた。
ソースを見る限り、VBのデザイナでDHTMLを書いたんだよね
サーバーにぶーびーのランタイムがインストールされていないと
だめなんだよ
0499490
2006/12/03(日) 12:22:50鯖にVBのランタイムが入ってないと駄目なんですか○| ̄|_
勉強になりました。
ありがとうございましたm(__)m
0500デフォルトの名無しさん
2006/12/03(日) 12:53:03>>490 が結局何をしたかったかよくわからねぇ。
0501デフォルトの名無しさん
2006/12/03(日) 13:36:10>>494
即レスありがとうございました。
win32APIで行こうと思います。
0502酔いちくれ ◆J0rwikii8c
2006/12/03(日) 13:46:19おれも、最初は普通のHTMLにスクリプトを組み込んでいると
思ったんだよ。
で、スクリプトを外出しにでもして、パスが違うんじゃマイカと。
でも、>>496を見せてくれた瞬間ひらめいたね
VBのスタート→新しいプロジェクト→DHTMLアプリケーション
もう、すっかり酔いがさめた。ビールでも買いに行こう・・・。
0503デフォルトの名無しさん
2006/12/03(日) 14:02:180504デフォルトの名無しさん
2006/12/03(日) 20:45:47でどのくらいメモリ使用すます?
0505デフォルトの名無しさん
2006/12/03(日) 20:52:250506デフォルトの名無しさん
2006/12/03(日) 20:55:480507デフォルトの名無しさん
2006/12/03(日) 21:03:06でいいですか?
0508デフォルトの名無しさん
2006/12/03(日) 21:04:46>VBのスタート→新しいプロジェクト→DHTMLアプリケーション
あった、あった思い出した。これはサーバーにはIISやVBはいらないが、
ディストリビューションウイザードでCABファイルを作る必要がある。
クライアントがIE必須でVB製のActiveXをインストールしてしまう優れもの。署名なしでは使用できない。
JavaScriptやVBScriptのかわりにObjectタグのActiveXを使わせる仕掛け。
今のIEだと署名があっても警告でまくりでとても使えたものじゃない。
当時は警告無視すりゃ動いた気もするが、とても使えねぇと思って以降忘却のかなただった。
0509デフォルトの名無しさん
2006/12/03(日) 21:35:42MSDNをVisualBasic6に関して、”データ型の概要”で調べれ
0510デフォルトの名無しさん
2006/12/03(日) 21:43:18iに1秒足すには記述はどうすれば良いでしょうか?
0511デフォルトの名無しさん
2006/12/03(日) 21:44:260512デフォルトの名無しさん
2006/12/03(日) 21:45:40dim i as date
i=time
i=dateadd("s",1,i)
0513デフォルトの名無しさん
2006/12/04(月) 00:38:07ありがとう〜。
0514デフォルトの名無しさん
2006/12/04(月) 01:34:36iに1:16:18が入ったとして、
これの秒を00に書き換えたいのですが、記述はどのようにすれば良いでしょうか?
後々 i + #12:01:00 AM# > time の処理をするので、Formatを使うと都合悪いです。
1:16:00に1分たした物を、timeと比較するような感じです。
0515デフォルトの名無しさん
2006/12/04(月) 02:08:43> これの秒を00に書き換えたいのですが
dim i as date
i=timeserial(1,16,18)
i=getHourMinute(i)
function getHourMinute(byval d as date) as date
getHourMinute=timeserial(hour(d),minute(d),0)
end function
> 後々 i + #12:01:00 AM# > time の処理
まさかこのままじゃないよな?
double型の演算になるはずだから、精度が犠牲になるかも知れんぞ?
if datediff("s",i+#12:01:00 AM#,time)>0 then ...
か?
0516デフォルトの名無しさん
2006/12/04(月) 17:21:17SQLServer2k + VB6の組合せでアプリを書いてます。
ストアド内で、大雑把に次の処理を行っています
1) 元になるテーブルを集計してワーク作成
2) ワークを加工して、レコードセット返却
1) の処理が終った時点でワークが出来ていなければ、RETURN 0 として処理を
終了させ、2) の処理が正常終了したら RETURN @@ROWCOUNT として処理行数を
返しています。問題は、
・ワークが作成されず、RETURN 0で終った場合
→ EOFプロパティを参照するとカーソルが無いといわれてエラー
→ rdoParameters(0).Value は 0 が入っている
・レコードセット返却まで正常に行われた場合
→ EOFプロパティにはちゃんとTrue/Falseが入る
→ レコードセットを全部引き取るまで、rdoParameters(0).Value が Null
となってしまうんです。
ストアド終了時点でレコードセットが有るか無いかを判断する正当な方法を教えて下さい。
0517酔いちくれ ◆J0rwikii8c
2006/12/04(月) 19:42:01SQL-SERVERでストアド組んだこと無いから、
酔いちくれの独り言
おらくるなら、beginをネストして、Exceptionで処理をやらせる
じゃヴぁ糞やドトネトも似たような事する
return0のときに、カーソルにはselect "orz"とか入れたらww
誰か、頭のいい人に回答もらえるといいね〜
0518デフォルトの名無しさん
2006/12/04(月) 21:19:28できました。
ありがとー。
0519デフォルトの名無しさん
2006/12/04(月) 21:45:57「Visual Basic Editor 6」で、『Microsoft MonthView Control 6.0(SP4)』を使用したいのですが、
「ツール」→「その他のコントロール」内のリストに表示されません。
「その他のコントロール」内のリストに表示させるにはどうしたら良いでしょうか?
オフィス2000 プレミアムを所有しています。
宜しくお願いします。
0520デフォルトの名無しさん
2006/12/04(月) 22:40:410521デフォルトの名無しさん
2006/12/04(月) 22:49:18>>520さん、ありがとうございます。
コントロールはどうすれば入手できるのですか?
0522デフォルトの名無しさん
2006/12/04(月) 23:23:010523デフォルトの名無しさん
2006/12/04(月) 23:53:01この配列を初期化する方法を教えて下さい。
Doで回してブランクを入れるしか無いのでしょうか?
モジュール内で使用する配列なので、redimは不都合です。
0524デフォルトの名無しさん
2006/12/04(月) 23:58:52答え知ってても言う気にならない。
0525デフォルトの名無しさん
2006/12/04(月) 23:58:590526デフォルトの名無しさん
2006/12/05(火) 00:21:350527デフォルトの名無しさん
2006/12/05(火) 00:40:070528デフォルトの名無しさん
2006/12/05(火) 15:27:56する必要ないじゃん。
0529デフォルトの名無しさん
2006/12/07(木) 10:19:16戻り値がいる場合ってどのような場合なんでしょうか?
(下だとbが戻り値ですが)
またByRefなどは正しく宣言されていますでしょうか?
Function sora(ByRef a As Double, ByRef b As String) As String
If InStr(1, Replace(a, "-", ""), ".") = 4
If InStr(1, a, "-") Then
b = a
Else
b = " " & a
End If
end if
0530デフォルトの名無しさん
2006/12/07(木) 10:36:380531デフォルトの名無しさん
2006/12/07(木) 10:53:11・最初のif文にthenがない
・なぜ"."が4文字目になければならないのか(そういう処理なんだろうが・・・)
・string型に直接double型を代入しようとしている。
・最後だけインデントしている
これはdouble型の数字を文字列型に変換したいのか?
普通に
b=str(a)
じゃだめなのか?
Private Sub Command1_Click()
Dim a As Double
Dim b As String
a = 100.1
b = Str(a)
Command1.Caption = """" & b & """"
End Sub
0532デフォルトの名無しさん
2006/12/07(木) 11:37:37ウォッチウィンドウで独自クラスを見ると、クラス内のPrivate変数まで出てきます。
Private変数へのアクセスはプロパティを通して行っているので、
内容が重複して見えて大変邪魔です。
Private変数は表示しないようにすることはできるのでしょうか?
それとも、やり方がおかしいのですか?
0533デフォルトの名無しさん
2006/12/07(木) 11:40:12ウオッチを閉じて、全部見えないようにすれば気にならないよ
0534デフォルトの名無しさん
2006/12/07(木) 11:43:51private mstrTest as String
Public Property Get Test() As String
Test = mstrTest
End Property
としたときに、ウォッチでこのクラスを見ると
AAA--mstrTest
--Test
ってことだよね?
これは仕方ないんじゃないのかな。たしかに邪魔だけど
0535デフォルトの名無しさん
2006/12/07(木) 18:15:39InputManのテキストボックス(日付型)から
Enterキーで次のTabIndexに飛ばしたいんだけど、フォーカス動かない。
TabStopもTureにしてあるのだが…。
他にフォーカスが移動しない理由ってありますか?
0536デフォルトの名無しさん
2006/12/07(木) 18:16:590537デフォルトの名無しさん
2006/12/07(木) 18:19:310538デフォルトの名無しさん
2006/12/07(木) 18:35:30キー定義でNEXTFOCUSを{ENTER}にすればいいじゃん
0539デフォルトの名無しさん
2006/12/07(木) 18:54:03nextfocus = transferFocus?
0540デフォルトの名無しさん
2006/12/07(木) 19:19:41Case vbKeyReturn
SendKeys "{Tab}"
・
・
・
end select
↑でいけた。サンクス☆
0541デフォルトの名無しさん
2006/12/07(木) 19:20:45Case vbKeyReturn
SendKeys "{Tab}"
・
・
・
end select
↑でいけた。サンクス☆
0542デフォルトの名無しさん
2006/12/08(金) 08:42:450543デフォルトの名無しさん
2006/12/08(金) 10:45:21SPREADのAllowMultiBlocksをtrueにして、
単独セルの複数選択ができるようにはなったのですが、
プログラムで選択セルのインデックスを取得するには
どうしたらいいのでしょうか?
0544デフォルトの名無しさん
2006/12/08(金) 11:09:22textboxに入力した文字をファイル名として保存させる方法はどうするのでしょうか?
0545デフォルトの名無しさん
2006/12/08(金) 11:19:15> ファイル名として保存させる
初耳の表現だ
もっと詳しく
0546デフォルトの名無しさん
2006/12/08(金) 11:40:53textboxにa.txtと入力してCommandButtonを押すと
a.txtが作成されるというプログラムを作りたいのですが・・・
どうすればいいのでしょうか?
0547デフォルトの名無しさん
2006/12/08(金) 11:44:21その程度の事をいちいち質問していたらスレがいくつあっても足りないじゃないか
0548デフォルトの名無しさん
2006/12/08(金) 11:56:31処理してる内容はどれも同じなのですが・・・。
お願いします。
If InStr(1, Replace(b, "-", ""), ".") = 4 Then
If InStr(1, b, "-") Then
ログ左右桁揃え = b
Else
ログ左右桁揃え = " " & b
End If
ElseIf InStr(1, Replace(b, "-", ""), ".") = 3 Then
If InStr(1, b, "-") Then
ログ左右桁揃え = " " & b
Else
ログ左右桁揃え = " " & b
End If
ElseIf InStr(1, Replace(b, "-", ""), ".") = 2 Then
If InStr(1, b, "-") Then
ログ左右桁揃え = " " & b
Else
ログ左右桁揃え = " " & b
End If
End if
■ このスレッドは過去ログ倉庫に格納されています