(´-`).。oO(VB初心者質問スレ Part12)

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
前スレはこちら
  Part 1 http://piza.2ch.net/tech/kako/968/968328471.html
  Part 2 http://piza.2ch.net/tech/kako/990/990793224.html
  Part 3 http://piza2.2ch.net/tech/kako/1000/10005/1000523122.html
  Part 4 http://pc.2ch.net/tech/kako/1006/10069/1006922992.html
  Part 5 http://pc.2ch.net/tech/kako/1010/10106/1010624646.html
  Part 6 http://pc.2ch.net/tech/kako/1013/10138/1013844542.html
  Part 7 http://pc.2ch.net/tech/kako/1015/10158/1015836357.html
  Part 8 http://pc.2ch.net/tech/kako/1018/10187/1018794901.html
  Part 9 http://pc.2ch.net/tech/kako/1020/10208/1020830472.html
  Part10 http://pc.2ch.net/test/read.cgi/tech/1022127528/
  Part11 http://pc.2ch.net/test/read.cgi/tech/1024380249/

Win32 API関連スレ
  Win32API 質問箱 Build4
  http://pc.2ch.net/test/read.cgi/tech/1023361418/

心得
壱.質問する前に過去ログにも目を通してみる。
弐.質問する前に MSDN などで調べてみる。
参.VBScript もこのスレでOK。
四.インストーラーなどの質問もOK。
2デフォルトの名無しさん:02/07/14 19:33
http://pc.2ch.net/test/read.cgi/tech/1024380249/992-1000n
どなたかこの続きご教授願います・・・。
2ゲットにだー
>>2
Selectedプロパティでなったよ。
いまだに1のテンプレ変わらんの?ブビィ
>>4
ListBoxに5個登録して、

For i = 0 To lstItem.ListCount - 1
lstItem.Selected(i) = True
Next i

ってやってみましたが、なんか一番上のチェックしかつきませんでした。
>>6
全部できるけど?

Private Sub Command1_Click()
For i = 0 To List1.ListCount - 1
List1.Selected(i) = True
Next i
End Sub

Private Sub Form_Load()
List1.AddItem "0"
List1.AddItem "1"
List1.AddItem "2"
List1.AddItem "3"
End Sub
84:02/07/14 19:54
7ではない。

>>6
それでなったよ。なんか選択状態がちょっとおかしいみたいだけど。
OSとかサービスパックとかのせいかな?ちなみに俺はwin2000SP2、VB6SP5
>>7
それでやってもなりません。
えっと、一回コマンドボタンを押すと、
一番上が選択され(反転表示)、
チェックがつきます。
もう一度押すと、1番上が選択されたまま上から2番目も選択され、
2番目にチェックがつきます。
もう一度押すと、1番目、2番目が選択されたまま、更に3番目も選択され、
3番目にチェックがつきます。
5回押すとようやく全部チェックがつき、
すべてが選択された状態になります。
当然styleプロパティが1-チェックボックスになってるので、
マルチセレクトはできないはずなんですが、なぜかマルチセレクトされちゃってます。
えっと、Windows98se,VB6sp5です。
>>9
マルチセレクトっぽくは俺ん所もなる。実行後4と5行目が選択状態になってる。
選択状態がおかしいってのはそういうこと。
最後にlstItem.Refreshしたらどうなる?
うわ。
すんません。
Clickイベントの中でチェックされてる項目を調べてるコードがあったんですが、
それを外してみたらちゃんと動きました。
(MouseDownに引っ越し)
これが悪さしてたんですね・・。
アホですんません。
色々ありがとうございました。
13デフォルトの名無しさん:02/07/14 20:39
textに文字を入れさせ、if文によって、文字が9文字以下ならOK。
10文字以上ならダメって感じにしたいのですが、文字の量を判断するにはどうすればいいのでしょうか?
>>13
length
Lenだろ?
16デフォルトの名無しさん:02/07/14 20:48
VB厨は氏ね!
心配しなくともそのうち絶滅する
>>13
脊髄反射でここ来ないで少しはヘルプ読めよ
19初心:02/07/15 00:11
すいません。SQL文の話になるんですが、文字列の中にシングルコーテーションを含む
検索はシングルコーテーション2こ並べてクリアできますよね。でも%_を検索
したいときってどうすればいいですか?
マルチポストカコ(・∀・)イイ!
と思ったら誘導されてたのか
22初心:02/07/15 01:23
>>21 で教えてください・・・。
>>22
あちこちのスレで浮気しちゃ駄目よ。
みんなもう寝てるから、時間を開けてまた来たら?
24初心:02/07/15 01:30
>>23 hai-
25デフォルトの名無しさん:02/07/15 01:49
strName = "名無しさん"
とかしたときに、この変数のアドレスを取得できないでしょうか。Cみたいに。
関数のアドレスだとAddressOfみたいので取得できるみたいですけども・・・
先生助けて。
>>25
何のために取得したいのか知らんが隠し関数のStrPtrで取得できる
27前スレ952:02/07/15 10:10
http://pc.2ch.net/test/read.cgi/tech/1024380249/952 です。
引き続き宜しくお願いします。

958:即レス◆POP.SOKU:02/07/13 17:24
 >>952
 Explorerその他では見れるのか?

見れてます。
Explorerではちゃんとアクセスもできています。
>>27
とりあえずソース出したら?
29デフォルトの名無しさん:02/07/15 11:11
ListViewを詳細表示にして表の用に使ってるのですが、
ListView.ListItems(index).ListSubItems(key) = "書き換える文字"
という感じにリストビューの中身を書き換えると、
ListView全体に再描画がかかってチラつきます。
チラつかせないようにListViewを書き換えるにはどうしたらいいですか?
3027(前スレ952):02/07/15 11:30
>>28 出してみます。物凄く単純なんですけど。。。

Dir("パス", vbDirectory + vbHidden + vbSystem)
"パス"のところにはネットワーク上のフォルダのフルパスが入ってます。

Win98seで実行すると"."が返ってきます。
Win2000で実行するとエラーになってerr.Descriptionは「Bad file name or number」です。
WinNT で実行すると""(空文字列)が返ってきます。

2000・NTはいづれもadministrator権限ユーザーで実行しています。
対象フォルダはエクスプローラーではアクセスする事が出来ています。
31コギャル&中高生:02/07/15 11:46
http://book-i.net/derr/
コギャルとH出来るサイトはここ
ヌキヌキ部屋へ直行便

http://kado7.ug.to/wowo/
32デフォルトの名無しさん:02/07/15 16:11
あのう、VBでテキスト入力された値が小数以下(**.*とか)かどうかを
スマートに判定するにはどうしたらよいでしょか。
Midでピリオドを探すしかないのですかね?教えてください。
33デフォルトの名無しさん:02/07/15 16:16
>>30
それではソース出したとは言わんと思われ。
34デフォルトの名無しさん:02/07/15 16:19
MidよりはInStrのほうが
>>32
ヒント:小数を整数化したらどうなるか。それを使ってできないか。

わかるまで考えれ。パズルと同じだ。
>>34
それだったら25.0等と入力して期待を裏切ってやる。
>>32
valで数値化するのはダメ?
個人的には小数点がピリオドじゃない場合もあるから
ピリオドを使うのは好きじゃないんだよな。
39デフォルトの名無しさん:02/07/15 16:39
>>36 StrConv使うも〜ん
40デフォルトの名無しさん:02/07/15 16:47
>>35
せ、整数化…?(汗
少数点以下何桁かって整数何桁をlog使って出すように計算で求められんのかな?
42デフォルトの名無しさん:02/07/15 16:54
>>41
やって見れ、できるから。
但し最小桁以外は0にしないと…
小数以下つうのは,どういうこと?
小数点以下に意味のある数字が連なっているということ?
それとも1より小さいつうこと?
前者なら >>35
後者なら1と比較しれ
44デフォルトの名無しさん:02/07/15 16:58
「小数を整数化」という言い方が間違ってると思われ。
単に「整数化」する。
それと元の数値を比較すると・・・
って事じゃないの?>>35サン
45デフォルトの名無しさん:02/07/15 16:58
てか、束胃腸演算を知らないのか?
46デフォルトの名無しさん:02/07/15 17:03
キーフックをしたいんですけど、やりかたを教えてもらえませんか?
>>46
sethook
4832:02/07/15 17:03
すみません。言葉が足らない、というか間違ってました
入力値として受けたいのは整数で(金額や、数量など)
その項目に、25.5などといった少数以下を使用した不正な値が渡されたかを
チェックしたいのです。
ですが申し訳ないことに、>>35氏の整数化の意味がわかりません
すみません。すみません。
整数化した物を リアルに変えて 元の値と比較、ですよね?
>>49
そうよん。だからカーディナルな変数でやっちゃ駄目。
>>42
いや、最小桁以外が0の時はわかるんだが、そうじゃない場合。
5246:02/07/15 17:08
>>47
わからないです〜
53デフォルトの名無しさん:02/07/15 17:22
ComboBoxでリスト内容を選択したときに上がるイベントは
もしくは変更された事を検知する方法はどうすればいいの?

リストにあるデータを選択するだけではChange イベントが
発生しないようだし。
>>30
パスの部分は "\\サーバー\共有" の形ですか?
だとしたら、"\\サーバー\共有\" とするとうまくいくかも。
5527(前スレ952) :02/07/15 17:29
>>33 ん。こんなもんですよ。
   ホントはDirの戻り値を変数に入れてるくらいです。

この質問はもうダメっすかね?
レスもないし没という事にしておいてください。
続はどうにかしてみます。
ありがとう。
5627(前スレ952):02/07/15 17:34
>>54 諦めた直後にレスがっ!

現在は "\\サーバー\共有" の形です。
"\\サーバー\共有\" で試してみました。

WinNTでは値が戻りました!
おそらく2000もいける事でしょう。(現在2000マシン使用中でテストができません。)

ありがとう!ほんとにありがとう!
>>51
んなものいったん文字列処理かけるとか、negative処理かけるとか、なんとでもやりようはあるじゃん
58デフォルトの名無しさん:02/07/15 23:13
Winsockコントロールを使ってサーバー上にあるテキストを読み取りたいのですが、どうすればいいでしょう。
ローカルや、microsoft.comに接続して Get /index.html ってやったのは成功しました。
どうやら www.***.**.** みたいなページは出来るみたいです。
wwwでは無いページが駄目みたいです。具体的に言うと

ttp://members13.tsukaeru.net/nasumi/index.html みたいな感じのページがDLできません。どうやったらいいですか?
>>58
members13.tsukaeru.net
に接続しろ!
一応接続はしてる。

Private Sub Command1_Click()
If sckMain.State <> sckClosed Then
sckMain.Close
DoEvents
End If

sckMain.RemotePort = 80
sckMain.RemoteHost = "members13.tsukaeru.net"
sckMain.Connect
End Sub

Private Sub sckMain_Connect()
sckMain.SendData "GET /nasumi/index.html" & vbCrLf & vbCrLf
End Sub
Private Sub Command2_Click()
sckMain.Close
sckMain.LocalPort = 0
End
End Sub

Private Sub sckMain_DataArrival(ByVal bytesTotal As Long)
Dim strBuff As String
sckMain.GetData strBuff
txtHTML.Text = txtHTML.Text & strBuff & vbCrLf
End Sub
>>60
できたよ。
Option Explicit

Private Sub Command1_Click()
Winsock1.RemoteHost = "members13.tsukaeru.net"
Winsock1.RemotePort = 80
Winsock1.LocalPort = 0
Winsock1.Connect
End Sub

Private Sub Winsock1_Connect()

Winsock1.SendData "GET /nasumi/index.html HTTP/1.0" & vbCrLf
Winsock1.SendData "Host: members13.tsukaeru.net" & vbCrLf
Winsock1.SendData vbCrLf

End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)

Dim strData As String
Winsock1.GetData strData
MsgBox strData

End Sub
>>61 ありがとうございますた!
接続した後にhost: 〜.net みたいなのをおくらにゃならんのですか。送らなくても出来るとこがあるんでわけわかめです。
どうやら俺はhttpプロトコルを勉強しないと駄目のようですネ。
>>29ですが、不可能ですか?
分かる方ご教授願います。
64デフォルトの名無しさん:02/07/16 02:15
ある変数の中身が数値であるか否かの判定方法キボンヌw
>>64
If Isnumeric(変数) Then
ここ来る前にヘルプ読もうな。
66厨房:02/07/16 02:53
ペイントソフト作ってるんですが
マウスダウンしたところからマウスアップまでの大きさの円を描く方法と
描画したものの中身を塗りつぶす方法がわかりません。
67デフォルトの名無しさん:02/07/16 08:06
推薦図書スレとこちらで迷ったのですが、あちらはあまりVBの話題が出ていないようなので。

現在Cでプログラムを書いてコンソールで動かしているアプリがあるのですが、
これをGUI化しなければならなくなりました。

GUI作るのは
VC++→面倒
VB→簡単
と聞きましたので、今のプログラムをVC++でDLL化し、VBで作ったGUIから利用しようかと思っています。
こういう用途でVBを利用する場合、お勧めの書籍はありますでしょうか?
VBは全く触ったことがありません。

webで調べてみたのですが、
http://www2.gihyo.co.jp/books/bookinfo.asp?ID=4-7741-0802-2
こういう感じの、VB寄りの本があればいいなぁ、と思っています。
>>67
そういう人は、迷わずC#にしとけ。
VBと同じ様にGUIが構築できて、かつ、コードはほとんどCと同じ
感覚で使えるぞ。
>>67
Borland C++ Builder という選択肢もあるよ
とか書くとM$マンセーな皆様に袋叩きにされる罠
>>67
いや、この人は業務か何かで、C#もBCBも無い環境で事を成さねばならないのでは?
素直にVB本を漁るのが吉。
VB本といってもCとのデータ連携を詳しく紹介したのなんてあるかあ?

下手すりゃネット上の情報の方が豊富かも。
もともとのメイン処理がCで書いてあって、それをDLL化して
VBで画面つくるんだよね。
VBって構造体の記述もネストできないし、
スタティックな変数も64KB未満でないと駄目だし、
VBで確保したエリアをDLLに渡す部分も、ちゃんと
リニアなエリアが確保されてるのかどうか良くわからんし、
VB使ったことが無いんだったらお勧めしません。
VBって考えてる以上にクソだよ。

妙な幻想は抱かないのが吉
>>71
dllから呼ぶのだから、API使うのと変わりないでしょ。
漏れはそういうふうにdllの方を作ったけどね。

>下手すりゃネット上の情報の方が豊富かも。
この部分は納得、同意。
>>72
> VBって構造体の記述もネストできないし、
たいした問題ではないと思いますが。同等のことは出来ますし。

> リニアなエリアが確保されてるのかどうか良くわからんし、
数値配列は連続した領域に割り当てられることが保証されてますけど、
それじゃ不十分って意味ですか?

> VB使ったことが無いんだったらお勧めしません。
これには同意します。
>>72
構造体はネストできます。
64KB未満でなくていけないのは構造体内の固定長配列/固定長文字列の合計サイズです。
VBで確保したエリアについてはMSDNに書いてあるので良くわかってから使ってください。
>>75
同等のことはできますね。
でも、見通しが悪くないですか?
VBで画面を作って、処理は、DLL側でっていう
作りにするとおそらくVB側とDLL側で同じデータ構造を
定義する必要が出てくると思うんですよ。
で、もともとはCで書いてあるんだからC用の構造体の定義は
すでにある。それを元にVB用の構造体の定義をつくる。
そのとき、もともとのC用の定義は、構造体をネストしてって記述に
なっている。VB用の定義上はそれが許されない。

ぱっと2つの定義を見て同じだってみれないんです。


>リニア...
最初VB+DLLでプログラム作ったとき、
自分で構造体を定義してそれをREDIMで
エリアを確保して、そのエリアのアドレスをDLLに渡して
DLL側でそこに書き込むってことをやろうとしたとき、
大丈夫かなぁって不安になりました。
VBって変数に初期値をセットしないとメモリが割り当てられない
とか(本当?)、String型は単純なバイト並びじゃないとか、

ちょっと支離滅裂ですが、C言語しか使ったこと無い人が
VB+DLLという形でプログラムを作ろうとすると、
予想以上にデータの受け渡しに戸惑うと思う、という事が
言いたいだけですはい。
>>もしかして漏れだけ?
>>77
構造体定義の中に構造体定義をネストするほうが見通しが
悪いと俺は思うのだが。
まあ,他でネスト内部の構造を参照しないような、その場所だけの
定義だけだったらそれでもかまわんだろうけど。
7957:02/07/16 12:31
>>77
もしかして、前スレで ユーザー定義型の配列をDLLに渡そうとして、
はまってた人ですか?

> 同等のことはできますね。
> でも、見通しが悪くないですか?

あんまり気にならないですけど。
というか、私が構造体のネストを使わないだけか。

> VBって変数に初期値をセットしないとメモリが割り当てられない
> とか(本当?)、

そんなことは無いです。
少なくとも参照した時点(つまりDLLに渡した時点)では初期化されてます。

> 予想以上にデータの受け渡しに戸惑うと思う、という事が
> 言いたいだけですはい。
> >>もしかして漏れだけ?

いや、私も最初はその辺で戸惑いましたよ。
80デフォルトの名無しさん:02/07/16 13:51
唐突ですいません。
VBで作成したEXEで戻り値を返すにはどいしたらいいのでしょうか?
どなたかおながいします・・・。
81デフォルトの名無しさん:02/07/16 14:24
質問です
label1.label2.label3の中の数字が一致したとき
label4の数字が1増えるっていう風にするには
どうすればいいでしょうか?
ちなみにlabel1.label2.label3にはそれぞれ違うタイマーの数字が入ります
なんか意味わかんない文章ですがよかったら教えてほしいです
お願いします
if文って知ってるか?
>>80
気になったので調べてみました。

結論:ムリ
84愛本:02/07/16 16:00
.dllでかかれた部分をモジュールへ変更してるんですが
ハンドルデータの取扱いがよく分かりません。

Cのソースで
theHogeP = GlobalLock(theHogeH);
theHogeP->*** = XXX;
GlobalUnlock(theHogeH);

のtheHogeP->***の部分をどうVBへ変換したらよいのか
だれか教えてください
>>84
それはVBが分からないというよりCが分かって無いのでは。
>>85
VBとCの両方判ってないと思われ。
>>84
CopyMemory theHogeP + オフセット , XXX , 長さ

かな?もしくは、ユーザー定義型を作って、いったんそっちに移すって手もあります。

dim hoge as ユーザー定義型
CopyMemory hoge,theHogeP,長さ
hoge.*** = XXX
CopyMemory theHogeP,hoge,長さ
88愛本:02/07/16 17:13
>>85-86
一応Cは理解してるつもりだが。
Cで書いた自作.dll(動作確認済み)をモジュールへ変更してる
とこなんでVB<->Cの変換部分がよくわかんないんだよ。

具体的にはPRINTDLGのなかのDEVMODEの値を変更したいんだけど

#ACCESS2000のPrinterオブジェクトがつかえない対策
89愛本:02/07/16 17:30
>>87
Thanx!!!

追加でもうひとつ質問なんだけど
この場合のCopyMemoryみたいにAPIに構造体をわたす時は
ポインタ渡しになるの?値渡しになるの?

#単純にVBだと考えれば参照渡し(≒ポインタ渡し?)と考えて
#いいんだろうか…
9087:02/07/16 17:46
>>89
> この場合のCopyMemoryみたいにAPIに構造体をわたす時は
> ポインタ渡しになるの?値渡しになるの?

Declare 宣言でByRefを指定すればポインタ渡し、ByValを指定すれば値渡しになります。
どちらも指定しなければ、ByRef(ポインタ渡し)です。

詳しくは MSDN の 「DLL および Windows API へのアクセス」 を参照してください。
9187:02/07/16 17:49
>>89
追記
ユーザー定義型の値渡しは出来ません。
92愛本:02/07/16 17:58
>>87
重ね重ねどうもありがとう
>>79
その節はどうもお世話になりました。
最近 C# を買ってみました。
私には、こっちのほうが全然わかりやすいです。
質問なのですが、よろしく御願いします

ttp://www.microsoft.com/JAPAN/developer/library/jpwinpf/_win32_terminateprocess.htm

BOOL TerminateProcess(
HANDLE hProcess, // プロセスのハンドル
UINT uExitCode // プロセスの終了コード
);
なんですが、w2kで使用する際、具体的にどういう風に書けば良いんでしょうか

宜しく御願いします
95デフォルトの名無しさん:02/07/16 21:10
WAVE使いたい
教えれ
>>77
VBのStringはBSTRです。
先頭に文字列長 + その後に実際の文字列(終端文字なし)
97ななし:02/07/16 21:55
>>80

ActiveX EXEにすれば、メソッドの戻り値を返せますが?
(そーゆー意味ぢゃない?)

標準EXEでやるなら、終了処理で、結果コードをINIファイルに吐くとか?
(インチキ臭いというか、ルール違反というか・・・)

>>94

基本的に、C / C++ 向けに書かれたAPIサンプルコードをVB用に書き直すのは、
C、VBの両方の知識がないとむずかしいような気がする。
(それとも、APIビューアーか、WEB検索で探すか)

この例は、たまたま知ってる(仕事で使ったことはないけど)ので、サンプルが
掲載されているサイトを紹介しときます。

Win 2000 なら、NTとおなじコードで動くはず。(未確認)

しかし、TerminateProcess って使っていいもんかね?
「強制終了」だから、望ましくないと思うのだけど。
(終了処理が正常に行われない、リソースのリーク等の問題があるのでは?)
>>80
ExitProcessでOK
99ななし:02/07/16 22:06

>>97

> この例は、たまたま知ってる(仕事で使ったことはないけど)ので、サンプルが
掲載されているサイトを紹介しときます。

肝心のアドレスを書き忘れた。(W

ttp://www.geocities.co.jp/SiliconValley-Bay/4535/Program/011.html

(直リンク失礼。m(_ _)m  )



100デフォルトの名無しさん:02/07/16 23:29
VBでコンソールアプリケーションつくるにはどうすれば良いのでしょうか?
101コギャル&中高生:02/07/16 23:30
http://go.iclub.to/ddiooc/

お役立ちリンク集
必ず役立ちます

コギャルとH出来るサイトはここ
ヌキヌキ部屋へ直行便

http://kado7.ug.to/wowo/
10280:02/07/16 23:37
>>98 ありがとう うまくいきました!

これってデバッグで動かすとVB自体も終了しちゃうんですね。
103初心者:02/07/17 00:14
コモンダイアログについての質問です。
ShowSave等で前回保存した場所を記録している様なのですが、
その情報はレジストリのどの部分に書き込まれているのでしょうか?

環境はWindows2000, VB6.0です。
>>100
VB.netにしる。
105ななし@車輪の再発明野郎:02/07/17 04:38
>>103

知らないけど・・・同等機能を独自に実装するんじゃダメなの?
調べるより作った方が早いと思うんだけど。
10694:02/07/17 05:53
>97氏
有難う御座います
助かりました
カップヌードル食べてるときにさ、ふと魔がさして
発泡スチロールの容器を横からフォークでブスリと
差してみたんだよね。そしたら3つの穴からスープが
ピューッと出てきて止まらないんだ。
あわてて穴に口を付けてスープを吸ったけど全然
止まらないんだ。熱くて火傷しそうだったし、そのまま
流しに持っていった。ようやく落ちついてカップの中を
見たら麺がまだ残ってた。我ながらアフォだと思った。
108デフォルトの名無しさん:02/07/17 09:39
>>103
そこまで見当ついててなんでレジストリ検索しないかなー
109デフォルトの名無しさん:02/07/17 10:42
>>107
ヘルプをよめ
110デフォルトの名無しさん:02/07/17 11:15
>>109
それヘルプで解決できるのかよw
>>110
109はヘルプで解決できると思われ
>>110
つーかFAQだろ。検索しる!
>>112
マジか?
>>107
どこを縦読みすればいいの?
11581:02/07/17 15:21
みなさんにとってはくだらない質問だと思いますが
もう一度質問します
どうしてもif文の使い方がいまいちわかりません
もしlabel1とlabel2とlabel3の数が一緒ならlabel4が1増えるっていうのができない

a=a+1
if label1=label2=label3 then label4="" & a & ""

ってやると、どうしてもlabel1とlabel2の数が一緒になるだけで1増えてしまいます
何が間違ってるんでしょうか?
お願いしますm(__)m
なぜlabel1とlabel2の値がlabel3になってしまうのか
よーく考えてみること。
>>115
自分の書いたソースをとことん見つめ直すのも勉強だと思われ・・・。
VBはヨクワカランガ
if($label1 eq $label2 && $label1 eq $label3){
 $label4++;
}
っということが必要であるかと。
119デフォルトの名無しさん:02/07/17 16:17
>>115
label1=label2=label3
これをandつかってばらしてみる、label1=label2 and label2=label3
そうか、IF文を2つ書いてやってみる
だけど、こんなんでうまくいくのか?
115を読んだら「数」だな
if ($label1 == $label2 && $label1== $label3){$label4++}
に訂正。
>>115
分からないのであれば、分かるようにかけ。
例えば君なら下記のようになるんじゃね。

if label1 = label2 then
if label1 = label3 then
if label2 = label1 then
if label2 = label3 then
if label3 = label1 then
if label3 = label2 then
a=a+1
label4="" & a & ""
endif
endif
endif
endif
endif
endif
endif
122115:02/07/17 16:50
>>116-121
やっと理解できましたw
ありがとうございますm(__)m
>>115
「label1=label2」という比較式は、
label1とlabel2が等しければTrueを返す、そうでなければFalseを返す。

つまり、label1とlabel2が等しいときは、
>if label1=label2=label3 then label4="" & a & ""
この文は、
If True = label3 Then
という文と同じだ。
label3の値が"1"など0以外を意味する数字の文字列であったり、
"True"だったり、数値の-1だったりするとこの式は成り立つ。

そういう理由で、
>ってやると、どうしてもlabel1とlabel2の数が一緒になるだけで1増えてしまいます
となる。
124名無し:02/07/18 00:01
実行時エラー484のおこしかたってわかる人いないでしょうか?
何が原因で出てるのかをつかみたいのですが、再現性がなくって。。。
Err.Raise 484

VB標準のエラーじゃない。
126デフォルトの名無しさん:02/07/18 07:39
(´-`).。oO(Label.Captionってなってないと、見てて気持ち悪い・・・)
>>124
480 AutoRedraw イメージを作成できません。
481 ピクチャが不正です。
482 プリンタ エラーです。
483 プリンタ ドライバは指定されたプロパティをサポートしていません。
484 システムからプリンタ情報を受けるときに問題が発生しました。プリンタが正しく設定されているかを確かめてください。
485 ピクチャの形式が不正です。
486 フォームのイメージをこのプリンターで印刷することはできません。
128Name_Not_Found:02/07/18 09:29
Dim qry As QueryDef
Dim qRs As DAO.Recordset
Set qry = qmDb.QueryDefs("クエリーX")
Set qRs = qry.OpenRecordset(dbOpenDynaset)
を実行すると
 qRs.RecordCount = 1 になっていた。(実際は1500件)

Set qry = qmDb.QueryDefs("クエリーX")
Set qRs = qry.OpenRecordset(dbOpenDynaset)
qRs.MoveFirst
qRs.MoveLast
とするとqRs.RecordCount = 1500 でOK
なんでか? わかる人 手をあげて

129デフォルトの名無しさん:02/07/18 10:10
>>128
レコードセットは一度MoveLastで最終桁まで取らないと
RecordCountでは総数が取れないんだよ。
130128:02/07/18 10:33
>129
MoveLastしなくても取れる場合があるから、そうとは限らないしょ。

131129:02/07/18 11:07
>>130
ちゃんとヘルプに書いてあるよ。
そりゃRecordSetにデータが1つしか無いなら
MoveLastしなくても確実に取れるよ。
結局、カーソルでレコード総なめするような
コードは書くなって事だよ。だってパフォーマンス悪いだろ?
>>131
ループさせるとしても初期値と比較の分だけしか違わないかと。
ヘルプ読んだ?

>Recordset オブジェクトでアクセスされたレコード数、またはテーブル タイプの
> Recordset オブジェクトか TableDef オブジェクトのレコード総数を返します。

ってある。必ずしもレコード数が返る訳では無い事に注意だ。

つまり、
取れる場合がある→取れない場合もある→取れる事が保証されていない→取れない
って考えとく方が痛い目を見ないで済むかと。
>132
クラサバでそれやったら、場合によっては絞め殺されるぞ...
135128:02/07/18 11:40
>133
なるほど
「MoveLastしときなさい」ってことですね。
arigatou
>>135
MoveLastは遅い
137131:02/07/18 11:54
>>132
んー・・イマイチ意味がワカランが。スマン。
何の初期値の事かな?
パフォーマンスが悪いって所の事をつっこまれてるとしての返答だが、
この場合、データ量が1500件程度ならいいが
10万件や30万件のデータ量になるとカーソルタイプにもよるが
極端にパフォーマンスが悪化するって事が言いたかったんだな。
138129:02/07/18 12:18
>>135
なんだよ。
やさしくヘルプの引用してやらないと礼も言ってくれないのか。
クッソーーーっ グレてやる!!
世知辛い世の中やな。 (TーT)
>>138
PC初心者板にはそういう人間たくさんいるぞ。
まぁ、所詮はVB厨だとあきらめるのが吉。
140コギャル&中高生:02/07/18 12:35
http://go.iclub.to/ddiooc/

お役立ちリンク集
必ず役立ちます

コギャルとH出来るサイトはここ
ヌキヌキ部屋へ直行便

http://kado7.ug.to/wowo/

http://kado7.ug.to/wowo/-a.htm
141129:02/07/18 12:42
知ってる。ちょっと逝ってみたかっただけ。ヾy( ̄ー ̄)
>>139
ここにいる奴は皆VB厨です。
>>142
この場合は信者って意味じゃないぞ?
SQLで件数取得すればええやん。
145デフォルトの名無しさん:02/07/18 13:11
>>144
SQL使えなかったら無理だろ。
>>138
NO付け忘れでし!気分を害してスマソ。
で、MoveLastは遅い(>>136)
とあるけど他に方法ありますか?
次はきっちり礼をしますのでヨロシク
147ななし:02/07/18 13:12
>>128-136

ADOレコードセットなら、MoveLastしなくてもRecordCountは取れる。
パフォーマンス面でお奨めできないのは、DAOの場合と同様。
SELECT COUNT(*) しなさい。(件数が返る)
ADOやめてoo4oにしる!
ADOでやると-1が帰ってきて困る時があるYO
素直にCOUNT(*)。これ定説。
COUNT(*)の後で1件追加されたら困るYO!
RecordCountで取得した後で一件追加されても困る
どうすりゃいいのさ
153ななし:02/07/18 19:40
>>148

>>128 のどこにOracle使ってますと書いてあるのか、小1億年間問い詰めたい。
ロックすれ(w
155デフォルトの名無しさん:02/07/19 17:28
>>154
そんなチミにロックヲン
156デフォルトの名無しさん:02/07/19 17:29
割り込みで呼び出された処理の最中に,ほかの割り込みが呼び出されることはありますか?
それとも割り込み処理中は,暗黙的にほかの割り込みがdisableされているのでしょうか。

または,割り込み処理中に,自分と同じ割り込みが呼び出されることはありますか?
たとえば,0.01秒に1回のTimer割り込みの処理が0.01秒以内で終わらなかった場合,
同じ割り込みが2度パラレルに処理されることはありえるのでしょうか。
ファイル処理(だと思うのですが)について質問です。
複数の画像が入っている1つのTIFファイルを複数のBMPファイルに変換する事は可能なのでしょうか?
158デフォルトの名無しさん:02/07/19 17:45
>>157
可能
159デフォルトの名無しさん:02/07/19 17:57
みなさん、こんにちは

VB6.0からOracle8.0.5にoo4oを使用して接続しているのですが、
処理が長いストアドを実行した場合に、タイムアウトさせたいのですが、
どのようにすればよいのでしょうか?

現在、処理が長いとVB側は延々と待ち続けるので、
これを10秒越えるとタイムアウトエラーで終わるようにしたいのですが

m(__)m よろしくおねがいします
>>156
DoEventsを呼ぶか、イベント発生のきっかけとなるような処理(TextBoxのTextプロパティを変更する、
FormのRefreshメソッドを呼ぶなど)をしない限り、イベントプロシージャ実行中にイベントは発生しません。
>>157
自前でそういうコードを書くか、そういったライブラリを用意すれば可能です。
VB自体にはTIFFを扱う機能は無かったと思います。
162デフォルトの名無しさん:02/07/19 18:16
>>160
ご回答ありがとうございました。
重ねて質問なのですが,「イベント処理中に別のイベントは呼び出されない」というのは
「別のイベントは受け付けられるが,呼び出しの順番待ちがかかる」ということでしょうか?
その場合,処理中のイベントが終了したときに,待機中だった別のイベントがまとめて
次々に呼び出されるということでしょうか。
また,たとえば0.01秒に1回のTimerイベントがあった場合に,別のイベントの処理に
1秒かかっていた場合は,その1秒の処理が終わったときに0.01秒のイベントが100個
呼び出し待ち状態になっているということでしょうか?

どうかよろしくおねがいいたします。
WM_TIMERと同じで、メッセージキューの中にWM_TIMERとか
WM_PAINT以外のメッセージが無い限り呼び出されないはず
>Timerイベント
164157:02/07/19 20:48
>>161
ライブラリも考えたんですが、自分で作った方が色々と面倒が無くていいかな
と思ってはいました。
一度TIFファイルをバイナリエディタで開いてみたんですが、ヘッダ部分の
フォーマットが理解できませんでした。
BMPファイルのフォーマットはなんとか理解できたんですが、TIFからBMPに
にどの様に変えるのかが解らなくて・・・・
ライブラリのソースをみればいい。
>>162
基本的に順番待ちだが、Timerイベントはすっぽかします。
>>163


Sub Command1_Click()
 Dim StartTime As Double
 StartTime = Timer()
 Do While ((Timer() - StartTime) < 10.0)
 Loop
End Sub

Sub Timer1_Timer()
 Debug.Print ".";
End Sub

Timer1.Interval = 100 にして実行すると、Command1を押してる間は
Timer イベント がきてないみたい
168デフォルトの名無しさん:02/07/19 23:16
>>162
1回だけ。

つまり、Timer処理ルーチンに入ったとき、設定時間をすぎていれば、
実行して、経過時間を0にリセットするだけ。

しかも、最小単位がWin9x系では90ms、NT系では55ms。
インターバルをこれ以上小さくしても意味がない。
ストアドプロシジャが時間喰ってるとしたら、
ストアドプロシジャの中で何か手を打たないとVB側からは
何もしようがないみたいな。
170超ド級初心者:02/07/20 00:17
プログラムって何ですか?いろいろ知識をつけていきたいのですが
何から聞けばイイのか分からないくらいアレなので、
とりあえずこんなクサレ質問から。マジです。お願いします。
>>170
この板で見かけたカタカナを片端からサーチエンジンにかけて、
その意味がわかるようになれば、立派にやっていけます。
172超ド級初心者:02/07/20 00:25
>171
ありがとうございます!ではとりあえず単語をメモって
それぞれの意味を憶えてきます。
>>172
その心意気やよし! とりあえず

 ちょうどきゅう
 ぷろぐらむ
 いい
 あれ
 くされ
 まじ
 でふぉると
 かたかな
 さーちえんじん
 めも

からだ!

# マ板あたりにスレ立ててやってね。
174デフォルトの名無しさん:02/07/20 02:45
ウィンドウのサイズを変えた時に、そこにくっつけたオブジェクトのサイズも
全体に合わせて変化するようにするにはどうしたらいいですか。
176174:02/07/20 02:52
>>175
高くて買えない
と思ったけど、用語が分かって助かりました。
ありがとうございます。
177デフォルトの名無しさん:02/07/20 02:57
>>175
なんかスゲー投げ遣りなレスだな。しかもBOC・・・。

>>174
マジレスすると変化前と変化後のフォームのサイズの割合を計算して
Dim objControl As Object
For Each objControl In Me.Controls 〜 Next
でフォーム上のコントロールコレクションをループして、高さと横幅をその割合で
変化させたらいいと思う。
178デフォルトの名無しさん:02/07/20 02:57
>>177
追加、位置もな。
179デフォルトの名無しさん :02/07/20 03:20
TextboxのmultilineをTrueにしてカーソルの行の位置と列の位置を取得するにはどうすればいいですか?
ご教授お願いします
180デフォルトの名無しさん:02/07/20 03:27
>>179
SelStartプロパティで何文字目にカーソルがあるかわかる。

これは改行コード込みなので、
・そこまでのCR LFコードの数を数えたら行がわかる
・CR LFコードからどのくらい後ろなのかを数えたら列がわかる
181デフォルトの名無しさん :02/07/20 03:32
>180
ヒントありがとうございます。頑張ってやってみます
182174:02/07/20 10:05
>>177-178
ありがとうございます。買わないでも、できる人はできるってことですね。
やってみます。
>>179
Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)
    Dim lngRow As Long
    Dim lngCol As Long

    Call subGetTextRowCol(Text1.Text, Text1.SelStart, lngRow, lngCol)
    Debug.Print CStr(lngRow) & " - " & CStr(lngCol)

End Sub

Private Sub subGetTextRowCol(ByVal strTarget As String, _
                ByVal lngSelStart As Long, _
                ByRef lngRow As Long, _
                ByRef lngCol As Long, _
                Optional ByVal strDemiliter As String = vbCrLf)
    Dim strArray() As String
    Dim strStartToSel As String

    lngRow = 0
    lngCol = 0

    strStartToSel = Left$(strTarget, lngSelStart)
    strArray() = Split(strStartToSel, strDemiliter)

    On Error Resume Next
    lngRow = UBound(strArray()) - LBound(strArray())
    lngCol = Len(strArray(UBound(strArray())))
    On Error GoTo 0

    If lngRow = -1 Then
        lngRow = 0
    End If

    If Err.Number <> 0 Then
        Err.Clear
        lngCol = 0
    End If

    Erase strArray()

End Sub
>>182
下のプログラムみたいにやってみたけど、元のコントロール位置を保存してないと、
精度落ちから、かなりずれてくるね。特に押しつぶしたあと元の大きさに広げてみると悲惨。

Private mlngFormHeight As Long
Private mlngFormWidth As Long

Private Sub Form_Load()
    mlngFormHeight = Me.Height
    mlngFormWidth = Me.Width
End Sub

Private Sub Form_Resize()
    Dim dblChangedSizeH As Double
    Dim dblChangedSizeW As Double
    Dim objControl As Control

    dblChangedSizeH = CDbl(Me.Height / mlngFormHeight)
    dblChangedSizeW = CDbl(Me.Width / mlngFormWidth)

    For Each objControl In Me.Controls
        With objControl
            .Height = CLng(.Height * dblChangedSizeH)
            .Top = CLng(.Top * dblChangedSizeH)
            .Width = CLng(.Width * dblChangedSizeW)
            .Left = CLng(.Left * dblChangedSizeW)
        End With
    Next

    mlngFormHeight = Me.Height
    mlngFormWidth = Me.Width
End Sub
185デフォルトの名無しさん :02/07/20 15:54
>183
コードを書いていただきありがとうございます。理想のうごきができました。

あともうひとつ質問ですがツールバーにテキストボックスやオプションボタンをつけることはできるのでしょうか?
>>185
配置したいコントロールをCtrl + Xで切り取ってから、ツールバーをクリックして選択し
Ctrl + Vで貼り付ければOKかも
申し訳ありません、どうかお教えいただきたく書き込みしております

VBScriptで「名前を付けて保存」のダイアログボックスが
どうしても作れません
コモンダイアログコントロール (Comdlg32.ocx)を
インストールするところまではわかったのですが

皆様どうかお願いします。
188 :02/07/20 17:45
>皆様どうかお願いします。

ふ。
189デフォルトの名無しさん:02/07/20 18:02
>>187
インストールできたら
[プロジェクト]メニューの[コンポーネント]クリックして
リストの中から[Microsoft Common Dialog Control 6.0]選んでOKね。
フォームに貼り付けて
CommonDialog1.ShowSave で実行。
VBSですが何か。
       ∧         ∧
        / ヽ        ./ .∧
     /   `、     /   ∧
    /       ̄ ̄ ̄    ヽ
    l:::::::::              .l
   |::::::::::  -=・=-    -=・=-  |
   .|:::::::::::::::::   \___/    |
    ヽ:::::::::::::::::::  \/     ノ   VBSだとぉ〜〜〜?
MsgBox "名前を付けて保存"
193デフォルトの名無しさん:02/07/20 19:51
VB6.0で、ディレクトリが存在するか確かめるにはどうしたらいいですか?
MkDir "ディレクトリ"
MsgBox "ディレクトリは存在します"
RmDir "ディレクトリ"
MsgBox "ディレクトリは存在しません"
196193:02/07/20 20:04
過去ログ(Part6)で解決しました。気をつけます。
>>196
いやいい。おこっているわけじゃない。
198デフォルトの名無しさん:02/07/20 21:52
bregexp.dllを使って"hoge"を"boke"に変換したい時

lngRtn = Replace("s/hoge/boke/g", strTarget)

こんな感じにするみたいなんですが、bokeのところを変数にしたい時は
どうしたらいいんでしょうか?
このReplaceと普通のReplaceと同時に使えるようにする方法でもいいです。
199デフォルトの名無しさん:02/07/20 21:55
>>198

馬鹿ですか?馬鹿だよね、きっと。

>bokeのところを変数にしたい時
よくこんなことも分からんで金もらってるなあ、あんた。
$bokeが変数とすると
lngRtn = Replace("s/hoge/$boke/g", strTarget)
201デフォルトの名無しさん:02/07/20 22:10
>>199
金なんかもらってないですよ。真面目に使い出したのは昨日なんです。
買ったのはずっと昔なんですが。

>>200
↓のようにやると、2個目のMsgBoxは$strNew$strNewと表示されます。

Private Declare Function Replace Lib "bregexp" _
  (szRegstr As String, szTarget As String) As String

Private Sub Form_Load()
  Dim strTarget As String
  Dim strNew As String
  
  strTarget = "hogehoge"
  strNew = "boke"
  MsgBox Replace("s/hoge/boke/g", strTarget)
  MsgBox Replace("s/hoge/$strNew/g", strTarget)
End Sub
202198:02/07/20 22:12
×bokeのところを変数にしたい時は
○bokeのところに変数を使いたい時は
>>201
VBならVBらしくbregexpなんか使わないでRegExpオブジェクトを使え。
204デフォルトの名無しさん:02/07/20 22:13
200は激烈馬鹿だな。馬鹿さが凄いよ。

>>>200
>↓のようにやると、2個目のMsgBoxは$strNew$strNewと表示されます。

当たり前だろ。どこに変数がある?眼はみえてるか?
205198:02/07/20 22:13
>>203
どうもです。さっそくそのRegExp探してみます。
206デフォルトの名無しさん:02/07/20 22:15
何を使おうが一緒だよ。>>198

200のミスに気付かないと。
207198:02/07/20 22:17
201は自分です。
200ってもしかしてネタなんですか。
208ネタとは何事か:02/07/20 22:27
動いてるぞ
$_='198はhoge';$boke='馬鹿';
s/hoge/$boke/g;
print $_;
209198:02/07/20 22:30
>>208
動いたって言うのは、Perlの話だったりしますか?
>>208
perlネタはスレ違い。
211スレ違いとは何事か:02/07/20 22:35
ShellExecute("perl hoge.pl")
"s/hoge/" & strNew & "/g"
213198:02/07/20 22:43
>>212
ありがとうございます!ホント助かりました!
214デフォルトの名無しさん:02/07/20 23:03
>>198
200のアホさが分かった?お前もひどいけど。
>>214
>>200はネタで引っ張りすぎだからイヤだが
偉そうにネタにマジレスしているお前は馬鹿だ。
21658:02/07/20 23:12
>>215
ふーん、俺にはあんたが一番偉そうに見えるけど。
>>216
馬鹿に見えないならどうでもいいよ。
わざわざ >>217 書いた時点で、大馬鹿にしか見えなくなったね。
219本気の名無しさん:02/07/21 00:41
Wpeというツールは起動させたソフトに送られてきているパケットのデータを見たり、そのソフトからパケットを送ったりしているようにみせたりすることができるんですが、
これはVBでは作れないんですか?
もし作れるとしたらなにか参考になるソースまたはページはありませんか?
>>219
取りあえず少しでも大それたことしたいと思ってるならはじめからVBなんぞ選ぶな。
221デフォルトの名無しさん:02/07/21 00:51
>219
VBオンリーでは作れないと思ったほうがいい。
>>218
自分のことを言っているのか。
>>222
VBスレ専門の煽りですか?
224本気の名無しさん:02/07/21 10:26
>220
>221
ご返事ありがとうございます。
やっぱり所詮はVB
Wpeのようなソフトは作れないのですか
がっくり
パケットモニタってやっぱりAPI呼び出しだけでは無理なんでしょうね?
デバドラが作れるくらいじゃないと無理ですよね。
>>225
しかも最近は自分宛のパケットしか飛んでこない罠。
>>226
いやいや、盗聴目的ではないのでそれはいいんですが。
ロケットマウスのようにマウスを自動で移動させてクリックさせたりとか
させてみたいんですが、
これはVisualBasicではできるのですか?
229デフォルトの名無しさん:02/07/21 13:44
230  :02/07/21 13:46
>VisualBasicでは

VBはなんだって可能です。でも、VBでAPIやポインタを扱えない
お前には無理です。
231 :02/07/21 13:49
>>230
           / ̄ ̄ ̄ ̄\
          (____人  )
          (-◎-◎一  ヽミ|
            ( (_ _)     9)
          ( ε   (∴  |_           ズ・・・・ザ・・ザァ
       ____ヽ______/ヽ___)( ̄( ̄ ̄ ̄|)
     (ミ_|__( (ミ_|____) ヽ. ヽ:::::ヽ:::::::ヽ
           (           ⌒ヽ:/::::::::丿
            ヽ          |  ‖:::::::丿   (´⌒(´⌒
                  \        |  ‖::::ノ  (´⌒  (´⌒
                   ゝ____丿__‖ノ_(´⌒ (´⌒
232デフォルトの名無しさん:02/07/21 14:58
ニューラルネットワークを使った
簡単な文字認識を行うプログラムどこかに公開されていませんか?
>>230
> VBはなんだって可能です。
なら、マルチスレッドで複数のフォームを並行的に更新するアプリを書い
てみな。
>>234
ほっとけ。VB厨は所詮井の中の蛙。
>>234
マルチスレッドを使わないで複数のフォームを並行的に更新するアプリは書けるけどな。
>>236
タイマーでも使うのか(藁
>>237
ほら。君にも作る方法わかってるじゃん。
>>238
で、スレッドは一般的にどう実装されてるか知ってるかい?

スレッド以外って言うから期待しちゃったよ。
>>239
マルチスレッドは手段であって目的じゃないよ。
241即レス ◆POP.SOKU :02/07/21 19:32
久しぶりに来てみたらなんか荒れ気味だな。

>234
VC++使ってもいいしActiveXEXEでも出来るぞ。
>>238
何するかと思ったら精度の悪いTSS。
それをスレッドの代わりになるとかいっちゃあ。
24387:02/07/21 20:51
>>241
おいおい、前提見てねーのか ?

>>230
> VBはなんだって可能です。
VBを使い始めて二ヶ月になるんですが
行き詰まってしまいました。

Form1で計算して出た結果(数字)を
Form2で使いたいときってどうしたら良いですか。

教えていただけませんか?
245デフォルトの名無しさん:02/07/21 21:29
初心者による実験結果報告。

Form1で
 Public hensu As Long
とやって、Form2で
 MsgBox Form1.hensu
とやると表示できた。
ホントのところは知らない。
246デフォルトの名無しさん:02/07/21 21:32
>>244
なんてフォームのなんていう変数ってかんじで指定してやる。
それが、>>245のいう
Form1.hensu


V B 厨 。 オ ブ ジ ェ ク ト 指 向 全 然 わ か っ て お り ま せ ん。

248244:02/07/21 21:36
>>245,246
ありがとうございます。
Dim でなく Public で宣言するのと
表示させる時の指定の仕方(Form1.hensu ってふうに)を
変えればいいみたいですね。

うまく表示されました。
感謝です!!
>>247
ちょっと恥ずかしかったねぇ。
250230:02/07/21 22:58
>>234
>なら、マルチスレッドで複数のフォームを並行的に更新するアプリを書い
>てみな。

だから言ってるだろ?
VBでAPIやポインタを扱えない
お前には無理です。って。
脳みそあんのか?
>>250
ほう、API でできるとな。ちなみに、VB のコントロールがマルチスレッ
ドに対応してねー事ぐらいは知ってるよな。

いきがるのは止めたら ? 今時恥ずかしいだけだよ。

まっ、VB 厨だからしょうがないか...。
252230:02/07/21 23:13
アホの234についでに言っとくがIDEでの実行は無理だからな。
exeにしてからじゃないとIDEが落ちるからな。
253230:02/07/21 23:14
>251
アホまるだしだな。専門卒か?
自分自身(アプリ自身)をアウトプロセスサーバとしてレジストリに登録して
自分自身を呼び出せば出来るよ(海外では常識なんですが)

>>251
COM知りませんって言ってるようなもんだよ。
>>252
プププ、まだ言ってら。ヴァッカじゃねーの。IDE なんて関係ないよ。
「VB のコントロール」と書いてあんのに、脳みそ腐ってない ?

まあ、マルチスレッドプログラムなんて書いたことないんだろーね。
君には、一生無理だろうから、おとなしく、VB で API とポインタ
(もどき) 使ってな。その方が、君も君の回りも幸せだよ。
>>254
Createthreadとは大違いな大袈裟な処理だな。
>>256
アフォ?
>>254
頭悪いなぁ。
> アウトプロセスサーバ
どこが、マルチスレッドなんだよ。

これだから、VB 厨は...。
Public Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
Public Declare Function GetCurrentProcessId Lib "kernel32" () As Long
Public Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Public Declare Function GetProp Lib "user32" Alias "GetPropA" (ByVal hwnd As Long, ByVal lpString As String) As Long
Public Declare Function SetProp Lib "user32" Alias "SetPropA" (ByVal hwnd As Long, ByVal lpString As String, ByVal hData As Long) As Long
Public Declare Function GetNextWindow Lib "user32" Alias "GetWindow" (ByVal hwnd As Long, ByVal wFlag As Long) As Long
Public Declare Function RemoveProp Lib "user32" Alias "RemovePropA" (ByVal hwnd As Long, ByVal lpString As String) As Long
Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long



ObjPtr関数 で可能

つーか、
「VBじゃマルチスレッドできないだろアフォ」つーのは昔から低脳VC厨と決まっておる。
正直、VBでマルチスレッドは可能。
Createthreadで実現できる。でも252にあるように
開発中にデバッグしたらあぼーんする。

ところで皆さんはVB.NETへの頭の切り替えはできましたか?
僕は急に難しくなったので困っています。
あぼーんするなら使えねえジャン
オブジェクト指向も分からん厨は死ねよ>>261
>>261
VB6でクラスやらインタフェース継承やらをやってないから
そういうことになる。自業自得だ。
254の方法は確かにマルチスレッドの生成ではないように見えるが
実際実行してカレントプロセスIDと生成させたスレッドのIDをとると
カレントプロセスは同一でスレッドIDが違うフォームを生成し、
別々に更新などが出来る。VBでマルチスレッドを行う有名な方法。

例えばこれ
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=24672&lngWId=1

230は説明が下手。
>>264
オーバーライドと多態がわかりません。
>自業自得だ。
あははー>>261
ポリモーフィズムが分からんのは悲惨だよ。マジで。

>>268
>ポリモーフィズム
そもそも名前が覚えられん。
だから多態で一生通す。
>>266
いきなりVB.NETで多態をやるのが難しいのならVB6で練習しとけ。
271ごみレス ◆WuzDVM0M :02/07/21 23:56
みなさーん
ここは初心者質問スレですよー。
>>266
270は無視しとけ、.NETで出来なければ無理
VB初心者スレを覗くVC厨っていつもアフォ臭いことばっか言うな
>>272
なんでやねん。概念さえ理解すれば.NETでも簡単にできるだろ。
>>271
付いていけない方が一人。
276デフォルトの名無しさん:02/07/22 02:18
IEとかで、表示されてる文字列の上でダブルクリックすると
単語(日本語の場合は、必ずしも単語となるとは限らないですが)
が選択されますよね。それと同じようなことをカーソル(マウスカーソルじゃなくて)
があるところでやるにはどうしたらよいのでしょう。
277276:02/07/22 02:23
InStrRev, InStrを使って、カーソルがあるところから前方、後方に、境目を探すように
すればいいんでしょうか?
278デフォルトの名無しさん:02/07/22 09:48
>>277
境目ってスペース?
279ななし:02/07/22 10:44
>>279

実装ではなく、設計レベルでの質問。(VB6.0 Or VB.NET)
(開発チームにスキルの低い糞メンバーが多数紛れ込んでいるという前提で)
API関数はラッピングすべきでしょうか?
私的には、ある程度以上のスキルがあれば、APIだからといって隠蔽する必要は
ないと思ってますが、一般論としてどうでしょうか。

ラップするということは、多かれ少なかれ、クラス設計を考えない訳には行かず、
設計コストを上回る利点(再利用性、保守コストの軽減)がなければ意味がない
と思ってますが、実際のところ、APIのラッパー化で大きな成果(品質面、コスト
面で)を挙げた経験のある方、いらっしゃいますか?
>>279
>(開発チームにスキルの低い糞メンバーが多数紛れ込んでいるという前提で)

>ある程度以上のスキルがあれば

言ってることが矛盾してるので答えようがない。以上。
>278
文字コードの範囲でグループ分けしているんじゃないか?
例えば、「表示されてる文字列の上でダブルクリックすると 」だと、

[表示] [されてる] [文字列] [の] [上] [で] [ダブルクリック] [すると ]

みたいなかんじ。
>>279
あくまで俺の意見だがAPIだからという理由だけでラッピングするのはお勧めしない。
たとえばAPIのSleep。これをラッピングしても利点はほぼないといえる。

しかし、ファイル入出力APIなどはVBのファイル入出力ステートメントより
FileSystemObjectの方が使いやすいようにラッピングする利点がある。
(もっともファイル入出力APIを直接使う理由はあまりないだろうが)

また文字列を扱うAPIの場合、APIの呼び出しの前後に文字列領域の確保・
vbNullCharの削除が毎回発生するのでこれもラッピングした方がいいかもしれない。
ただクラスではなく標準モジュールとしてラッピングでも良いと思う。

繰り返すが、APIと言う理由だけでラッピングする必要はないだろう。
APIも宣言が違うだけであってただの関数と同じとみなす。
単純なAPIはそのまま使い、クラスの方が良い場合はクラスとし、VBで使うのが
少しだけ面倒な場合は標準(or クラス)モジュールで軽くラッピングすればよいだろう。

なおクラスの方が良い場合は、クラスとはなにか?どんなときに使用すればよいかが
わかっていれば、簡単にわかるだろう。あとクラスにする場合も全体的な設計こそやるが、
使うと決まってない機能まで実装する必要はない。拡張性さえあればよい。
283ななし:02/07/22 12:38
>>282

コメント感謝。参考とさせて頂きます。

> あとクラスにする場合も全体的な設計こそやるが、
> 使うと決まってない機能まで実装する必要はない。拡張性さえあればよい。

確かにそれが最大の利点ですね。
284ななし:02/07/22 13:03
用語についての質問です。

例えば、TextBox.Textプロパティを変更すると、TextBox_Changeイベントが
発生しますが、これって、「トリガ」という表現でよいのでしょうか?
(「トリガ」だと、なんだか、RDBの用語のような気がしますが?)
メッセージハンドら?
イベントハンドラ?
単純に「イベント」でええやん。
288ななし:02/07/22 14:07
>>285-287

メッセージ(イベント)を発生させる「原因」を何と呼ぶのかと疑問に
思ったのですが・・・。
>>288
原因はさまざまでしょ。
その場合は「テキストボックスへの入力」では。。。
一般的な言い方は知らん
290即レス ◆r/lgIxxc :02/07/22 15:26
>288
意味が通じるならなんでもいいと思うぞ。
291即レス ◆POP.SOKU :02/07/22 15:27
てーせー
292デフォルトの名無しさん:02/07/22 20:51
Visual Basicは簡単ですか?
ちゃんとやろうとすると簡単ではない。
ただし、VC等のように最初の一歩が極端に難しいわけでもない。
>>292
敷居は低いが次の敷居がさらに高くなる。
295即レス ◆POP.SOKU :02/07/22 21:43
>292
最初は簡単。後になると難しいっていうか辛い。
>>279
>実装ではなく、設計レベルでの質問。(VB6.0 Or VB.NET)
>(開発チームにスキルの低い糞メンバーが多数紛れ込んでいるという前提で)

設計以前の問題。
プロジェクト立ち上げる奴のスキル、見る目、人望がないだけ。

>API関数はラッピングすべきでしょうか?
要求仕様から仕様決定、言語選定を間違っていると思われ。
業務アプリでVB使うときにAPIの使用はほとんどの場合不要。
コストベースで考えれば自明。
あのさ、インターフェイス継承っていうのかしらん♪
implementsってありますよね!
これはメンバを明示的するという意味があるだけですか?
Dim なら変数を使いますよっと明示するわけですが!
implementsはベースクラスのメンバと同じ名前のを使いますよっと
明示するために使うだけなのですか!?
>>297
Implementsの本来の役割はCOMインタフェースの実装のためにあります。
>>297
しつこいな・・・。
300デフォルトの名無しさん:02/07/23 01:01
おまえら、なんかココの雰囲気が殺伐としてるぞ。
なんぞイヤな事でもあったか?
暑くてみんな汗だらだら。
>>300
いい事言った。
303ななし:02/07/23 13:44
>>296

ずいぶんな言われようだが、別に、俺がプロジェクトを立ち挙げた訳じゃない。
こんなメンバーでは無理だと内心おもっているが、上の人間が、今のメンバーで
やり繰りすることしか考えてない。
自分は、もうすぐよその部署に異動になるので、はっきり言ってもうどうでもよい
(てめえら、後は勝手にやれ、という心境)のだが、一応、設計ドキュメントとか
標準化規約(今頃VBのコーディング規約なんて・・・)は残していくことになってる
ので、どうしたものかと思案してるところです。

> 業務アプリでVB使うときにAPIの使用はほとんどの場合不要。
> コストベースで考えれば自明。

極論過ぎ。
INIファイルの読み書きひとつとっても、標準入出力関数では、生産性が上がらないし、
ShellExecuteやプロセスの監視なんかはAPI使わずにどうやって実装するというのだろうか・・・?
(「C++使え」とかいうのはなしね。VB使うという前提なんだから)
304ななし:02/07/23 13:48

激しく板違いですが、自社の開発メンバーが糞ばかりでまともなコードが書けない状況で、
外注要員を上手く使うことで、プロジェクトを成功(品質面でも、コストパフォーマンス面
でも)させた経験のある方、いらっしゃいますか?

(外注メンバーのコントロールって、自社開発以上にむずかしいと思うのだが・・・)
305初心者:02/07/23 14:28
あるテキストファイルの中から指定したキーワードの数を出力するプログラムを作りたいのですが、
数を出力するにはどのようにすればいいのでしょうか?
キーワードの頭の位置を帰す関数しか見当たらなくて困っています。
ご教授ください。
306即レス ◆POP.SOKU :02/07/23 14:31
>305
(len(srcstr)-len(Replace(srcStr,SearchStr,"")))/len(searchstr)
とか。
307デフォルトの名無しさん:02/07/23 14:45
>>304
それはある意味曲芸だが。
308ななし:02/07/23 15:00
>>307

あ、やっぱり。
でも、うちの会社、てめーらに技術がないなら、外注に○投げしさえすれば
すべてが解決すると思い込んでるバカが多い。(上も、下も)

受け入れ検証や、完成後のPG保守をどうするつもり(たぶん、目先のこと以外
何も考えていないと思うが)なんだと、小一時間(以下、略)
309ななし:02/07/23 15:12
>>306

その手があったか。
InStr関数をループで回すのは、文字列が大きいと遅いし、RegExpの
マッチオブジェクトを使う方法しか思いつかなかった。
bmpからpngに変換するDLL、またはサンプルソースありませんか?
libpng
>>311
さんくすです
313デフォルトの名無しさん:02/07/23 19:19
メニューエディタにあるショートカット以外のキーの組み合わせを使いたいと思い、
ttp://www.geocities.co.jp/SiliconValley/4805/vbtips/vbtips092.htm
を参考にしたのですが、作ったアプリを複数起動してると、
後から起動した奴を使っていても一番初めに起動した奴が反応してしまいます。
どうしたら良いのでしょうか?
314だめだめさん:02/07/23 19:40
DBGridで引っ張ってきたアクセスのテーブルのフィールドの値を
取得してほかのオブジェクト(たとえばテキストボックス)
に出力することってできますかねぇ?
315即レス ◆POP.SOKU :02/07/23 19:44
>313
グローバルだから当たり前なんだが。
アトムを使い続けたいならフォアグラウンドか
どうかで判定してもいい。

ただ、ホットキーならフォームのKeyPreview=trueにして
KeyPressとかで判定した方が楽で確実だぞ。
316即レス ◆POP.SOKU :02/07/23 19:47
>314
普通に出来るはずだが。
317だめだめさん:02/07/23 20:19
フィールドの指定の仕方がわかりませんです。
やりたいことは分かっててもコードがさっぱりです。
318313:02/07/23 20:37
>>315
ありがとうございます。
一番最初の奴がForegroundにある奴を操作するようにすればいいんだ
というところまで分かったのですが、その先が分かりません。
これからKeyPressでやる方を勉強してみます。
>>219
Winsock2ならVBでもできそうだよ
320デフォルトの名無しさん:02/07/23 22:11
別ウィンドウにマウスのクリックイベントを
取得、送信する方法がわかりません。
どのようにしたら可能でしょうか?
>>320
フック。まぁVB厨には荷が重い。
>>316
だから、314は「だめだめさん」だってばよ。
323デフォルトの名無しさん:02/07/23 22:22
>>320
 質問です
 @別ウィンドウっていうのは、別exeなんでしょうか?
 Aそれとも同一プロジェクト内のサブフォームなんでしょうか?

 @なら、別ウィンドウにプロパティを持たして、クリックイベント時に
  プロパティの値を設定すればいいのでは?
 Aなら@と同様にするか、グローバル変数で値を設定するのでは
  だめでしょうか?
>>323
質問です。

機種依存文字って知ってますか?
325323:02/07/23 22:37
>>324
 失礼しました ついうっかりです
 1.別ウィンドウ・・・・
 2.それとも・・・

 1.なら、・・・
 2.なら1.と同様に・・・

 と、読み直して下さい 
326320:02/07/23 22:39
>>321、323
SendKeysのようなものがあればと思ったのですが
やはりフックするしかないですかね。
なんとか頑張ってみます。
327eibu ◆c61exE6E :02/07/23 23:00
>>314
手元にVBがないから確認できないけど
DBGridのRowColChangeイベントに(他のChangeイベントでもいいぞ。)
Text1.Text=DbGrid.カレントフィールド(どんなメソッドか忘れた。)
みたいにしてみぃ。
後は自分で調べるのも勉強。
328即レス ◆POP.SOKU :02/07/23 23:04
>>320
取得はフックしないと無理。
・・・でもなんかいけそうな方法が
浮かんだので今度試して見よ。

送信はSendMessageを使う。
コマンドボタンならBM_CLICKでいい。
通常のウィンドウならLBUTTONDOWN&LBUTTONUP。
VB製のクリックイベントを発生させたい時は
マウスをキャプチャしてないといけないので注意。
つーか、マジでVBでグローバルフックができない理由がわからん。
ActiveX DLLも普通のDLLの一種だろ。
330即レス ◆POP.SOKU :02/07/24 01:32
>>329
ActiveXDLLはCOMを使ったOCXの一種で
普通のDLLとは全然違うぞ。
>>330
でもActiveX DLLもLoadLibraryできるぞ。
グローバルフックはDLLじゃなくてもできるらしいぞ。どこかのHPで見た
333デフォルトの名無しさん:02/07/24 07:53
333げとーっズサー

>331
マジ?xxxObject関連じゃない
334ななし:02/07/24 08:28
>>330

ちょっとだけ、ツッコミ。

OCXはコンテナが必要。また、コンテナがロードされている間は破棄できない。

上記2点で、OCXとActiveXDLLとは異なります。
(COMに詳しくないので、これ以上の説明はボロが出そうだが・・・)
335デフォルトの名無しさん:02/07/24 10:07
VBで標準入出力を扱うコードがGoogleはたくさん見つかるのですが、
うまく行きません。やり方を教えてください。
336ななし:02/07/24 10:33

>>335

> うまく行きません。やり方を教えてください。

具体的で回答しやすい質問の典型ですね。(嫌味)

やり方、ということですが、「うまく行くように」コーディング
すれば、「うまく行きます」。
(投げやり)
>>336
嫌味を嫌味と書いた時点からそれは嫌味ではないかと。
338335:02/07/24 11:11
おさわがせしております。どうもすみません。

http://tokyo.cool.ne.jp/taquino/vbcgi/stdio.shtml
のは、
 実行ファイル.exe > 出力ファイル.txt
でうまくいきました。
 実行ファイル.exe | more
はだめでした。
てっきり、コンソール画面(というか、MS-DOS プロンプト)
に出てくるのだと思ってました。
339335:02/07/24 11:22
>>80
標準出力の話だったら

結論:(厳密な話は知らないが)できる
340335:02/07/24 11:25
>>104
VB.netだと簡単になるんですか?
>>340
お前には無理だろう。
342デフォルトの名無しさん:02/07/24 13:08
VB6 プロジェクトを VS .NET で開いてアップグレードしようとしても
'状態 : Form1...プリプロセッサ処理を実行しています。' で失敗するんだが。。。
VB6 のプロジェクトがどんな内容であろうと結果は同じ
最初のモジュールで引っかかるよう
どうすりゃいい?
343デフォルトの名無しさん:02/07/24 13:50
多分とても簡単な質問だと思うのですがコマンドボタンを押したときに自分のホームページの中にファイルを作成する方法を教えてください。
まだVB歴が短く右も左も分からないような状態なので詳しく教えていただけると助かります。お願いします。
>>343
ぜんぜん簡単な質問じゃない上に
丸投げは(・A・)イクナイ
345ぷらねっと:02/07/24 14:36
INET コントロールでPROXY認証(!)を経由して通信(HTTP)を
行うにはどうすればよいですか。INET コントロールでなくても何か方法が
あれば教えてほしいです。よろしくお願いします。
>>343
つぅか用語もまともに知らないくせにプログラミングなんぞ5億年早い。
347デフォルトの名無しさん:02/07/24 15:28
>>345
inet1.Proxy = "串名"
inet1.AccessType = icNamedProxy
348ぷらねっと:02/07/24 15:41
347さん、ありがとう。
しかしユーザ名とパスワードを要求するような PROXY には、それでは
対応できないのです(345は説明不足でした)。
他の方もご存知でしたらぜひ教えてください。よろしくお願いします。
349デフォルトの名無しさん:02/07/24 16:50
VB6からXMLファイルを読み込むことになったのですが、
どのようにして行うのが一般的な手段なんでしょうか?
サイト検索などもしてみましたが事例がほとんど見当たりませんでした。
ポインタだけでも示してもらえれば幸いです。
>>349
SAX
351343:02/07/24 18:55
あらら。やっぱり甘かったですかね。出直します。
352デフォルトの名無しさん:02/07/24 21:07
リッチテキストエディットボックスコントロールで、Textプロパティを使って、
例えば
frmMain.rtfMain.Text = frmMain.rtfMain.Text & "hogehoge"
などとすると、設定されていた書式情報が消えて、デフォルトになってしまいますよね。
これをなくして(=現在までの書式情報を消さないで)文字列を追加するには
どうすればいいのでしょうか?

Visual Basic 6.0 Service Pack 5
Rich TextBox Control 6.0 SP4
です。
353初心者:02/07/25 07:08
フレキシブルグリッドで、scrollbarsプロパティを3にしておくと、表を表示しきれなくなると自動的にスクロールバーが出現しますが、
スクロールバーが水平・垂直それぞれ、出ているかどうかって判定はできますか?
スクロールバーが出るとグリッドの表示領域がそのぶん狭くなりますが、その正確なサイズを知りたいのです。
よい方法はないものでしょうか。
フレキシブルグリッドていうかVBしらないけど、GetWindowLongで
WindowStyleを調べるとか。
>>354
グリッドが固定なら表の縦横数で
水平、垂直になる数は把握できるけど
それじゃだめなの?
>>355
Windowstyleに、スクロールバーに関するものはありますでしょうか?
ネットで調でてもイマイチ要領を得ません…。

>>356
はい。表全体のサイズではなくて、グリッドのスクロールバーに隠れずに表示可能な領域のサイズが知りたいんです。
スクロールバーが出現している時は、width又はheightプロパティ - 約16ピクセルであり、
スクロールバーが出ていなければ、width又はheightプロパティほぼそのままの値となるのですが、
スクロールバーが出現しているかどうかを判定する方法が判らないんです。
358デフォルトの名無しさん:02/07/25 10:44
ASPもちょいと混ざるけど質問させてください。

標準EXE⇔ActiveXEXE⇔ASPファイル→クライアントPCへ表示

てなかんじで標準EXEで生成されるデータをVBで作成したActiveXEXEでメモリ受け渡し。
ASPでCreateObjectしてクライントにデータ渡しをしようとおもっています。

とりあえず今作成しているActiveXEXEでローカル環境内での複数プロセスでのメモリ
私は行えてるんですが、ASPを経由したときにメモリが全く取得できませぬ…

ASPやIISの設定を触ってみるもどうにもならず、メモリの共有を行うActiveXEXE自体を
作り直したほうがいいのかなぁ・・・と思って書込みした次第であります。
いろいろ調べてるうちにCreateFileMappingとかいうAPIを使えばできるとかできないとか
いう情報もでてきたのですが・・・

どなたかよろしくおねがいします。
>>357
スクロールバーが出現しているかどうかの判定はこれでいけると思います。

Public Const 水平スクロールバーに収まる値 as Long = "事前に調べた値(-16済)"

if 水平スクロールバーに収まる値 > 1個のセル.Width * 横セル数(項目数) then
msgbox "グリッドに収まってる"
else
msgbox "水平スクロールバー表示"
endif

訂正
×Public Const 水平スクロールバーに収まる値 as Long = "事前に調べた値(-16済)"
○Public Const 水平スクロールバーに収まる値 as Long = "事前に調べた値"

水平スクロールバーに収まる値 = グリッド.Width
361miki:02/07/25 13:04
VB4を使って、エクセルで選択しているシートをすべて印刷するにはどのようにコードを書いたらいいのでしょうか?
わかる方がいらしたら教えてください。よろしくお願いします。
>361
Excelで「マクロの記録」を使用し、実現したい操作をマクロ化する。
記録されたVBAコードを参考に、VBからExcelObjectを操作するコードを書く。

以上。
>>359
なるほど、自分で計算してスクロールバーが出現してるかどうか判断するわけですね。
水平・垂直のカラミで少々面倒ですが、とりあえずしその方法で実現できました。
ありがとうございました。
364358:02/07/25 14:56
自己レス

COMの構成の設定をちょっといじってみたら、現段階のActiveXEXEでも動作しました。
お手数おかけしました。
365ななし:02/07/25 14:58
ファイル(*.VBP、その他)の命名について質問です。
昔のDOS形式(8.3)に収める必要(LongFileNameになると、何らかの問題が発生する、
等)はありますか?
8文字以内に収めると、機能に対応した命名がむずかしく、わかりにくくなると思う
のですが、どうでしょうか?
古いOSで動かさない限り問題ないハズ
367ななし:02/07/25 16:08

>>366

NT4.0(SP3以上), 2000(SP2以上)限定なら問題ないでしょうか?
あとは、インストーラ作成ツール(グレープシティ製等)のバグ等で
問題が出ないかどうかですが・・・。
>>367
なぜインストーラーにソースファイルの
ファイル名が関係すると思うのか小一時間(略
369ななし:02/07/25 17:00
>>368

ソースファイルはともかく、実行ファイル名はふつう、プロジェクト(*VBP)
名と同名にするでしょ?
>>369
んなこたーない
それは単なるあなたの習慣でしょ
>>369
実行ファイル名と同じ名前の.vbpを作りますが何か?
372ななし:02/07/25 17:42
>>371

ですよね、ふつう。
わざわざ変更したら、作業ミスの原因になりかねないと思うんだけど。
人それぞれってことだね
>>372
老婆心ながら、余計な反感買うような書き方はしないほうがいいかと。
上にもそうじゃないって書いてる人いるし、なにが普通かは
その人によるでしょう。自分の基準だけで決めつけたような書き方は
しないほうがいいと思いますよ。
>>371追記
漏れは是が非でも8文字以内に抑えます。
376ななし:02/07/25 18:50
>>374
ご忠告感謝。m(_ _)m

人それぞれ、ということは、プロジェクトとしてのルールを決めないと、
統一性が取れなくなる恐れがある、ということですね。

>>375
参考になります。
>>423
それはVB6では無理。VB.NET買えよ。
>>423はどんな質問をしてくるのだろう。
379名無しさん:02/07/25 22:10
>378
ワラタ
380デフォルトの名無しさん:02/07/25 22:27
>>377,378
 思わず423を探したよ〜〜
 
381デフォルトの名無しさん:02/07/25 22:51
クラスって具体的にどういう時に使うものですか。
例を挙げて貰えると嬉しいです。

(つか、もしかして無くても困らないのでしょうか…)
>>381
まぁ、いいんじゃない?
VBのはあってもなくても大して変わらないだろうし。
>>352と同じことが起きて、困っているのですがどうにかして、解決できませんか?
>>383
で、付いたレスは読まない。死ぬ?
>>383 >>352
 with frmMain.rtfMain
  .SelStart=Len(.Text)
  .SelText="ぼけ"
end with
ってやればいいだけじゃないの?
あまりにも当たり前すぎるのでオイラ勘違いしてる?
>>382
VB以外でもクラス使ってませんね。
387352:02/07/26 02:09
>>385
ありがとうございます。なるほど、カーソル位置に挿入という考え方が
あったのですね。
助かりました。
388ななし:02/07/26 08:43
>>381
標準モジュールのみの実装に(生産性の)限界や、人生の不条理を感じたときに
使います。したがって、非効率な作業に何の疑問も感じないおめでたい人には
一生ご縁がありません。
>>388
>標準モジュールのみの実装に(生産性の)限界や、人生の不条理を感じたときに使います。

そして己の伴侶の無能さを再確認し、絶望へと。
>381
このへんでも読んでみるといい。
ttp://homepage1.nifty.com/CavalierLab/lab/vb/clsmdl/index.html
391デフォルトの名無しさん:02/07/26 09:39
VB6とJAVAを組み合わせてプログラムできますか?
JAVAで行ったイベントを、VB6のほうで受け取れるカンジで・・・。
392デフォルトの名無しさん:02/07/26 10:07
質問厨ですみません。
いま、VB6.0とWinXPを使っているのですが、
Graph32.ocxがうまくレジストリに登録できないのです。
登録にはRegsvr32を使いました。
Win98の時は問題無かったのですが...。

#Graph32.ocxなんてタコなコントロールを使っているのが悪いのは
#わかっているのです。ただ、他の人が書いたソースを修正している
#ので...。
>>392
・うまくレジストリに登録できない だけではなにが起きてるか分からない
・Graph32.ocx って何? どっかの製品? それとも標準でそんなのあったっけ?

どっちにしてももう少し詳しく書いたほうがいいと思われ。
勘では、関連DLLかなにかが不足してるんだと思うけども。
Graph32.ocx…
Copyright _ 1994, 1995 Bits Per Second Ltd

(´-`).。oO(XPで使えるのかなぁ)
395デフォルトの名無しさん:02/07/26 10:52
>>393
どうもLoadLibraryに失敗しているようです。そう言う意味で関連DLLが
不足しているというのは当たっていると思います。
とりあえず、バイナリでのぞいてなにが足りないのかチェックしてみます...。

Graph.ocxは昔のVBとの互換用にいまでもVBのメディアには収録されてい
ます。新規に使うのはお勧めしないとMSは言っております...。

とりあえず力づくでインストールする方法も試してみるとして、
「こうやってインストールしたら使えたよ」ってな方おられませんかね。

>>394
そうですよね...。個人的にはこんなocx使いたくないんですがね...。
396デフォルトの名無しさん:02/07/26 11:16
VB6→ADO接続→Accessの勉強をしています。
リレーショナルデータベースの更新の仕方について教えて頂きたいのですが、
例)
→tbl社員
 コード 支社コード 部署コード 氏名
 01   01      01      モナー
 02   01      02      モララー
 03   01      03      ギコ
 04   02      03      しぃ
→tbl支社
 支社コード 支社
 01      東京
 02      大阪
 03      神奈川
→tbl部署
 部署コード 部署
 01      総務課
 02      経理課
 03      庶務課
安易ですがこうなっているとして、それぞれ対応しているコードにリレーションが
はってあるとします。ここに新しく「大阪/庶務課/シラネーヨ」が入社した時のtbl社員の
更新の仕方が分からないのです。
ユーザから「大阪」「庶務課」「シラネーヨ」と入力を受けたら、RecordSetで一つ一つの
テーブルから「大阪」に対応したコードを確認→tbl社員を更新としていくのですか?
テーブル数が増えると手間がかかって仕方ない気がして、何か正しい方法があるのでは
と思った次第です。
長文スマソです。よろしくおながいします。
397392:02/07/26 11:32
というわけで、バイナリを覗いてgsw32.exeとgswdll.dllが必要なことがわかりました。
と思ったら、英語のReadme.txtにこの2つもいっしょにコピーしとけ!と書いてありました。

まとめると、

1.graph32.ocx, gsw32.exe, gswdll.dllをしかるべきフォルダにコピー
2.regsvr32 で graph32.ocxを登録
3.ウマー

でした。

いろいろアドバイスありがとうございます。

#インストーラもチェックしとかんといかんな...。
>>396
クエリーを使え
>>396
つーかコンボボックスか何かで選ばれた時点で
そのもの(たとえば大阪)のコードは取得できるはずでしょ
そのように組むのが吉
400396:02/07/26 16:29
>>398-399
ああ、なるほど。
やはり、一つずつコードを取得するのが正解でしたか(面倒)。
>>399さんがおっしゃられる様にコンボ選択時に取得するっていうのは
思いつきませんでした。グローバル変数ってヤシですよね。
やってみます。ありがとうございました。
>>400
コンボで選択時に取得までは合ってるけど、
それとグローバル変数は全然関係ないぞ!!
まあ、がんがれ
402396:02/07/26 16:53
>>401
Privateの変数にでも格納しておくのではないのでしょうか。
グローバル変数ってこの事じゃないのですか…ああ、僕、恥ずかしいなぁ。
すみません…。調べます。
コンボ選択時に取得・・・ほんとにみんなそうやってんの?
選択するたびにいちいちDB読みに行くのか。
ユーザーにストレス溜まりそうって思うの俺だけ?
>>403
>>399だけだろ。
405デフォルトの名無しさん:02/07/26 20:34
>>403
 同意です。
 私達の場合はフォームのロード時にコンボボックスを作成するのですが、
 そのときに、コンボボックスのItemdataプロパティにマスタのコードを
 格納しておいて参照します。
 これだと選択→DB検索なんて事をしなくていいですよね!
 
ごめん。寒気がした。
>>406 どういう意味?
まあAccessMDBですからありなんじゃないでしょうか。
409デフォルトの名無しさん:02/07/27 01:23
桁数指定ってどうやるんですか?
例えば99っていう数値を3桁指定で099って表示させたいんですが。
410デフォルトの名無しさん:02/07/27 01:27
>>409
 FORMAT関数です
411デフォルトの名無しさん:02/07/27 01:34
>>410
ごめんなさい、調べたんですが使い方がわかりません(´Д`;)
教えてください
412eibu ◆c61exE6E :02/07/27 01:48
>>396
データベースの更新にはエラーチェックが不可欠。
たとえば大阪を大坂と入力されていたらtbl支社にアクセスして
大坂という支社が存在するのか、間違いなのかを確認する訳だな。
だから手間の事を言ったらデータベースプログラムは書けない。
>399が言うようにコンボなり、リストなりにしておけば
エラートラップのコード量の節約になる。

しかし>400で変数って書いてるけど、コンボの表示に
02:大阪
としといてLeft関数で前2桁を取った方が簡単だぞ。
413デフォルトの名無しさん:02/07/27 02:07
>>411
例えば、

Dim strWord as string
strWord = Format("99",000)

strWordの中身は、"099"になっているはずです
414デフォルトの名無しさん:02/07/27 02:11
VBでDOSコマンドもどき(例、dirやtype)はどうやって作るの?
既存DOSプロンプトで、aaaaa.exeってやると出力がダイアログで
なく既存プロントに文字列で表示されるようにしたいのだが。
参考になるトコあったら教えてください。
415デフォルトの名無しさん:02/07/27 02:53
おい、コラぁ!VBって簡単なんだから414の質問に答えろ!
>>414 >>415
できねぇよ。
VCで作れ。
417デフォルトの名無しさん:02/07/27 04:34
>>413
× Format("99",000)
○ Format(99,"000")

>>414
APIを使って標準出力に出力するようなコードを書いてから、
EDITBIN.EXEでSUBSYSTEMをCONSOLEにすればいい。
もしくはリンカに細工をする。
>>414-415
>>418も言ってるがリンカに細工するのが楽。
色々弄れて楽しい。最小で5KBのexeも作れたりする。
ADOのprepareプロパティーでSQLステートメントをプリコンパイルすることで
実行速度を稼ごうと思っていますが、プリコンパイルされたSQLのWhere区を
書き換えたりとか出来ますか?
(JDBCだとことも無くやってのけるようですけど)
421デフォルトの名無しさん:02/07/27 10:09
>418、419
ありがとう!調べているが意味がさっぱりわからん。
とりあえずこれから勉強する。
422デフォルトの名無しさん:02/07/27 11:28
VBのコントロールで、多角形を描くコントロールは
ありますか?
>>422
Shapeコントロール。四角形という多角形が描けるぞ。
三角形以下や五角形以上はサポートしていないので注意が必要だ。

要はPictureBoxで自分で描け。
424デフォルトの名無しさん:02/07/27 19:04
ツリービューの背景色を変えたいのですが、プロパティーないし
インターネットで検索してみましたがそれらしいのが
ありませんでした。アドバイスおねがいします〜m(_ _)m
>>420
そんなレベルの人間はここにいない。
ADOって言われてもコントロールのことだと思ってるヤツが半分いるぜ、きっと。

>>424
http://www.vbthunder.com/source/treeview/tvbkgnd.htm
これでわからね〜なら下の買いな
http://www.grapecity.com/Japan/support/database/P1_80.htm
>>424
サブクラス化。
427デフォルトの名無しさん:02/07/27 20:09
>>425
流石です、ありがとうございました。ソースおってみます。(^^)
ありがとうございました。m(_ _)m
>>420
よく知らんけどParametersを使えばいいんじゃないの?
MSDNの「ADOの高度な機能」に次のように書いてあるよ。

> Preparedプロパティは、複数のパラメータ セットを使って実行を行うときにも使用できます。
> アプリケーションは、パラメータ セットが変わるたびにクエリー文字列を再構築するのではなく、
> 実行のたびに異なるパラメータ セットを指定することで、パラメータ化されたクエリー文字列を
> 何度も実行することができます。ただし、パラメータ化されたクエリー文字列を1回しか
> 実行しないのであれば、クエリー文字列を準備する必要はありません。

>>425
自分のことを言っているの? よくいるよね。自分が何も知らないから
他人も知らないと勘違いして、しかも偉そうにしている人。レスするなら何かかけよ。
429ななし:02/07/27 20:31
>>426

サブクラス化、とか、SendMessageだけでは、答えになっていない罠。
どのメッセージをパクって、どう弄るのか、どのメッセージを送るのか、がわからないと、
調べようがない罠。

横ツッコミ、失礼。m(_ _)m
>>428
なんとな〜く、それっぽいんですが絶望的なほどサンプルも資料も
ないので、光が見えてきません・・・。

CommandオブジェクトにあらかじめセットしておくSQLの
パラメータ入力を受けたい部分は、どう記述しておくのかが、
全然わからない、調べても見つからない、本当に出来るのか?オイ
って感じです。

素直にストアドプロシージャ使えってことなんですかね。

とりあえず検索のキーワードが増えました。有難うございます。
>>430
つーか、MSDNみた? サンプルもちゃんとのってるよ。
432デフォルトの名無しさん:02/07/28 09:44
>>431
MSDNは読みました。乗ってるサンプルは、「何度も全く同じSQLを投げる場合」の
実行時間の測定をする方法で、Where区など、若干内容が変わる方法については
記述がありませんでした(TДT)
>>432
実はJDBCでのやり方も知らない?
434デフォルトの名無しさん:02/07/28 12:59
>>433
JDBCと同じ方法でいけるんですか?!!
>>432
不思議だなぁ。なんでちゃんと記述してあるのに気づかないんだろう?
プログラマの適性ないんじゃない。
436デフォルトの名無しさん:02/07/28 22:41
(Excelのユーザフォームのタブインデックス変更ウィザードにあったと思うのですが)
リストボックス(グリッドかもしれない)の順番をドラッグで変えるやり方が
知りたいです。例えばリスト3番目を掴み、4番目と5番目の間にドロップすると
そのアイテムが4番目にくる、みたいな。
アイテムを掴む(選択する)ことは容易ですが、落とした位置に入れるというのが
出来ません。
何のコントロールを使うかも含めておながいします。

あ、環境はVB6です。
437デフォルトの名無しさん:02/07/28 23:14
>>436
コントロールはリストボックスだけ。
ドラッグ&ドロップは自前コードで書く。
そんなにむずかしくない。
これが書けないようなら、VBあきらめたほうがいい。
>>437
て、手厳しいですね。まぁ夏ですしね。
分かりますた。頑張ってみます。
439436:02/07/29 10:17
申し訳ないのですが、どなたかヒントだけくださいませんか?
Dragした所の「順番」(リストの4番目など)を取得することは出来るのでしょうか。
もしかして、MouseUpイベントなどのX,Yみたいな座標を使うのですか?
座標から順番を割り出すなんて初級レベルの僕に出来るのかな…。
440436:02/07/29 10:23
sageちゃったのでageさせてもらいます。
441デフォルトの名無しさん:02/07/29 10:28
ドロップダウソリストにしたコンボボックスのアイテムをコード上から
変えるにはどうしたら良いですか。.Textが読みとり専用になってしまって。
442デフォルトの名無しさん:02/07/29 11:43
a = 0
b = 0

If a = b = 0 then
Label1.caption = Zero
Else
Lavel1.caption = Value
End if

と、した場合、「Value」が表示されて、aやbに値を入力した場合は「Zero」が表示されます。
「a = b = 0」って表現の仕方が悪いからだと思うのですが・・・どうしてでしょう?
よろしくおねがいします。
ちょいと前のレスに書いてあった気がするが
a = b = 0 は b = 0 が a に格納される(b=0なので"True")
0はFalse(だったよね(;´Д`))なので上記のとおりコードが実行される。
If a = 0 and b= 0 Then
とか
If a = 0 Then If b = 0 Then
とやるべし。
444デフォルトの名無しさん:02/07/29 12:02
>>443

>>116-121に書いてありましたね、すいませんでした。
にもかかわらず丁寧に解説していただき、ありがとうございます。
445ななし:02/07/29 12:59
>>443

> a = b = 0 は b = 0 が a に格納される(b=0なので"True")

その書き方は、可読性に難があるので、私なら、

a = (b = 0)

としますが。
446デフォルトの名無しさん:02/07/29 13:22
ていうかBooleanとIntegerを混ぜて使うなよ
話はそこからだ
447デフォルトの名無しさん:02/07/29 13:29
0と0以外という使い方で普通に混ぜますが?
Byte型で。
448デフォルトの名無しさん:02/07/29 15:49
タスクトレイに格納させたあと、右クリックでポップアップメニューを出るようにしたのですが、
ポップアップメニューを出すと、メニュー内でのクリックでしかメニューが消えません。
(メニューを出した後、デスクトップなどをクリックしてもメニューが出たまま)
どうやったらメニュー内クリック以外で消せるでしょうか?

タスクトレイへの格納は「ブイビーラボ」のサンプルを使用させて頂いてます。
ttp://www.remus.dti.ne.jp/~y-mac/index.html

検索してみて下記の記事を見つけましたが、自分には理解できませんでした。
ttp://www.users.gr.jp/ml/archive/vb/3045.asp
ttp://www.users.gr.jp/ml/archive/vb/3049.asp
449デフォルトの名無しさん:02/07/29 16:01
質問です。
現在パールで掲示板(日記)を作って稼動させているのですが
vbの方から日記に書き込みをすることは可能でしょうか?

通常通り送信フォームから送信してもいいのですが
日記なので出来れば送信フォームは無しの方向で行きたいと思っているのでお願いします。

もし出来るようであれば具体的にどのような事について勉強すれば出来るようになるか教えていただけると助かります。
450デフォルトの名無しさん:02/07/29 17:13
>>447
そんなクセつけちゃ駄目だい
451デフォルトの名無しさん:02/07/29 17:19
文字列を実行するようなプログラムを書きたいのですが、うまくいきません。
気持ちとしては、

dim a as long

dim mystring as string

mystring = "a = 2"

という感じの気持ちでぜひmystringを実行したいのですが、どなたか方法をご存知のかたはいませんでしょうか。


もしくは、stringとしてのaを何らかの方法で変数として値を与えるというのでも良いのですが。
できれば、配列にも対応していればよりベターです。

よろしくお願いします。
452デフォルトの名無しさん:02/07/29 17:47
>>451
何をやりたいのか分からない。
特に「文字列を実行する」が謎。
454448:02/07/29 17:52
>>451
上に同じく・・・

もしかしてこういうこと?

Private Sub Command1_Click()
Dim a As Long
Dim b As Long

x = mystring(a, 3)
x = mystring(b, 5)

Text1.Text = a & "," & b

End Sub

Public Function mystring(ByRef a As Long, ByRef b As Long)
a = b

End Function
>>449
perlで掲示板ってことはWEBだよね。
あんたWEBの仕組みわかってるの?
ひょっとしてパクッたソース動かしただけでしょ。だったら作ったとかいうな。
456デフォルトの名無しさん:02/07/29 19:05
>>435
結局やりたいことはMSDNで見つからなかったけど、試行錯誤の上出来るようになりました。
皆さんどうもです。
>>449
winsock
>>451
452-454には難しすぎて理解できなかったようだな。さすがVBスレ
VBScriptならExecute/Eval
VBなら不可能。
459436=439:02/07/29 19:14
>>436=>>439です。
誰か、こんな危篤な僕に救いの手をさしのべてはもらえませんか…。
>>437さん曰く「そんなむずかしくない」そうですが、全く糸口がつかめません…。
>>459
流し読みだが
そのリストボックスの先頭が何番目かとひとつのアイテムの高さがわかれば
位置がわかるよね。簡単ジャン
あ!439に書いてあった。やっぱり流し読みはやめよう
462436=439:02/07/29 19:27
>>460
レスありがとうございます。
先頭の割り出し方が全然分からないのです。
スクロールされると先頭が変わるってのは分かるんですが…。
位置はピクセル計ってみます。
>>462
TopIndexっていうプロパティがあるじゃん
464436=439:02/07/29 19:34
>>463
ホントだ!
あとはピクセルを計れば…。
頑張ってみます!ありがとうです。
>>464
アイテムの高さも取得できるんだがね。ちょっと今サンプルがないけど
466436=439:02/07/29 19:39
>>465
プロパティで、っすか?
ちょっと探してみます。
>>466
それはプロパティじゃなかった気がしないでもない
468436=439:02/07/29 19:44
>>466
うう…。
APIなんかの知識はまったくありません…。
素直にピクセル計った方が良いでしょうか。
>>468
とりあえず、はかっといたら
470436=439:02/07/29 20:02
はい。はかります。ありがとうございました。
>>470
わかったTextHeightだ。APIじゃないよ
472デフォルトの名無しさん:02/07/29 20:45
>>458

451です。私の気持ちを理解していただいてありがとうございました!?
なんか、うわさによるとEvaluateというのがExcel4(?)時代にあったらしいのですが、(私の実験によると)もはやexcel2000ではdim等で定義した変数には使えないようです。
後は、Run で別のサブモジュールを呼ぶということも考えたのですが、あんまりうまくいかなかったので。(runの場合は、引数を許さないのでしょうか?)

たとえば、Excelのワークシートに変数名を書き込んだ状態でマクロを流せばその横のセルに吐き出すみたいな感じのことができたらきれいなプログラムが書けるかなぁなどと思った次第なので質問させていただきました。
では。
>>472
で、何がしたいの?
で、Evaluateじゃ不満なのか?
>>472
適度に改行しろよ。
>>472
何がしたいのか早く言え!
477ななし:02/07/29 22:39
>>475

"_" 使って改行してますが、何か?(違
>>477
あんまり面白くない。
>>478
いや、全然面白くない。
>>479
これっぽっちも面白くない。やれやれだぜ。
481デフォルトの名無しさん:02/07/30 00:24
¥n
482デフォルトの名無しさん :02/07/30 00:27
>>480
477は本来、面白さを含んだものじゃないだろう?
悲惨な477と482が居るスレはここですか?
484デフォルトの名無しさん:02/07/30 01:11
VBから、perl機能を使いたいのですが出来るので使用か?

perlから、WIN32APIが使用できるようなので、できそうかな?
と調べてみたのですが、よくわからないので、質問してみました。
485デフォルトの名無しさん:02/07/30 01:19
>>484
どういう考えからそんな発想に!?
486デフォルトの名無しさん:02/07/30 01:21
>>perlから、WIN32APIが使用できるようなので、できそうかな?
他の人に言うなよ。お前のためだ。

shellexecで*****.plを実行
487484:02/07/30 01:30
そんなに遅れぎみか?俺の発想。
>shellexecで*****.plを実行
ありがとう。



>>484
VS.NET買ってから、Perl.NET買えばいいよ
なんでWin32APIがPerlで使えることがVBでperlの機能を使えることになるんだ。
perlでVBの機能が使えるってならわかるが
インターネットコントロール使ってブラウザの作成した場合、リンク先のアドレスはどうやって表示するんですか?
491デフォルトの名無しさん:02/07/30 10:31
472です。

適度に改行しないといけないことを知りませんでした。
ごめんなさい。

やりたいことを具体的に書くために例をあげます。

(例)
VBA内で変数を以下のように定義します。

Dim ZZZ1 as long
Dim ZZZ2 as long
………
Dim ZZZ1000 as long

何でもいいのですが、せっかくなので数字を与えてあげます。
ZZZ1=1
ZZZ2=2
………
ZZZ1000=1000

そこでワークシートのA1にZZZmと文字列で書くと
ワークシートのB1にm (=ZZZmにセットされた値)が返されるような
マクロが書きたいのですが。

ちなみに(上とは別件ですが)以下のようなモジュールはうまく流れてくれないのですが、
やはりEvaluateの使い方が間違っているのでしょうか。
Sub test()

Dim ZZZ As Long

Evaluate("ZZZ") = 5

Cells(1, 1) = ZZZ


End Sub
>>491
Excel の質問だったんか?板違いだろがヴォゲ!

ZZZm -> m ならなんとでもできるぞ(W
=SUBSTITUTE(A1,"ZZZ","")
=REPLACE(A1,1,3,"")
=MID(A1,4,LEN(A1)-3)
・・・

さもなくば名前の定義でも使え!
>>491
暑いからってそんなに声を荒げなくてもよかろう。
これまでの流れからして、VBAに関しても識者から
返答が得られてるようだしね。
貴方もきちんと返答してるようだし。この照れ屋さんめー。

もっとマターリしませう。
494デフォルトの名無しさん:02/07/30 11:24
変数名を文字列で与えて、その名前の変数を参照する
とか、そういう話でしょ?

これ、どうやるんですか?知りたい。
495494:02/07/30 11:39
こういうのですか?

Sub SriptingDictionaryTest()
Dim Dic As Object

Set Dic = CreateObject("Scripting.Dictionary")
Dic.Add "ZZZ1", "1"
Dic.Add "ZZZ2", "2"
' ....
Dic.Add "ZZZ1000", "1000"

Cells(1, 2).Value = Dic.Item(Cells(1, 1))
End Sub

VB 連想配列で検索しました。
496494:02/07/30 11:54
>>495
訂正
Sub ScriptingDictionaryTest()

Cells(1, 2).Value = Dic.Item(Cells(1, 1).Value)
497ななし:02/07/30 12:51
>>491
変数名が宇宙語で定義されているため、凡人には解毒不能です。
498フルーツチンポ:02/07/30 13:36
VBで女の子にモテモテになるにはどうすればいいですか?

よろしくお願いします。
>>498
それなりにカコイイ動作をするゲームを作る。

保証はしない。
>>498
ヴァーチャルボーイを装着して電車にでものってなさい。
>>491
みんなが「何をやりたいの」って聞いてるのは手段じゃなく目的を聞いてるんだよ。
その手段を実現することが目的?んなわけないよね。
目的がわかんなきゃEvaluateを利用できるかどうかもわからん。
とりあえずEvaluateの使用法は間違ってる
>>498
VBを知らないことが一番だ。
503デフォルトの名無しさん:02/07/30 14:41
教えてください。
今ADOでSQLServer2000を使った仕事をしているのですが、
INDEXとSEEKがうまくいきません。
実行時エラー3251
現在のプロバイダはIndex機能に必要なインターフェイスをサポートしていません。
と出てしまいます。
ソースはこんな感じなのですが、何がいけないのでしょうか。

Dim MyRs As ADODB.Recordset
Dim SetFlg%, i&
Dim SQLKEY As String

Set MyRs = New ADODB.Recordset

SQLKEY = "SELECT * from T_Communication"
MyRs.Open SQLKEY, PobjSQLSession, adOpenKeyset, , adCmdText
MyRs.Index = "PlimaryKey"
MyRs.Seek Array(SetsubiType, SetsubiCd), adSeekFirstEQ
>>498
フルーツチンポでは不可能じゃよ
>498
マヂレスすると、VBAでExcelやWordのマクロを極めなさい。
事務系の職場ではモテモテでしょう。たぶん。
506koyukoto:02/07/30 15:03
>174
 カリフ・ムスタァスィムがフレグ汗に処刑されたのは間違いないのですが、
これはムスタァスィムが頑迷に抵抗したためだそうで、
その処刑にムスリム側の一部に神罰を恐れる声があったようです。

これに対してフレグの西征軍にクーヒスタン占領後従軍していた
当代イスラム世界最高の大碩学ナスィールッディーン・トゥースィーが
正統カリフ、ウスマーンやアリーが殺害されたときも
天変地異は一切起こらなかったことを例に挙げてカリフの処刑に何ら問題ないと解答しています。

ただカリフの処刑は皇帝モンケの聖勅(ヤルリグ)に基づいたものであったかどうかは
確認していないのでご存じの方はお教えいただきたいのですが・・・

ちなみに『集史』の日本語訳は「フレグ・ハン紀」と「アバカ・ハン紀」が
矢島洋一先生のHPでみることが出来ます。ご参照のほどを。↓↓

http://www.bun.kyoto-u.ac.jp/~yyajima/index.html
507koyukoto:02/07/30 15:04
あっ。。。。。
>>506
壮大な誤爆?
>>503
Seekって使ったこと無い。
全件引っ張ってきてSeekで探すより
最初から条件に合うものだけ引っ張ってきた方が速くないか?

という話は置いといて、エラーメッセージ内容からすれば
使ってるOLE DBプロバイダがIndex機能に必要なインターフェイスを
サポートしているかどうかを調べるのが先だと思うがどうよ?
>>505
尊敬はされるかも知れんがモテはしない。
人によっては逆にキモがられる。
いいように使われる=モテるって意味なら話は別だが
511472:02/07/30 15:13
バカバッカリ
>>509
レスありがとうございます。
Supportsメソッドで調べたところFalseでした。
サポートしてないと言うことですよね。

Seek使わない方が良いのかな。というか使えないのか。

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

if cell(A1) = "ZZZ1" then cell(B1) = ZZZ1
if cell(A1) = "ZZZ2" then cell(B1) = ZZZ2
          :
          :
          :

でよいのでは?
>>513
それを可変的にやるにはどうしたら?ってことなんじゃない?
515デフォルトの名無しさん:02/07/30 16:48
VBAで(VBでも可),DLLから関数或いはサブルーチンを呼び出したいんだけど
,public declare 〜・・・だと,どうしてもDLLの名前を入れるところは,
固定文字列でなければならない.そこで,C言語でDLLを呼び出すときに使う
LoadLibraryを使いたいんだけど,うまくいかない.誰か教えてくださーぁい!
(願わくは)簡単な例を示して欲しいんだけど・・・
516ななし:02/07/30 16:52
>>509
私も使ったことはないので、憶測ですが、

(1) 全体のレコード件数が比較的少ない(数千〜1万件程度のオーダー)
(2) DBがJetである。
(3) SQLで問い合せると、条件が複雑すぎて、パフォーマンスが低下。

といった特殊な状況なら、Seekメソッドが威力を発揮するかもしれない。
>>511
不明瞭な質問に明確な答えを期待されてもねえ。
せめて日本語ぐらいちゃんと書けってこった。
ましてそれが糞仕様だとまともに答える気も失せる。
その結果が>>492なんだろうな。
>>514
可変といっても変数は可変じゃないからさー
519デフォルトの名無しさん:02/07/30 18:28
VBには夢がある
520ななし:02/07/30 18:30
>>519
どこが?
ネタにしても、つまらなすぎ。(30点)
521デフォルトの名無しさん:02/07/30 20:25
VBとVBAって何が違うんですか?
調べたんですが、違いがよく分かりません。
よろしくお願いします。
0〜99999999のある数値が、8桁日付(yyyymmdd)として有効かどうか判定するには
どう書くのが良いでしょうか。ちなみに今はこんな風に書いてます(aaa=ある数値)。
If Len(CStr(aaa)) = 8 And IsDate(Left$(aaa, 4) & "/" & Mid$(aaa, 5, 2) & "/" & Right$(aaa, 2)) Then
もうちょっとシンプルに書けないかなーと思って。よろしくお願いします。
>>522
それを関数にしとけばよし
Ifの条件にAnd入れるくらいならIf二つ使え
525522:02/07/30 21:27
>>523 >>524
ありがとうございます。
もとはIF2つです。ここでの質問用に1つにしてみました。
そのほうが見やすいかな、と思って。余計なことしました。
こんな書き方もあるよ、っていうのは無いでしょうか?
>>511
バカガッカリだったらかわいかったのに。

>>498
VB売ってまずは金を作れ。
次それを漏れに渡せ。そうすりゃ、きみをモテモテにしちゃろ。
>>526
100万でモテモテにしてくれる?
528デフォルトの名無しさん:02/07/30 23:16
ADOのRecordsetで取得したデータをサブルーチンに渡したいのですが
サブルーチン側の引数の型をどうして良いか分かりません。

例えば、「Recordset!社員名」を渡したい時、サブルーチン側の
Private Sub Test(RecordsetData as ○○○)
↑○の所を何にすりゃあ良いのでしょうか。

おながいします。
>>528
variant
530528:02/07/30 23:28
>>529
tnksです。
Recordsetごと渡して、Recordset側に物を入れたいのですが…。

Private Sub Test(RecordsetData as ○○○)
RecordsetData = "Koizumi"

みたいに。無理言ってますか。
531デフォルトの名無しさん:02/07/31 00:13
Objectじゃだめでしょうか?
普通Recordsetだろ。
ADOを参照設定してるのならADODB.Recordset
でなければObject
つーかそのレコードセット宣言時と同じ型
534eibu ◆c61exE6E :02/07/31 00:54
>>522
IsDate(Format(aaa,"####/##/##"))

>>530
無理言ってないよ。
しかしコードの方にムリがありそうだな。
535デフォルトの名無しさん:02/07/31 06:15
プログラムでキーボードを打ったような操作をするにはどうしたらいいんでしょうか?
SendKeys
537デフォルトの名無しさん:02/07/31 07:05
Aだったらsendkeys(a)でOKなんでしょうか?
ちなみにnumpadのときはどうすればいいんでしょうか?
ヘルプくらい嫁
>530
Recordsetを渡しゃいいじゃん。
Private Sub Test(RecordsetData as Recordset)
って。
540デフォルトの名無しさん:02/07/31 08:41
最近VBを始めた初心者なんですが、
VSの統合環境がなじめず、使い慣れたエディターを使いたいのですが、
状況は、エディターでソースを保存しても、VSがソースファイルが更新された事を
認識してくれず、変更が反映されず困ってます。
プロジェクトの保存と読み込み繰り返せば可能ですが、
もっとよい方法無いでしょうか。
541522:02/07/31 09:44
>>534 :eibu
ありがとうございます!
Format$(aaa,"yyyy/mm/dd"))とかやってエラー食らってたんですよ。アホだー
542ななし:02/07/31 10:43
>>522

Public Function IsDateEx(ByVal strArg As String) As Boolean
IsDateEx = IsDate(Format$(strArg,"@@@@/@@/@@"))
End Function

(>>534とほぼ同内容)


>>535-536
キーコード送信に頼る実装は問題が多い。
SendKeysには、かの有名なNumLock問題があるし、keybd_event (API)を使った
としても、ターゲットのWindowがActiveになっていなければ、意図とは別のWindow
にキーコードが送信されてしまう恐れがある。

という訳で、別の実装を検討した方が無難です。
543522:02/07/31 13:10
>>542 ありがとうございます。
こちらは文字列&文字数固定ですね。
試してみたのですがIsDateはスペースを含んでてもTrue返すんですね。
これでFalseが返ってくればLen(CStr(aaa)) = 8 も要らなくなる!と思ったのに残念!
Formatが任意の文字で文字数固定できればIsDateでFalse返せるのになー。
>>543
んな小さいことでなやんでないで次に行け
バイナリファイルについての質問です。
ファイルを削除せずに中身をput,get,inputBなどを使っていじる事によって
そのファイルのファイルサイズを減らす事は出来ますか?
それともバイナリファイルを小さくするには必要な部分だけバイト配列などで
一度格納してファイルを削除し、同じファイル名で書き出すんでしょうか?
546デフォルトの名無しさん:02/07/31 13:38
Validateイベントを使って入力チェックをしているのですが、
Labelをクリックしたときも、フォーカスは移動しないにもかかわらず、
Validateイベントが発生してしまいます。
CausesValidateを指定したコントロールのみでイベントを発生させる方法か、
LabelがクリックされたことによるValidateだと見分ける方法はないでしょうか?

タッチパネルでLabelClick時にKeyCodeを送信しているので、
値を入力してる最中にValidateが発生して難儀しております。
547:02/07/31 13:45
>>545
APIのSetEndOfFileを使うしかないと思います。

# APIを使わずにやる方法があれば私も知りたい。
548545:02/07/31 14:27
>>547
あら、そんなAPIがあったのか・・・
ファイル関連のAPIで何か便利そうなものがあるかもしれないので探します。
レスサンキュー。
549デフォルトの名無しさん:02/07/31 14:56
フォームを開く時にデータベースからコンボボックスにデータを流し込み、
入力できないようにStyleをVbComboDrop-DownListにしてるのですが、
フォームが開ききった時にそのコンボボックスのTextが空っぽなのが
気になります。初めからTextに1番目の項目を選択させておくには
どうしたら良いのでしょうか。
550デフォルトの名無しさん:02/07/31 15:08
メインフレームにファイル転送(エクスポート)する命令ってない?
>>550
ftpならあるよ
>>550
メインフレームて一口に言ってもたくさん種類があるが...
553デフォルトの名無しさん:02/07/31 15:49
>>550
サンクス

6680エミュレータのインポート・エクスポートってFtp処理なの?
554553:02/07/31 15:53
富士通GS-8400&GS-8900だけど…
555デフォルトの名無しさん:02/07/31 16:16
>549
コンボボックスのListIndexプロパティに表示したい項目のインデックスを代入すれ。
>>555
できますた!ありがとう!
>>546
CausesValidate プロパティを持つ他のコントロールで代用すれば
つーかそもそも Validate イベントなんかに頼らんほうがいいかと

どうしてもやりたけりゃフックすれば
Validate の直前に Label だけ WM_*BUTTONDOWN がとれるっしょ
>>546
タッチパネル部を別フォームで作成する。
559546:02/07/31 19:14
>>557
LostFocus時にチェックするよりは、Validateを使ったほうが
スマートかなあと思いまして。
WM_LBUTTONDOWNがValidateの前に取得できるか試してみます。

>>558
一度別フォームで作ったのですが、TextBoxのLostFocusイベントが
発生してしまったので、Labelにしました。
そしたら今度はValidateが、、、

タッチパネルをソフトウェアキーボード風にしてしまったのが間違いだったか。
ありがとうございます。もう少し試してみます。
560デフォルトの名無しさん:02/07/31 21:22
VBでDataEnvironmentを使って、
フォームにデータを表示させたのですが、
テキストボックスに値を入力するだけで
Updateを呼んでいないのに値が更新されてしまうみたいなんです。
Updateを呼ばないと更新されなくするにはどうすればいいのでしょうか。
561デフォルトの名無しさん:02/08/01 09:52
VB6のディストリヴューションウィザードで
MSXML4.DLLを含めたら、セットアップ時に登録できないって
エラーが出てしまったんだが、ほかに何のファイルを登録
すればいいんだろう。ご存知の方、よろしくおねがいします。
がいしゅつ(既出)?

VB.NETは今までとずいぶん違うらしいよ。
563デフォルトの名無しさん:02/08/01 15:34
未だに「がいしゅつ」という語を使っているのは2ch初心者です。
最近知った言葉なので使ってみたく、自慢したくて仕方が無いようです。
そういう人間に有意な相関として知ったかぶりの厨房が挙げられます。
つまり「がいしゅつ」というという語を使っている人間は
厨房です。
わざわざカッコ付で既出と書いてるのも
いかにも厨房らしくて笑えます。
564フー:02/08/01 15:41
未だに「ちゅうぼう」という語を使っているのは2ch初心者です。
最近知った言葉なので使ってみたく、他人にそれを知っていることを
自慢したくて仕方が無いようです。
そういう人間に有意な相関として知ったかぶりのアホが挙げられます。
つまり「ちゅうぼう」というという語を使っている人間は
アホです。
わざわざsageないのも
いかにも低能らしくて笑えます。
565デフォルトの名無しさん:02/08/01 15:45
コピペは低脳な証拠だにょ。そんな感じでは明らかにあなたがあほですねん。
566フルーツチンポ:02/08/01 15:46
とにかくスレと関係ないことを話題にしている奴が全員アホです。
567フルーツチンポ:02/08/01 15:47
あ、でもどちらかといえば奴らよりも俺の方が世界一のアホです。


568デフォルトの名無しさん:02/08/01 16:09
>>567
激しく同意
569デフォルトの名無しさん:02/08/01 17:03
お聞きしたいのですが、コンボボックスでドロップダウンしたときに、リスト部だけ
幅を広げたいのですが、可能でしょうか?
できるようであればご教授願います。
570デフォルトの名無しさん:02/08/01 17:20
>>569
未だに「コンボボックス」という語を使っているのはVB初心者です。
最近知った言葉なので使ってみたく、自慢したくて仕方が無いようです。
そういう人間に有意な相関として知ったかぶりの厨房が挙げられます。
つまり「コンボボックス」というという語を使っている人間は
厨房です。
いかにも厨房らしくて笑えます。
>>570
面白くない。
>>569
wParam にピクセルで幅を指定します
下のサンプルは 500 になってます

Private Const CB_SETDROPPEDWIDTH = &H160
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, lParam As Any) As Long

Private Sub Form_Load()

SendMessage Combo1.hWnd, CB_SETDROPPEDWIDTH, 500, ByVal 0

End Sub
573VB厨:02/08/01 17:26
>>570
じゃーなんて言うんですヵ?先生
574デフォルトの名無しさん:02/08/01 17:43
>>572
ありがとうございます。ここで引っかかっていたので大変助かりました。
575デフォルトの名無しさん:02/08/01 18:24
VBはプロレルみたいだな(藁
576デフォルトの名無しさん:02/08/01 19:03
ACCESS内にクエリを作成したのですが、
そのクエリをVBから実行させることはできるのでしょうか?
たとえばクエリ名を指定するだけなど、

のクエリ名をopenstringにしても実行されず
”PROCEDURE クエリ名”を使うのかなとおもたけどちがったので、

あればその方法を教えてください
577デフォルトの名無しさん:02/08/01 19:04
ミスしました。
のクエリ名をopenstring −> クエリ名をopenstring
578デフォルトの名無しさん:02/08/01 19:09
Windows の音量を弄るには、どうすればいいですか?
579576:02/08/01 19:21
すいません。
openするときに以下のどれかを指定してrecordsorceにクエリ名を入れると実行されないでしょうか
MSDE引用
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
定数 説明
adCmdText プロバイダが Source をコマンド文字列による定義として評価することを指定します。
adCmdTable ADO が Source に名前を付けられたテーブルからすべての行を返す SQL クエリを生成することを指定します。
adCmdTableDirect プロバイダが Source に名前を付けられたテーブルからすべての行を返すことを指定します。
adCmdStoredProc プロバイダが Source をストアド プロシージャとして評価することを指定します。
adCmdUnknown Source 引数に指定されたコマンド タイプが不明であることを指定ます。
adCmdFile Source 引数に指名されたファイルから永続化 (保存) された Recordset を復元することを指定します。
adAsyncExecute Source 引数を非同期実行することを指定します。
adAsyncFetch Initial Fetch Size プロパティに指定された初期量の残りの行を非同期でフェッチすることを指定します。フェッチされたことがない行が要求された場合は、要求された行が利用可能になるまでは、メイン スレッドはブロックされます。
adAsyncFetchNonBlocking フェッチ中にブロックされたことのないメイン スレッドを指定します。要求された行がフェッチされたことのない場合は、現在の行が自動的にファイルの最後に移動します。
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
580576:02/08/01 19:25
すいません・・・・・
adcmdstoredprocでrecordsorceをクエリ名にしてみたら、うまくいきました。
リアル初心者ですみませんs。
WinsockをつかいTCPで接続しあった場合、

倉→SendData "<返信ください>"
鯖←GetData "<返信く"
鯖←GetData "ださい>"

みたいに、データがぶつ切りになって送信(受信)してしまうことはありますか?
ためしにHTTPサーバーで適当なものをGETしてみたら、ぶつ切りでデータが送られてきました。
簡単なサーバーを作りたいんですが、"LOGIN"(例)コマンドがぶつ切りで送られた場合の処理をしてないので、
しなくてはならないのかな、って思い書き込みしました。
582576:02/08/01 20:21
>>581
データの受け取りはステートの監視が必要じゃなかったけ?
まだ受け取ってる最中じゃないの?
>>581
Winsockで例えば100バイトの塊を2回SendDataしたとしても
相手側でDataArrivalイベントが2回おきて
100バイトづつ2回GetDataできる訳ではない。
50バイトづつの4回になるかもしれんし、200バイトの1回かもしれん。

タイミングにもよるし、間にどんな機器/回線が入るかわからんから
データの区切りはアプリ側で制御してやらんといかんぞ。
ひとつの塊の終わりは改行にするとか、
送るデータの先頭にバイト数を入れておくとか
受信データはバッファリングしてそういう制御をせにゃあかん。
あとタイムアウトの処理と切断時の処理もきちんとやらんと泣きみるで。
まぁ要するに回線は信用しちゃいけねぇってこった。

なんか偉そうでスマンな。
584デフォルトの名無しさん:02/08/02 00:17
>>582
一括で受信することはありえないっぽいです。
1MBとかのデータを送信した場合、
受信側は1つの変数に1MBの情報をつめなきゃならんぽいので。

>>583 やっぱりそうですか…。
つーことは、例えば倉から鯖にコマンドを送るときは
送られてきたデータに改行が無ければ改行が来るまで待って、
改行が来たら前来た奴とくっ付けて1つのコマンドとして理解する…
というわけですね。
先頭にバイト数の奴は、そのバイト数のデータがぶつ切りで来たら欝なんで、
改行でやってみようとおもいます。
さっそくその処理の方法でも考えます…。
585デフォルトの名無しさん:02/08/02 01:18
複数のクラスで、構造体を共有したいんだけど、
どすればいいの?
許す
587デフォルトの名無しさん:02/08/02 10:40
>>585
標準モジュールで定義するんじゃダメ?
588ななし:02/08/02 10:47
>>585
「定義」を共有したいのか、実体(「インスタンス」という表現でいいのかな?)を
共有したいのか、文面からイマイチ読み取れません。
589デフォルトの名無しさん:02/08/02 13:11
ディレクトリのサイズを取得するにはどうすればいいですか?
再帰的に全部足す。
591デフォルトの名無しさん:02/08/02 13:45
いや、一気に。
フォルダをつかんでプロパティを見る
593デフォルトの名無しさん:02/08/02 13:55
なるほど。ありがとうございました。
594んわんん:02/08/02 14:06
秋葉原の交通博物館でもぼやがあったそうな
こりゃ、ぼやぼやできませんね・・・
595デフォルトの名無しさん:02/08/02 14:06
ある拡張子について、関連づけられてるアプリケーションが
あるかないかはどうやって判断すればいいでしょうか
たとえば doc であればWordが関連づけられている、
xxx には何も関連づけられていない などのように。
>>594
( ゚Д゚)ポカーン
>>595
レジストリHKEY_CLASSES_ROOT内にあるかないか
>>595
FindExecutable
>>597,598
サンクス!
FindExecutable APIを使うのがスマートなやりかた
みたいですね。
度忘れしてしまったので、ここでお聞きしたいのですが

str = 1,2,3,4
配列=関数(str , ",")

結果↓

配列1=1
配列2=2
配列3=3
配列4=4

となるような関数あった気がするんですが、どなたかおしえていただけないでしょうか?
>>600
Split関数?その方法ならArray関数でもいいと思うが。



600げとおめ。
>>601
はう
そうでした。
split関数でした。

ふむむ
いざ使いたいと思ってもこの関数は忘れてしまうと、メモってたファイルを検索することもできなかった。f(^_^)ぽりぽり

どうもありがとうございました。
603デフォルトの名無しさん:02/08/03 02:21
IEで現在表示中の内容をユーザーに1クリックで印刷させたくて
いろいろ検索した結果

<html>
<head>

<!-- ブラウザオブジェクトを宣言する -->
<OBJECT ID="thebrowser" WIDTH=0 HEIGHT=0
CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2">
</OBJECT>

<SCRIPT LANGUAGE="VBScript">
<!--
'--- 印刷ルーチン
On Error Resume Next
Sub EnlivenPrint
On Error Resume Next
thebrowser.ExecWB 6, 2
End sub
-->
</SCRIPT>
</head>

<body>
<FORM>
<INPUT TYPE="BUTTON" VALUE="印刷" ONCLICK="EnlivenPrint()">
</body>
</html>

の様な形で実現できそう(たしか動作報告もあった)なのですが、
.ExecWBの引数に関わらず印刷ダイアログが出てしまいます。


ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/com/oen_a2z_5k38.asp

によれば、.ExecWBメソッドはolecmdexecoptの値として

OLECMDEXECOPT_DODEFAULT = 0,
OLECMDEXECOPT_PROMPTUSER = 1,
OLECMDEXECOPT_DONTPROMPTUSER = 2,
OLECMDEXECOPT_SHOWHELP = 3

を取れるようになっていて、実際VBでフォーム上のWebBrowserコントロールに対し

Private Sub Command1_Click
WebBrowser1.ExecWB 6, 2
(もしくは WebBrowser1.ExecWB olecmdid_print, olecmdexecopt_dontpromptuser )
End Sub

とすると印刷ダイアログを出さずに印刷を実行できます。

この.ExecWBメソッドの振る舞いの違いに頭を悩ませているのですが
何か解決方法はありますでしょうか?。

((;゚Д゚)ガクガクブルブル
>>603
   nn
   | |||        新型ブラクラ誕生のヨカーン
  (;゚Д゚)
  (●●ドキドキ
 ⊂| ))
  .∪∪
グロ画像大量印刷on職場の予感
>>606
(((((((( ;゚Д゚)))))))ガクガクブルブルガタガタブルガタガクガクガクガクガク
608603 sage:02/08/03 04:26
覚悟はしてたけどブラクラされますよね、やっぱり。

やりたいことはスタンドアロンのPCとタッチパネル使って
WEBベースの情報端末を作りたい、と。
PCになれてないじっちゃん、ばっちゃんに印刷ダイアログ触らせたくない
だけなんだけどな。
609603:02/08/03 04:28
>覚悟はしてたけどブラクラされますよね、やっぱり

ブラクラされてどうすんだよ(泣)。ブラクラ扱いを覚悟してたって事で。
610教えてですみません:02/08/03 11:17
b1 = a Mod 2 'aを2で割った余り
c1 = Int(a / 2) 'aを2で割った整数値
b2 = c1 Mod 2 'aを2で割った整数値を更に2で割った余り
c2 = Int(c1 / 2) 'aを2で割った整数値を更に2で割った整数値
b3 = c2 Mod 2 '以下同様
c3 = Int(c2 / 2)
b4 = c3 Mod 2
c4 = Int(c3 / 2)
b5 = c4 Mod 2
c5 = Int(c4 / 2)
b6 = c5 Mod 2
c6 = Int(c5 / 2)
b7 = c6 Mod 2
c7 = Int(c6 / 2)
b8 = c7 Mod 2
c8 = Int(c7 / 2)

上記の処理をですね。。
611教えてですみません:02/08/03 11:18
b1 = a Mod 2 'aを2で割った余り
c1 = Int(a / 2) 'aを2で割った整数値

For p = 1 To 7
b(p + 1) = c(p) Mod 2 'aを2で割った整数値を更に2で割った余り
c(p + 1) = Int(c(p) / 2) '以下同様

Next p

ってやってもうまくいかないんですが・・どこがおかしいんでしょう・・
VBは昨日から触り始めたすP−初心者なんですが・・
>>611
c(0)に初期値を入れてないとか。。。
5000円、2000円を除いた金種計算あたりかな?
613612:02/08/03 12:47
金種計算じゃないな。2進数へ変換とかか。
Int(c(p) / 2)は
(c(p) - b(p+1) ) \ 2でもいいな。
614教えてですみません:02/08/03 13:12
ありがとうございます。
何とかうまくいきました〜!
615教えて・・:02/08/03 19:04
すいません、vb初心者です。教えてください。
VBからCで作ったDLLに、二次元配列を参照渡しで渡すことって可能ですか?
下のようにすると、違った数値が返ってきてしまうんです。

****VB側****
Declare Function SearchChar Lib "HOGEHOGE.dll" (ByRef lngTABLE As Long, _
ByVal lngREF As Long) As Long

Dim lngTABLE(10, 2) As Long
Dim i As Long
Dim lngREF As Long
lngREF = 4

For i = 0 To 9

lngTABLE(i, 0) = i
lngTABLE(i, 1) = 10

Next
MsgBox lngTABLE(lngREF, 1) '←10と表示される
MsgBox SearchChar(lngTABLE(0, 0), lngREF) '←違う数値が返ってくる

****DLL側****
HOGEHOGE_API int _stdcall SearchChar(int lngTABLE[][2],int intREF)
{
int i;

i = lngTABLE[intREF][1];

return i;

}

知っている方いたら教えてください。
616ListViewコントロールのソートについて:02/08/03 21:09
ListViewコントロールのソートについて質問があります。
コントロール付属の機能でソートはできるようになったのですが、
数値項目も文字列としてソートされてしまいます。
数値としてソートさせるにはどうしたらよいのでしょうか?

これをソートすると
20
100
5

以下のようにソートされてしまう
100
20
5

できれば以下のようにソートさせたい
5
20
100
617デフォルトの名無しさん:02/08/03 22:55
質問なんですが、
テキストボックスにAccessのデータを連結させて表示させ、
そのテキストボックスの値を書き換えた後、Updateさせずに、
データをMoveで動かすと、”操作はキャンセルされました”
とエラーが出てしまうのですが、
エラーが出ないようにするにはどうすればよいのでしょうか。
>>617
On Error Resume Next
>>616
たぶん、数値ではソートできんので、前0で埋めて桁を揃えた文字列の隠し列を
作ってそれでソートする。
>>615
配列のインデックスの順番がたぶん違う。
621603:02/08/04 01:22
とりあえず解決したです。
できてみればなんて事ない理由でしたが、プログラム経験とかなかったもんで。
とりあえずマイクロソフトのことはきらいになったけどな(笑)。

ブラクラ扱いされたことだし、ちょっといじくり廻したら(自分みたいな低能でも)
解決できる程度のことなんで、解決方法は書かないよ。
>>619
なるほど・・・やはりそうですかー
エクスプローラとかはファイルサイズとかでソートしてるんで
できないかなぁと思ったんですが甘かったですね^^;

どうもありがとうございました〜。
623VB君:02/08/04 18:09
VBAの質問です。
本気で悩んでいるので出来れば助けてください。

FormAからFormAのサブフォーム(FormA_S)を呼びだしたいんだけど、
FormAにどうやったら「君のサブフォームはFormA_Sだよ」と
教えてあげられるのですか?

また、
変数 = CurrentDB()
でカレントDBを変数に入れてるんだけど、カレントDBは
どこできまっているのですか?

624デフォルトの名無しさん:02/08/04 18:10
>>623
スレ違い
>>622
APIとか使えば出来る。調べるのがめんどくさいから検索してくれ。
>>623
意味がわかりません。
>>616
それ出来るコンポーネント、昔作りましたが、あげましょうか?

Delだけど
>>627
616じゃないけどほしい。
VBで使えるコンポーネントですよね?delで開発した。

いままでフレキシブルデータグリッドコントロール使ってたけど、
format関数使うのもいいかとおもうけど
>>628
それくらいどうして作れないの?
と言う皮肉かと。
>>629
soudattanoka
631デフォルトの名無しさん:02/08/05 12:52
>>605
日の丸掲揚などが学校などで義務付けられた時、反対派の方が圧倒的に多かっ
たし、卒業式か何かを受けない人も多くいました。

アジアの国は、中東をみても解るように引きずってしまうものだと思います。
泥沼化しないためにも関係国が歩み寄らないといけないと思います。
個人だって先祖の恨みみたいなものありますし。。。

何が真実で何が嘘なのか完全にはわからない。
マスコミはまったく信用できないですしね。
韓国などが隔たった歴史教育を行ってるのも知ってますよ。
日本でも最近になって歴史を美化した教科書がでましたし。。。
>>631
で、それと滅び行くVBとなんの関係が?
633デフォルトの名無しさん:02/08/05 13:19
コンボボックスを2D表示する術をご教授下さい。
Appearanceを0-フラットに設定しても3Dで表示されるのです。
634鳩料理大好き:02/08/05 14:17
>>633
ドライブの準備ができているかどうかを調べるには、Drive オブジェクトの IsReady プロパティ
635633:02/08/05 14:26
>>634
ええっ!?
636鳩料理大好き:02/08/05 14:39
失礼
スレ間違えました。
ワラタ
>631へのレスなら更にナイスだったな
>>635のリアクションの妙だな。
>635が、「できました!!ありがとう!!」だったら更に(略
641633:02/08/05 16:26
皆さん、そんなことで論議せず、>>633の質問をおながいしたいのですが…(w;
owner draw
643デフォルトの名無しさん:02/08/05 16:29
マウスの消し方教えてください。
環境:Win2000
   VB 6.0
こんな感じです。
マウスをはずす
645デフォルトの名無しさん:02/08/05 16:30
>>644
ありがとう
マターリしててイイ板だね。
647633:02/08/05 16:41
>>642
ありがとう。グラフィックかー。
よく分からないけど、研究してみます。
>643
Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
入れて
Do Until ShowCursor(False) < 0
Loop
>644のOSはWin3.2?
649デフォルトの名無しさん:02/08/05 17:53
>>643-645
ワラタ
>>644
まずパソコン本体の後ろに刺さってると思うので抜いてください。
そして強酸の中にほおりこんでみてください。
マウスが消えます。
>>650
それはつまんない
猫を飼えばいいんじゃないでしょうか
>>652
まじめな顔と古典的のギャップがすばらしい。
>652
ですよね。
>>643
つまんねーネタが続いてるのでマジレスすると、
何も描いてないアイコンを用意して、それをマウスポインタに
割り当てるのが一番手っ取り早くて安全。
API使わなくていいし。
確かに一番手っ取り早くマウスポインタは見えなくなるけど
クリックとかは出来ちゃうよね?それでいいのかどうか。
何にせよ>>643の聞き方は稚拙。遊ばれてもしょうがない。
657デフォルトの名無しさん:02/08/06 13:12
強酸にほりこめば、何でも溶けると思っている>>650
むしろおめでたい
溶鉱炉の中に放り込めば溶けるよ。>>マウス
もうそれ関係のネタ、つまんないからやめていいよ マジで。
660デフォルトの名無しさん:02/08/06 14:58
Accessなんですが、ADOのエラーなのでこちらに投稿させて下さい。
家で作った、Accessのフォームを会社で開こうとするとエラーが出て開けないのです。
家では問題無く開けるのですが。

ADOで接続していて、Connection.Openの時に、
「プロバイダが見つかりません。正しくインストールされていない可能性があります」
というエラーが出ています。
環境はAccess97を完全インストールでインストールし、
Microsoft ActiveX Data Objects 2.0 Libraryを参照設定に入れてます。

おわかりの方、おながいします。
>>660
Provider=Microsoft.Jet.OLEDB.4.0 -> 3.51
662デフォルトの名無しさん:02/08/06 15:41
>>661サン
激しく3.51にしています。
Provider=Microsoft.Jet.OLEDB.3.51;
>>662
んじゃ 4.0 だとどうなんの?
664デフォルトの名無しさん:02/08/06 15:49
>>660-663
マジレスすると、
日本国内では韓国の通貨ウォンの両替、再換金が出来る場所はほとんどありません。
665デフォルトの名無しさん:02/08/06 15:52
>>664
ありがとう
>>664
不便なんですね。
>>664
でもそうすると、牛乳を麦茶で割るとコーヒーになるぞ!
668達人:02/08/06 15:58
>>667
いや正しい麦茶の作り方はこうだ。

1..まず水出しは絶対止めろ、お湯だしが基本だ
2.水も出来れば市販の天然水を使え
3.水道水を使う場合はよく沸騰させカルキを飛ばしておく事
4.その際ヤカンの蓋は取っておかないとカルキは飛ばないので注意しろ
5.水の量も多すぎては当然薄くなるのでキチンとチェックしろ
6.濃くしたいからと言ってパックを長時間いれておくと苦味が強くなるぞ
7.煮出す時間は量や自分の好みもあるのでここは馴れしかない、何回も試すことが重要だ

 これだけでもかなり味が変わってくるが、更に美味い麦茶を求めるんだったら麦自体にも
 こだわるといいぞ、ただこの時は高いのを選ぶと言うわけではなく安くても自分の口に合う
 ものを探すのが重要だ

以上、単純なように見える麦茶道も実はかなり深いぞ
>>663
4.0だと通りました。
なんだ、これ。
スレ汚し申し訳ないっす。
>>664
ほほう、興味深い。
670デフォルトの名無しさん:02/08/06 19:48
Visual Basic 6.0について質問したいんですが、
下記のプログラム(変なコードですが試行錯誤の途中なんです)を実行して
コマンド1をクリックしたところ、テキストボックスには
「1900/01/07 19:27:52」
と出てきました。ほかに「qq」を使っているところもなく、
プログラム自体を下記だけにして実行しても同じ結果になりました。
osはwin2000、SPは当てていません。
よろしければ原因をお教え願えないでしょうか。

Private Sub Command1_Click()
Dim qq As String
qq = Len(Time)
Text1.Text = Time + Str(qq)
End Sub
671デフォルトの名無しさん:02/08/06 19:52
>>670
なにをしたいん?
>>670
何故Date型にDate型のサイズをを追加しとるのだ?
わけ分からん。
>>672
ぎゃくあせんぶる
674デフォルトの名無しさん:02/08/06 20:25
>>671
今回は目的とかなくて、色々やってみただけなんです。
ファイルの保存とか一からやりなおそうと思いまして。
で、今の時間の文字数を文字列として付け加えて、とか
気が向くままに作ってみたらこうなったんです。

それで見たこともない動作をされたので質問に来た、
というわけです。
なんか全体的にわかりにくくてごめんなさい。
675デフォルトの名無しさん:02/08/06 20:30
>>670のを一部変更
Text1.Text = Time + 1
でコマンド1をクリック→テキストに「1899年12月31日」と表示された。
謎。
文字列追加は&だろ
>>670
Timeの戻り値の型のことをよく調べるんだな。
678デフォルトの名無しさん:02/08/06 20:36
         ∧_∧       / ̄ ̄ ̄ ̄ ̄
        (  ´Д`)   <  VB 命!
      /      \    \_____
     /ノl     ,ヘ \
   ⊂/ |     \ \⊃
       |  /⌒> _)
        | .|  く_っ
  __.  | |
  \   ̄⊂ノ ̄ ̄ ̄ ̄ \
  ||\             \
  ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄
  ||  || ̄ ̄ ̄ ̄ ̄ ̄ ̄||
     .||              ||

            ∫    _____
   ∧,,∧    ∬   /
   ミ,,゚Д゚彡っc□  <  ま、ヘルプ見ろや。
_と~,,  ~,,,ノ_.      \
    ミ,,,,/~), │ ━┳━   ̄ ̄ ̄ ̄ ̄
 ̄ ̄ ̄ .じ'J ̄ ̄| ┃
 ̄ ̄ ̄ ̄ ̄ ̄ ̄  ┻
680670:02/08/06 20:45
>>671-679
「&」と「+」間違えてました。まじですんません。
勘違い(゜Δ゜:)コワー
逝ってきます…
>>680
何でそういう結果が出てくるかは調べたのか?
調べれば謎でもなんでもない事がわかるはずだ。
てかデータ型ぐらい理解してからプログラム作りなよ。まじで。
もしかして>>670のプログラムの変数は全部宣言無しのVariant?
>>682
宣言してんじゃん。Variantじゃないじゃん。もしかして理由わからないの?
アホか
全部Variantで何が悪い
>>683
あ、宣言してたね。見落としてた
>>684
型無いとクラス型のオブジェクト指向が死ぬほどややこしくなるぞ。 by PHPユーザ
アホか
Variantを自在に使いこなしてこそ真のVB使い。PHPなんかと一緒にするな
>>687
まぁ、同意。
どんどん他の言語への敷居が高くなっていくな。
>>686
PHP使いが型がどうこうなんて語るなや.
>>689
訂正。

型無いとクラス型のオブジェクト指向が死ぬほどややこしくなるぞ。 by CとC++とC#とDelphiとJavaとPerlとPHPのユーザ
>>687
一応同意。だが
Variant型ばかり使うのは使いこなしているとはいっえなーい。
>>687
概ね同意。>>684はどうかと思うが
693689:02/08/06 21:53
>>690
なるほど、そういうことか. 理解した.
アホか
全部Variantで何が悪い
アホか
全部Variantで何が悪い
アホか
全部Variantで何が悪い
アホか
全部Variantで何が悪い
アホか
全部Variantで何が悪い
>>690
VBは仲間だ by COBOLer
686=690はあほです。
PHPの変数はVariant型そのものじゃねーか。

697デフォルトの名無しさん:02/08/07 01:33
初歩的なことなんだけど、

Sub aaa( prm1 As Long )
End Sub

Sub bbb( prm1 As Long , prm2 As Long )
End Sub

aaa (1)
aaa 1

bbb( 1,1) 'これだけが構文エラーになる、なんで???
bbb 1, 1
call
解説

プロシージャを呼び出すとき、キーワード Call は省略できます。
キーワード Call を使って、引数が必要なプロシージャを呼び出す場合は、
引数リスト (引数 argumentlist) をかっこで囲む必要があります。
キーワード Call を省略するときは、引数リストを囲むかっこも省略しなければなりません。
Call 構文で組み込み関数またはユーザー定義型関数を呼び出す場合、
その関数の戻り値を取得することはできません。

配列全体を引数として渡す場合は、配列名の後ろに空のかっこを付けてください。
つまりヘルプ読めと。
701697:02/08/07 01:59
ありがと!
ん〜、理解は出来たけど・・・
すっきりしない!
早くVBの仕事終らしたい。
702デフォルトの名無しさん:02/08/07 03:13
正規表現扱えるのないすか?
>>702
VBSのRegExpを無理やり使う。
704デフォルトの名無しさん:02/08/07 06:42
formに図形処理をあつかったプログラムを作るとき
処理毎にclsとかやってるんだけど
ちかちかしちゃって困ります。
どうしたらいいでふか?
705デフォルトの名無しさん:02/08/07 07:58
>>704
out &h31,0
これでVRAM表示が消えてグラフィックのアクセスが高速になるので、
この間にcls
で、消したところで、
out &h31,8
でVRAM表示の復活。
706デフォルトの名無しさん :02/08/07 10:04
初心者で申し訳ありません。
どうかご教授願います。
VBのリッチテキストBoxでマウスの右メニュー
(元に戻す、切り取り、コピー、貼り付け・・)
は出せないのでしょうか。
テキストBoxは可能なのですが・・。
どうかよろしくお願いします。
>>704
ダブルバッファリング
708デフォルトの名無しさん:02/08/07 10:16
>>706
喜怒哀楽の様々な感情で、大声で Ahhhhh!

>>706
同じVB使いとして情けないよ。MSDN読めヴァカ。
>>29無理ですか?
可能でしたらご教授願います。
711 :02/08/07 15:38
今はテキストボックスに文字を書いてコマンドボタンを押して実行って感じに
してるんだけどそれだと何かと不便でして
テキストボックスに文字を書いてEnterを押すと実行するようにしたいんだけど
どの関数使えばいいの?
712デフォルトの名無しさん:02/08/07 15:48
VB6のディストリビューションウィザードでパッケージ化されたものを
インストールしようとすると
「Path or File Not Found」って出て、OKを押すと
「セットアップするファイル'C:\××××\Package\\@○○○.exe'が見つかりません。」
って出て、インストールできないんですけどどうすれば良いですか?
OSはWinXPHomeです。
家にあるWin98のマシンではちゃんとインストールできました。
>>712
日本だから。
>>712
ユーザー名が全角日本語だから。
対策方法も真っ黒ソフトのKB調べれば出てるよ。
715デフォルトの名無しさん:02/08/07 15:54
>>711
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyReturn
'ここに処理を記述
End Select
End Sub
あとFormのプロパティKeyPreviewをTrueにするんだっけ?
>>711
コマンドボタンのDefaultプロパティをTrueにするだけでOK。
718デフォルトの名無しさん:02/08/07 16:01
>>714
KBってなんですか。スミマセン
>>718
knowledge base
それより>>717でそのものズバリの答えがもらえてるね まさにKBの。
720712:02/08/07 16:06
>>713,714,717,719
ありがとうございます
キロバイト
722デフォルトの名無しさん:02/08/07 17:13
テキストボックスでEnterを押すと、次のコントロールに
フォーカスを移したいのですが、以下の様にすると、
漢字変換の際の「決定のEnter」を取得してしまって困ってます。
どうにかならんでしょうか。

Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)

If KeyCode = vbKeyReturn Then SendKeys "{Tab}"

End Sub
>>722
それ以前に、SendKeysでTAB移動すると
Win9x系ではしょっちゅうハングるからやめたほうがいい
keybd_event API使うのが吉。
>>722 KeyUpでなくKeyDownに記述
725デフォルトの名無しさん:02/08/07 17:24
If FN_NumST > 0 Then
'既にナンバリングしたファイルがある場合
FN_NumEND = InStrRev(str_List(cnt), ")", -1, vbBinaryCompare)
FN_Num = CInt(Mid(str_List(cnt), FN_NumST + 1, (FN_NumEND - 1) - FN_NumST)) + 1
FSO.CopyFile FN_Path & str_List(cnt), FN_Path & Mid(str_List(cnt), 1, FN_NumST) & FN_Num & ").xls"
FSO.DeleteFile FN_Path & str_List(cnt)
str_List(cnt) = Mid(str_List(cnt), 1, FN_NumST) & FN_Num & ").xls"
Else
'初めてナンバリングファイルを作る場合
FSO.CopyFile FN_Path & str_List(cnt), FN_Path & Left(str_List(cnt), Len(str_List(cnt)) - 4) & "(2).xls"
FSO.DeleteFile FN_Path & str_List(cnt)
str_List(cnt) = Left(str_List(cnt), Len(str_List(cnt)) - 4) & "(2).xls"
End If
>>725
「この会社辞めようと思ったソースコード」はこちら
http://pc.2ch.net/test/read.cgi/prog/1021560641/l50
727とにかくガンバ:02/08/07 17:38
>>725
これで何すんの?
728722:02/08/07 17:40
>>723
ども。SendKeyではどうして98はハングするのでしょうか。
APIって使ったことないですが、これを期に勉強してみます。
>>724
できますた。ありがとうございます!
こんな事でハマってたのが馬鹿みたいです…。トホホ。
>>728
どうしてと言われたら、SendKeysのバグ、としか言いようがない
知らないとはまるので要注意だよ
730 ◆q8rtQUwY :02/08/07 17:49
つーかその理由なら次にフォーカスを移したいコントロールにSetFocusすりゃいいじゃん。
>>731
実戦経験が低い奴のセリフだな。
733デフォルトの名無しさん:02/08/07 18:14
そうか?別に悪くないだろ。
いや、それ以前にそんなインターフェースはWindowsで動くソフトとして間違ってると思うけどな。
間違っててもクライアントからそうしろって言われてるんだからしょうがないだろってか。
>>731
そのコントロールが配列で、IndexとTabIndexがきれいに揃ってる時には有効だけど
そうでない場合にはかなーり面倒なことになると思われる。
>>732
理由を書こうよ。
>>733
その認識はおかしいと思う。ユーザーの操作性が良くなるんだから間違っちゃいないでしょ。
Enter押下時や文字数がある数に達した時フォーカスを移すのは基幹系ではよく行なわれている。
セットアップ時のシリアルNo入力とかもそうなってるよね。
SetFocusで移動するとValidateイベントが発生しない。
>>734
いやエンターでフォーカス移動はおかしいだろ。
俺も仕方なくすることあるけど、気持ち悪い。
普通tabキーでするもんだ。
>>736
確かにWindows標準ではない。でもまるっきり否定するのはおかしい。
例えば金額を次々に入力するプログラムで、Enterでフォーカス移動すれば
片手で入力できる。理にかなってると思わない?
どちらが優れていて多くの人に支持されるか、一目瞭然だと思うけど。
>>731
それだとコントロールのフォーカスの移動する順番までコードで
管理しないといけなくなるから大変さ。

>>736
>いやエンターでフォーカス移動はおかしいだろ。
おかしいおかしくないの問題とは別かと。

例えば、
携帯電話の数字ボタンの配置逆順にしますとか
言われたら不便でかなわんな。NTTがそれが標準だといいきったらどうするで。
J-Phoneがうちは従いません。従来どおりでいきますと。

そういうことさ。
慣れりゃ、数字ボタンが逆順だろうが誰も問題ないが、慣れるまでが大変だ。
慣れさせるのがいいか、機械を合わせるのがいいか、
どっちがいいの悪いのという問題とは違う。
>>735 なるほど。心に留めておきます。
740へろっぴゅ:02/08/07 21:43
Labelにメールアドレスを書いたのですが
このメールアドレスの部分をクリックするとウェブ上のアドレスを
クリックした時みたいにメッセージの作成などができるように
するにはどうすればよいのでしょうか?
741デフォルトの名無しさん:02/08/07 21:55
formにラベルとかのコントロールを動的に貼り付けてるんだけど、
????_clink()
とかのメソッドはどういうふうに、動的に実装したらいんだべか?
>>741
WithEvents
正直TABでフォーカス移動は直感的じゃない。
始めてWindowsを触ったときTABでフォーカス移動するのを素直に納得できたか?
TABを入力できるコントロールでフォーカス移動するときめんどいし。

俺的には、テンキーやカーソルの所にフォーカス移動キーがほしい。
つーか、tab shift-tabと同じ働きのキーをつけるだけなんだから
マルチメディアキーなんかつけずにフォーカス移動キーをつけてくれ。
>>740
超、適当だけど
Option Explicit
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long


Private Sub Command1_Click()

Call ShellExecute(Me.hwnd, "open", "mailto:[email protected]", "", "", 1)

End Sub
そりゃ確かにとっつきにくいかもしれんよ、Tabは。

でもWindowsはインターフェースを統一化させ、
初めて触れるアプリでも直感的操作ができる事を目指したOSでしょ?
だからインターフェースガイドラインなんてのもあるわけで。

Tabキーでフォーカス移動ってのは当たり前。
エンターキーで移動は確かに使いやすいかもしれないけど、当たり前ではない。
他のアプリと統一化させる事は重要だと思うよ。
レベル低くなったなぁ
レベル高くなったなぁ
>>745
使いにくいのを当たり前と思うのは良くないよ。
UI操作を統一させるのは同意。
ただフォーカス移動としてtabを使用したのは間違いに近いと思う。
とはいってもEnterを含め他に使えるキーがないのも事実。
だからキーボードに新たにキーを追加するのがいいと思うのだが。
これはUI操作を統一させることの障害にはならないだろう。
749デフォルトの名無しさん:02/08/07 23:07
点Aと点Bの角度を求める時とかってどうしてます?
僕は
If (bx - ax)> 0 Then siita = Atn((by - ay) / (bx - ax))
If (bx - ax)< 0 Then siita = Atn((by - ay) / (bx - ax)) + 3.14159
とかやってるんですが
ほかに効率のいい方法知りませんか?
750デフォルトの名無しさん:02/08/07 23:13
あ〜くたんじぇんと
751741:02/08/07 23:23
Obj.Controls.Addでコントロールオブジェクトフォームに貼り付けた時の
表示の優先順位はどやって設定したらいいでしょう?

>>742
まさに「それ!」
ありがとうぉぅ〜
>>751
自分で研究しようよ。一番奥にもってきたい順で表示。

ところでなに作るの?掟破り?
753デフォルトの名無しさん:02/08/07 23:27
>>750
atnって書いてあるじゃん
>>749
siita = Atn((by - ay) / (bx - ax))
If (bx - ax)< 0 Then siita = siita + 3.14159
755デフォルトの名無しさん:02/08/07 23:49
picture1に描かれている物をpicture2にそのままコピーするにはどうすればいいですか?
厨房ですいません。
>>755
まずはヘルプ読む!

次!
757755:02/08/07 23:57
>>756
ソフトそのものがコピーだからヘルプはありません
758741:02/08/07 23:57
>>752
>自分で研究しようよ。一番奥にもってきたい順で表示。
コントロールオブジェクトを、追加、削除を繰り返すので、
順番では対応できないんですよ。
自分なりに調べてはいるんですが、今のとこ解決方法が見つからず、
質問させてもらったんすけど、どうでしょう?

>ところでなに作るの?掟破り?
B2B向けの情報管理ツールですけど。
>>745
>他のアプリと統一化させる事は重要だと思うよ。

ある意味、そのせいでEnterキーでフォーカス移動しなくちゃならなくなる罠。
#そういう要求がでるところは、他アプリも全部Enterキー操作だから。

おれは、なるべくTabキーを薦めはするが、
最終的に客の要望にあうように作る。
コストとWindows標準でないことと操作性との天秤で客が決めることだしな。
>>757
ネタはいらん。
>>758
先に言え。情報小出しはよろしくない。
>>759
> コストとWindows標準でないことと操作性との天秤で客が決めることだしな。
同意。だがWindows標準でないことのコストを知らないというか無関心な奴が多すぎ。
0からユーザインタフェース作るよりWindows標準ユーザインタフェースを
踏まえて(Windowsを使う以上逃れられん)作るほうがコスト高いんだぞ。
Windows標準ユーザインタフェースを熟知せにゃならんし。
Webでフォームを埋める時だってtabじゃん。
この2chの書き込みでも、名前メール本文とtabで移るぜ。
enterではない。
enterでフォーカス移動するブラウザってあるのかな?

やっぱり標準はtabでenterはイレギュラーだろ。
でも>>759の言うように、仕事で作るんであれば客の要望は絶対だから、
そんな我が儘通せないけどな。
764755:02/08/08 00:09
>>760
そんなこといわずおしえてくらはい
>>764
うるさい
>>763
イレギュラーなのは承知のこと。
そのイレギュラーなことの問題点、解決策を考えるのは
イレギュラーで終わらすより、よっぽど意味がある。
767デフォルトの名無しさん:02/08/08 00:31
ENTERはコボラーにとって神聖なキーでございまふ
>>763
Webなんてほんとの最近じゃん。
Win上での話しならそりゃ汎用アプリだから当たり前だと思うが。
UNIXユーザならTabキーとCtrlキー入れ替えてる罠。

そんなことより、Enterでデフォルトボタンが働いてポストされたり、
Escでキャンセルが働いてリセットされるのが最悪だぞ。
VectorにそんなDLLがあった気がするな>Enterでフォーカス移動
基本的には勧めないし、客にも説明するけど、他との兼ね合い等で
問題なければ一応実現はさせるけどな。
770デフォルトの名無しさん:02/08/08 06:53
>769
わざわざDLLなんて使わなくても、簡単に書けるのに。
>>768
別にWebに限定したわけでなく、例の一つとしてあげただけだろう。
772デフォルトの名無しさん:02/08/08 09:22
VBユーザの人に質問なんすけど、VBでbtreeのようなデータ構造を
書く時ってどうやってるの?
773734=737:02/08/08 09:39
VBでプログラム作れば意識して作りこまなくてもTabでフォーカス移動になる。
それはそれでWindows標準ということでよろしい。
インターフェースの統一は守られてるじゃん。なにを言ってんだか。
で、その他に操作性を考慮してEnterでフォーカス移動の機能をつける。
そうすればユーザーはTabでもEnterでも好きな方を使える。それの何が悪いのか。
ブラウザは例の一つとしてあげただけと言うがEnterでフォーカス移動も例の一つじゃん。
ブラウザはEnterでリンク先に飛ぶ。あるプログラムはEnterで次のテキストボックスに飛ぶ。
それぞれ使いやすいようにそうしてるわけでしょ。
何も全てのプログラムにEnterでフォーカス移動の機能をつけろと言ってるわけじゃない。
テキストボックスの入力欄が複数あり、
下の方にOKボタンとキャンセルボタンがある場合、
エンターはデフォルトボタンに設定されてるOKボタンを押すのと同じ動きをするのが
標準ではないのかな。
Wordの設定画面もVisual Basicの設定画面も、
テキストボックスにフォーカスがある状態でエンター押せば、
OKボタンを押したのと同じで確定されダイアログが閉じる。
それ標準。

そうやってユーザーが覚えてるのに、
テキストボックスでエンター押したら確定されずに
次のテキストボックスへフォーカスが移ったってのは、
標準から外れたインターフェースになっちゃわないか?
タブで移動ができればいいだけでなく、エンターの動きだって考慮しないとだめだろう。
>>774
しかも逆パターンも発生するしな。
enterでフォーカス移動を覚えたユーザーが、
Windows標準であるインターフェースに触ったとき、
フォーカス移動しようと思ってテキストボックスでenter押したら、
OKボタンが押されちゃった〜とか。
>>773はそこらへんの考え方が欠落してる。
>>772
クラス使え。
type treenode
 parent as long
 left as long
 right as long
 value as variant
end type
>>774
ダイアログではenterを押せばOKボタンを押したことになるがダイアログ以外ではどうかな?
AccessアプリもExcelもenterでフォーカス移動する。

>>775
それはたいして問題にならない。enterでフォーカス移動を要求する所は
大抵そのアプリ専用としてPCを使う。Windowsなどと意識しないで。
ゲームでもtabでフォーカス移動を使用しないのは普通だしな。

ただゲームとは違い通常のGUIコントロールを使用するので
Windows標準と矛盾しないように考慮しなければいけないがな。
>>774
言ってることはもっともだ。でもそれだとまずい、そうじゃない方がいいってものもある。
例えば全項目入力必須のプログラムなら全項目埋まった時に初めてデフォルトTrueにした方がいいだろう。
でもそれで終わるのではなく、入力がされてないテキストボックスがあればEnterで自動的にそこに飛ぶようにすれば
操作性は格段に向上するとは思わない?
それとユーザーの大多数はWindowsの標準操作なんてものは知らないし興味も持って無い。
Ctrl+SやメッセージボックスをEnterで閉じれる事を知らないユーザーが多数いるのを知ってる?
確かに初めて使う時は標準操作のほうがとっつきやすい。標準操作を知ってた場合に限ってだけど。
でも良く使うソフトは操作なんてすぐ覚える。その時標準操作のみって事が効率の足かせになる事はないかな。
標準を考慮する事は大切。だけどそれが絶対、それしか許さないと考えるのはどうだろうか。
世間一般に出すソフトは標準入力の方がいいと思うけど、限られた所で頻繁に使われるものは
標準以外の操作も考慮するのもいいと思う。
俺は基本的には標準以外の操作はつけないけどね。ユーザーに標準操作を覚えて欲しいし、めんどくさいし。
でも操作性を考慮したものを触ると、親切だな、使いやすいな、って思うよ。
それと聞きたいんだが、自分個人で使うものも標準操作絶対で作るの? 長文スマソ>ALL
アフォばっかだな
余計な機能の実現に苦悩する >>722 もそれを肯定する連中モナー
>>780は自分で考える事ができない、言われた事しかできないアフォなんだろうな・・・
どう見ても>>780が一番アフォ。
苦悩するから成長する。>>780は人に教えてもらうまで成長しないんだろうな。
どうみてもアフォなのに放置できないアフォ(俺含
VBでおかしいなとおおもったことに、

sub command1_click()
command1.enabled = false
いろんな処理
command1.enabled = ture
end sub

とやっても実際、ボタンコントロールが使える状態に戻ってないことがあるんですが私だけかな?
こんなときはcommand1.enabled = tureを連続で2行書くとうまくいくんですが。
doeventsをはさんでみてもなおったりなおらなかったりする。

sub command1_click()
command1.enabled = false
いろんな処理
command1.enabled = ture
command1.enabled = ture
end sub
>>785
キミ、tureって何よ?
ワラタ
オモロw

つーか=入力した時点で候補がでるだろ。
ツレーんだろ、色々と。
(゚∀゚)テュァ!!
釣られ
792785:02/08/08 14:15
ture = 釣れ
ですよ。












タイプ早いからtrueがtureになっただけだよ。
あとはぜんぶこぴぺ。
みんなそんなにかんたんにつられないでください
うわっ
寒っ
負け惜しみにしても寒いな。

はい次の方ー
知らないの?
VB2まではtureで通るよ





これくらい言っとけ>792
>>794 同意。しかも>>791の二番煎じ。もうちょっと面白いこと言えよ>>792
797758:02/08/08 15:49
一昨日から、Controls.Addで動的貼り付けで、
表示の優先順位を変更する方法探してるんだけど
ん〜、もうダメポ。
そもそも、そんな事出来ない?
ヒントでもいんで、情報あったらよろしくぅ
>>797
表示の優先順位がなんのことかよく分からんがZOrderメソッドじゃだめか?
799785:02/08/08 16:14
ていうかあげ足取りどもうっさいんだよ
わかったからもう帰って良いよ。
心配しなくても5分後にはみんな忘れてるんだから。
801785:02/08/08 16:31
>>800
おいそろそろママのおっぱいの時間だぞ?
ため口はいてないで、早く学校かえれや
>>801
釣れた(w
803785:02/08/08 16:39
>>802
>>>801
> 釣れた(w

ってへぼいやつだな?
しょんべたらしてびびってんじゃねーのか?
ってびびってんじゃねーぞ?こら
>>803
釣れた釣れた(w
805797:02/08/08 17:01
>>798
れすどうも。
オブジェクトがFormなら、それでOKなんだけど、
Labelとか、TextBoxとかだと、そのメソッドが無い
もれも、見っけたとき「おぉ、これは使えるか?!」と思ったけど、
だめやった。
799-804
わかったから、大人しくしててくれ、な。
807785:02/08/08 17:19
>>806

なに上からものいってんだよ?
ないてあやまれや!

手震わしながらキーボードうってんじゃねーのか?
>手震わしながらキーボードうってんじゃねーのか?
自分の実況?
2chだな〜〜、結構結構。
810785:02/08/08 17:32
>>808

煽りの分際がよ

いっちょまえの口きいてんじゃねえよ
はよあやまってみろや

ちびってできねぇんだろが?
>>805
もう一度よくたしかめろ。
812本物の785:02/08/08 17:38
なんか偽者が荒らしてるけど無視してください。785と私以外偽者です。

tureはtrueのtypoだとして一回じゃ元に戻らないことってありませんか?
813785:02/08/08 17:49
>>812
ahoga

お前と俺しかいねぇよたこが!
てめえが一番わかってんだろうが。
かわいいことやってんじゃねぇぞ?

ほらほら
お前こそ5分後には忘れてやるから消えろや
VBのソフト買ったんですが、難しいですね…

プログラマーになりたい。なんて思っているのですが、
数字、計算、数学、グラフなどが苦手だし嫌いです。

適性がないとだめですか。
>>812
俺の所ではならないが。
ロジック的におかしい所がないか調べてみては。
>>814
大丈夫、VBしか使えない人はプログラマじゃありません。
>>816
答えになってない。お前プログラマに向いてないんじゃない。
818785:02/08/08 18:11
>>816

煽りしてんじゃねぇぞこら

バンしてまうぞ?
おもろいなーw
820805:02/08/08 18:26
>>798
>>811
てへぇ!
でけましたぁ〜。
ありがとうございます。
これからは、見落としが無いようによく確認します。
816,817,818
だから、しゃべんなって。
どーでもいいが、ZOrderがメソッドなのが気になる。
名前からプロパティでZ位置を取得・設定するのかと思った。
823デフォルトの名無しさん:02/08/08 18:37
microsoft Visual Studio 6.0SP5ってのが雑誌についてたんですけど
これをインストールしたらVBが使えるんでしょうか?
これはいわゆる「評価版」ってやつですか?
>>823
一応マジレス・・・・
それはバグを修正するためのもの。Visual Studio6.0がインストールされていないと使えない。
825785:02/08/08 18:42
>>815
偽者にマジレスしてるぞ
826823:02/08/08 18:45
>>824 あーそうですか 評価版ってもう手に入らないんでしょうか?
827785:02/08/08 18:47
>>821
お前マジであれだろ

煽りしたいだけだろ

お前はマジバン!
828本物の785:02/08/08 18:55
>>815
そうですか。もう少し調べてみます。ありがとうございます。

>>825
そういうことにしたいんですね。
829785:02/08/08 18:57
>>828
おたくっておもしろいな

必死こいて仲間を引き入れたい気持ちがあらわれてるな
>>829
激しく同意。特に>>829とか必死で笑える。
831デフォルトの名無しさん:02/08/08 19:03
>>826
VBの参考書(?)にはついているものがあるみたいだけど。
832785:02/08/08 19:18
>>830
あーあもうあきたな。
ロボットと話してる気分だ。
毎度毎度同じパターンでよぉ

こんなきもいやつが2CHにいるわけだな・・・・・・。
心病んでるぞお前(藁
>>832
同意。>>832とかほんと見ててかわいそうになってくるよ。
>>833
涙の禿同
>>814
買ってからそのセリフは正直どーかと。
>>832
ねぇねぇ、ちょうど一年ぐらい前になんかやらかさなかった?
物凄く似てるんだけど(w
馬鹿はこうやって放置しろ
http://corn.2ch.net/entrance/kako/994/994927164.html
785ってあほちん?ばかちん?
>>837
ワラタ
840デフォルトの名無しさん:02/08/08 21:48
初心者質問です(^O^)/変数Aに"?,?,?,?"と入れたいんですが、 A="?,?,?,?" では"?"がきちんと代入出来ませぬ〜(T_T) どーしたもんか教えてやって下さいm(__)m
>>840
改行いれてから出直せ
その顔文字はここでは叩かれる元だからやめておけ
初心者
質問
です
(^O^)/
変数
Aに
"?,?,?,?"と
入れたいん
ですが、
A="?,?,?,?"では
"?"が
きちんと
代入
出来ませ
ぬ〜
(T_T)
どーした
もんか
教えて
やって
下さい
m(__)m
>>843
改行は3回までにしてから出直せ
845デフォルトの名無しさん:02/08/08 22:17
>>841 携帯からなんで改行の仕方が分かりませんでした(涙) >>843 ぷーんだ。           ちょっぴし凹んださ。
初心者
質問
です
(^O^)/変数Aに"?,?,?,?"と入れたいんですが、 A="?,?,?,?" では"?"がきちんと代入出来ませぬ〜(T_T) どーしたもんか教えてやって下さいm(__)m
>>846
お前女か?
だったら、漏れが優しくおしえてやる
へへへ
848846:02/08/08 22:24
>>847
俺は男。840はしらん。
で、質問の意味が分からん
850デフォルトの名無しさん:02/08/08 23:24
>>846
まず、どういう方法で変数Aの中身を確認したのか、書け!
/* これに代わるの無い?
*/

#if 0
 これでもいいけど。
#endif
ブロックでコメントアウトすりゃぁいいだろ
853デフォルトの名無しさん:02/08/08 23:40
>>847
女だから
はやく優しく教えてやれ
854デフォルトの名無しさん:02/08/09 01:06
>851
'あるよ。
#if aa = 0 then
' これでもいいけど。
#end if

ん?
#If False Thenの方がいいと思うが。
>>846 ちょっと面白かった。
857デフォルトの名無しさん:02/08/09 11:19
If KeyAscii = 48 〜 57 Then

上のように48〜57の間の時、みたいに範囲を指定することって
できないのでしょうか。一つずつIf Then ElseIfしていくのは
超面倒なんですけど。
>>857
? 単にAND使えばいいだけでは?
>>857
Case使え
48 ≦ KeyAscii ≦ 57 だったら

If 48 <= KeyAsci And KeyAscii <= 57 Then
If (KeyAscii - 8) \ 10 = 4 Then
>>857 俺なら
Select Case KeyCode
Case 48 To 57
End Select
だな。
キー制御が複数ある場合はSelect文使った方が
見やすいし、内容によっては速くなるよ。
>>861 頭イイ!
863857:02/08/09 12:16
皆さん、ありがとうございます。
>>861さんのは、アフォなので理解できませんでした…。
分かりやすいので>>862さんのを使いたいと思います。
本当にありがとうございました。
>>840ってなんだったの?A="?,?,?,?" て普通に出来るよね?
>>861
感動した!それ使わせてもらうよ!
>>865
やめとけ。
>>865
きょうび、トリッキーなコードはいいコードとは言わないよ
よほどクリティカルな個所に使う場合を除いて。
868857:02/08/09 13:33
連続で申し訳ないのですが、
Select Case KeyAscii
Case 48 To 57

このCase文を否定形にしたいのですが、やり方が分からないです。
Case Not 48 To 57
としても駄目でした…。
>>868
case else
Select Caseもやめとけ。
If 48 <= KeyAsci And KeyAscii <= 57 Then
を関数にしろ。
871デフォルトの名無しさん:02/08/09 13:38
VB5がただで配布されていると聞きましたが、どこでしょうか?

MSのダウンロードページを探したのですが、よくわかりませんでした。
(´-`).。oO(なんでこんな下らない質問が尾を引いてるんだろ・・・)
>>870
関数化するにしても
Select Caseのがいいよ。
>>872
・低レベルな話題なので誰でも話題に入れる。
・しかしこういう基本テクニックすら知らないVBユーザ多いから。
>>873
>>870が言いたいのはこういう関数だと思うよ。

Public Function IsNumericKey(iKeyAscii AS Integer) As Boolean
  If (&h30 <= iKeyAsci And iKeyAscii <= &h39) Then
    IsNumericrKey = True
  Else
    IsNumericKey = False
  End If
End Function

Select Caseはテーブルに展開されるから速いってのは
本当だろうか?
>>875
ついでに(ByVal iKeyAscii AS Integer)にしておけ。

> Select Caseはテーブルに展開されるから速いってのは本当だろうか
ジャンプテーブルに展開されるのは確かめた。
でも今回のようにCase 48 To 57じゃたぶんダメ。
Caseの後が数値で不等号とかがない時だけだと思う。
C/C++でジャンプテーブルに展開されるときの条件と同じと考えていいんじゃないかな。
877857:02/08/09 13:56
なんだか僕のせいでスミマセン。
初心者スレって言葉に甘えてしまって…

Ifが良いのかSelectCaseが良いのか分かりませんが、
関数化して使い回せるようにしてみます。
ありがとうでした。
878873:02/08/09 13:58
>>875
いや、それは理解してるが・・・Selectでいんでないの?という話。

Public Function IsNumericKey(iKeyAscii AS Integer) As Boolean
    Select Case iKeyAscii
    Case &h30 To &h39
        IsNumericrKey = True
    Case Else
        IsNumericKey = False
    End Select
End Function

>Select Caseはテーブルに展開されるから速いってのは
>本当だろうか?

微々たるもんだから、速度で判断するのはどうかと。
↓速度実験してるページ。
http://homepage2.nifty.com/yk2yk2/mn/tips/index.htm
>>876
いやByValにすると変数をコピーする時間がもったいないから
ByRefでいいのさ。きっと。
>>878
そのページは正確じゃないな。たしかにあの通りだとIfが速いが
比較の個数を増やすとSelect Caseが速くなる。

Sub Main()
  Dim i As Long, s As Single, tmp As Long
  s = Timer
  For i = 0 To 50000000
    If tmp = 1 Then
      tmp = tmp + 1
    ElseIf tmp = 2 Then
      tmp = tmp + 1
    ElseIf tmp = 3 Then
      tmp = tmp + 1
    ElseIf tmp = 4 Then
      tmp = tmp + 1
    ElseIf tmp = 5 Then
      tmp = tmp + 1
    ElseIf tmp = 6 Then
      tmp = tmp + 1
    ElseIf tmp = 7 Then
      tmp = tmp + 1
    ElseIf tmp = 8 Then
      tmp = tmp + 1
    ElseIf tmp = 9 Then
      tmp = 0
    Else
      tmp = 1
    End If
    
'    Select Case tmp
'    Case 1
'      tmp = tmp + 1
'    Case 2
'      tmp = tmp + 1
'    Case 3
'      tmp = tmp + 1
'    Case 4
'      tmp = tmp + 1
'    Case 5
'      tmp = tmp + 1
'    Case 6
'      tmp = tmp + 1
'    Case 7
'      tmp = tmp + 1
'    Case 8
'      tmp = tmp + 1
'    Case 9
'      tmp = 0
'    Case Else
'      tmp = 1
'    End Select
  Next i
  MsgBox Timer - s
End Sub
881857:02/08/09 14:41
何度も本当にすみません。ラスト教えて下さい。

先程の数字以外の入力防止コードを実行し、普通に数字以外の
入力が出来なくなったのですが、
数字→それ以外と連続押しした際にまれに入力できてしまう
ことがあるようです。例えば「4R」とポポン!とほぼ同時押しした際、
「4R」と入力出来てしまいました。
どうやら、KeyPressイベントが起きていないようです。

しかし、WindowsのIP入力する欄で同様の操作を行っても、
「R」は入力されません。
これを防止する術はあるのでしょうか。
つか、この操作が出来るのって、もしかして僕の端末だけですか?
>>881
CTRL+Vで貼り付けてもいい? SHIFT+INSERTで貼り付けてもいい? マウスで貼り付けてもいい?
>881
KeyUpかKeyDownにしてみれば?
884862:02/08/09 14:53
Case 48 To 57 にする理由は見やすいからです。
Select文が、内容によっては速くなるというのは、例えば
if i = 1 or i = 3 or i = 5 or i = 7 or i = 11 then 
select case i
case 1,3,5,7,11
という分岐があってiが1だったとします。この場合
select文はi = 1を判定した時点で判定が終了しますが
if文はi = 1,i = 3,i = 5,i = 7,i = 11全ての判定を行うからです。
**************************************************
524 :デフォルトの名無しさん :02/07/30 21:17
Ifの条件にAnd入れるくらいならIf二つ使え
**************************************************
と言ってるのもおそらくこの理由からじゃないでしょうか。
今回の質問は48 To 57だけですが、キー制御時は結構↑こういう状況多いので。
キー制御時ぐらいでは微々たる差ですがループ時には結構効果が出るのでは。
885857:02/08/09 14:56
>>882
いや、ペーストは別途、防止しています。
そうじゃなくて、>>881に書いたような現象を防げるかということです。
KeyPressをクリアしてしまうような。
(できれば、どなたか同じように実験していただけるとありがたいのですが…)

>>883
KeyUp、KeyDownもクリアしてしまうようです。
イベント自体起こりません。
>(できれば、どなたか同じように実験していただけるとありがたいのですが…)
ならまずコード出そうよ。
>>885
きっとChangeイベントは発生するはず。


それでどうすればいいかは知らん。
888デフォルトの名無しさん:02/08/09 15:04
質問!
VBでミリセカンド単位の時間を計算するのに、何か良い方法あるかな。
例えば、2002080912315977っていう(yyyymmddhhmmss**)Stringを元に、
差を計算する場合…、Dateだと秒までしか扱えないし…。
889857:02/08/09 15:12
>>886
すみません…。
テキストボックスのKeyPressイベントで
>>878さんのコードを呼んでいただくだけです。
で、テキストボックス上でポポン!とほぼ同時押しで
「4」→「R」と押して下さい。

>>887
どうもです。何か考えてみます。
890 :02/08/09 15:21
APIを使ってもVBはぱっとしない・・・
891886:02/08/09 15:21
>>889 ならなかったよ。ちなみにW2K
>>888
QueryPerformanceCounter
API使ったらVBじゃないだろ
見えないとこで使うなら許可
890がぱっとしない。
895857:02/08/09 15:39
>>891
ええっ!?
Windows98+VB6です…。なんでだろう。

うーん…いろいろ考えてみます。
すみませんでした…。
896888:02/08/09 16:00
>892さん
あーっと、精度の良い実行速度測定法ではなくて、単純に
ふたつのミリセコンドを含む時間を演算するのに適したデータ型は何か?
ということを聞きたかったのです。解りづらかったですね。
(計算対象の時間は文字列として既にある状態からの計算)

でも、QueryPerformanceCounterで戻り値に使われている型を調べればヒント
になるかもしれないですね、ちょっと調べてみます。
>>896
基本的に日付や時刻の差を求めるときは、数値で行います。
VBのDate型も1899/12/30 00:00:00からの経過時間を
日数を整数とした浮動小数点で保持しているはずです。

ミリ秒を含む文字型で比較する場合は、
ミリ秒を含まない文字列を取り出して、DateDiffしたものに1000を乗じ、
ミリ秒だけの差をそれに足してやればいいのでは?
C、もしくは、JavaのステートメントとVBのステートメント対応表みたいの
どっかに無いですか?
「Cプログラマーの為のVBの部屋」みたいな。
899865:02/08/09 18:36
あの後すぐ席外したんだが…
>>866-867
やめときます…ありがd
言語仕様すっくりしない。
はぁ〜鬱。
901デフォルトの名無しさん:02/08/09 22:45

>>840
変数の宣言ってしてる?ってーかしってる?

private sub form_load()
dim A as string    ←変数の宣言
A=?,?,?,?
end sub

Private Sub Command1_Click()
text1.text=A
End Sub

ってやればコマンドボタン押すとテキストボックスに
「?,?,?,?」って出てくるけど。
ちなみに俺が始めて作ったプログラム。どうでもいいか。
902デフォルトの名無しさん:02/08/09 22:52
>>901
あのころが一番楽しかったかも試練。
俺もほとんど同じコードから始めたよ。
>>898
そういうページを俺が作ってる。でも最近停滞中。
気が向いたら出来てるかもしれん。
904通りすがり:02/08/09 23:17
>>901
ちょっと待て。恐ろしく糞なツールだな。>VB
そんなんで動くのか・・・
>>904
お前ヴァカ?
他の言語でも同じだろ。
906通りすがり:02/08/09 23:20
((;゚Д゚)ガクガクブルブル
お前らある意味神だ
>>904
今時RADも知らん奴はプログラマ辞めたら。
>>901
それだと、テキストボックスには何も表示されないと言ってみる。
>>907
どーゆー文脈でRADが出てくるんだ??
VBが糞じゃなくて>>901が糞ということが判明しました。
>>901のバグに気づかない奴も糞。
Dimの位置がちがーう
912通りすがり:02/08/09 23:58
        ∧_∧        / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
       ( ´_ゝ`)  √| < なんだ、やっぱりクズ共の吹き溜まりかよ
      /    |\/ ノ   \
  __ / ム  / ̄\__     \_______
  \ ( 丿  \  /\ )
  ||\ ̄     ̄\  ̄)\
  ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄||
  ||  || ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄||
期待して損したぜ
通りすがりは早く通りすがっていただきたい
>>912
お前がクズだろうが。
>>913
「通りすぎていただきたい」だろ
>>915
確かに縋られちゃ困るな
すがられてもなぁ…
へへへ
ちんこ?
""でもくくられてないので、そもそも実行できない罠。
VBユーザって文法の時点で崩壊してる人間がいるのか。
一部を取り上げてそれを全体と見るヤシがいますね
922デフォルトの名無しさん:02/08/10 05:15
>>901>>905
オモロイな
>>901が今更過ぎるレスつけてるし恐らくわざとやっているんでしょ。
よってバカは>>905のみ、と思いますがいかがか。
923デフォルトの名無しさん:02/08/10 05:23
>>902のレスにある「ほとんど」とはそういう意味か
>>922
そう見ると楽しいね
925デフォルトの名無しさん:02/08/10 06:23
しょうもない質問ですみません。VB6で、
1. コードが書いてある窓をマウスを使わずに最大化して表示する方法
2. ツールボックス等をマウスを使わずに閉じる方法
を教えてください。
926デフォルトの名無しさん:02/08/10 07:59
角度を求めるときアークタンジェントを使って角度を求めると
とてもめんどくさい式になります。
どうにかしてください。
>>926
そのめんどくさい式を出せ
928926:02/08/10 08:48
>>927

siita=atn(y/x)
if x<0 then siita=siita+3.14159
if siita<0 then siita=siita+3.14159*2
929デフォルトの名無しさん:02/08/10 08:50
rnd(1)この関数の(1)って何ですか?
>>921
特に積分しても問題ないと判断しました。
>>928
VB には atan2 とかないし
それが一番カンタンなのでは
関数にすれば呼び出し側は1行ですむ
ぜんぜんめんどくさくないと思うが
>>925
1. [Alt]+[-] , [X]
2. [Shift]+[F10], [H] または [App], [H]
933925:02/08/10 11:51
>>932
ありがとうございます!
2の方は、なんかできないのですが、1の方だけでもだいぶ助かりました。
ADOを使用してAccess2000に接続したいのですがどう書けばよいのでしょう?
お願いします。
935デフォルトの名無しさん:02/08/12 00:39
ageとく
936デフォルトの名無しさん:02/08/12 06:29
Hello World について聞きたいんですが、

Private Sub Command1_Click()
Msgbox "Hello world"
End Sub

こんな感じのプログラムのことですか?
937デフォルトの名無しさん:02/08/12 06:39
http://isweb44.infoseek.co.jp/diary/wyn/pokemon.exe
著作権無視してポケモンゲーム作ってみますた
>>934
ODBCであらかじめ設定しとくか、MDBをダイレクトに指定しよう。
939デフォルトの名無しさん:02/08/12 08:00
>>937
ウィルスかブラクラっぽい。インフォシークはブラクラが多い気がする
940デフォルトの名無しさん:02/08/12 08:13
>>937
ワロタ
941デフォルトの名無しさん:02/08/12 08:59
>>939
ニューソクにもコピペあったよ、怖すぎる
        ∧_∧        / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
       ( ´_ゝ`)  √| < まあここは厨がかなり多いからな
      /    |\/ ノ   \
  __ / ム  / ̄\__     \_______
  \ ( 丿  \  /\ )
  ||\ ̄     ̄\  ̄)\
  ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄||
  ||  || ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄||
期待して損したぜ
943デフォルトの名無しさん:02/08/12 09:44
>>926
関数にしたほうが。グッド。

>>939
ポケモン現象だと思われ。漏れも大昔作った。

1000getしたい
構造体の配列を効率よくファイルに読み書きする方法伝授して下さい。
>>944
素直に先頭ポインタ指定してfwrite
946デフォルトの名無しさん:02/08/12 15:53
ダイアログを出さずにフロッピーディスクを
クイックフォーマットする方法はないでしょうか?
947888:02/08/12 15:54
897さんres遅れましたが、thanksです。
1000を乗じ…ってのが良くわかりませんでしたが、
なんとかなりそうです。
948デフォルトの名無しさん:02/08/12 16:17
VB6でメールソフトを試作しているのですが
MAPISession、MAPIMessageコントロールを使用して
添付ファイル付きのメールを送信する方法がわかりません
又、受信側の添付ファイルの取り出し方も同様です
過去ログにも一応目を通したのですが、それらしい記述は見つけることが出来ませんでした
何かアドバイスなどありましたらお願いします
>>948
RFC読めや。
これだからVB厨は・・・。

次はBASE64コントロールはどこにありますか?だろうな。
>>949
お前単に叩きたいだけだろ。よかったな初心者が出てきて(プ
951946:02/08/12 17:14
解決・・はしてませんが、いろいろ調べたところ、
かなり高度なようなので、他の方法を考えたいと思います。
>>946
format /q
>>951
今レスしたところだが高度では無いぞ
954946:02/08/12 17:22
>>953
「VBからダイアログ出さずに」だと難しいと書いてありましたが、
そうでもないんですか?
>>953
946じゃないけど、formatコマンドだと確かに
ダイアログは出ないけど、結局キーインは求められるのでは?
サイレンスフォーマットしたいってのが質問の意図のように思われ。
952だが
申し訳ない。よく考えずにレスしてもうた。

echo |format a: /q
とかやってもラベル入力求められちゃうな。ごめん
If Int(r / 2) = r / 2 Then r = r + 1 より
r = r + (Not r And 1) の方が早いと知った夏の日
 r = r or 1  ?
>>958
ごめんその方が単純でした。俺何やってんだろ…逝ってくる
>>957
元のやつも普通、
If r Mod 2 = 0 Then r = r + 1
と書かない?
961960:02/08/12 22:22
ところでrが整数の場合の話だよね?
そうでないと958も960も957の1行目の互換とはなりえない。
>>961
rは整数。しかもMod使えないくらい大きな数。
初歩的な質問だと思うのだけど、
イニシャライザーについてだけど、
Dim NumOfWord As Long = 100
とか、
Dim NumOfWord( 3 ) As Long = {1,2,3}
みたいな事したいんだけど、イイ方法おしえて。
>>957>>960>>962
わかった、その話題もういいや。
>>963
上のは
Const NumOfWord As Long = 100
でできる。下のは知らん
966963:02/08/13 02:31
>>965
もれも最初、Constの記述を見つけたから
そのまま、
Dim NumOfWord As Long = 100
これが通ると思ったんだけど、通らない。
ガクリ!
俺の技を伝授しる。
漏れは、いつもエディータはWZを使ってるので、統合環境は苦痛だったのだが、
この技を身に付けてから、快適だ!

[ALT]+[F] [R]
[ALT]+[F] [1]

伝授してやる、使ってみろ。
そろそろ新スレ頼む>1
>>954
なんで?
>>975次スレ頼むわ
>963
宣言直後に代入文を書く以外の方法は無かったと思われ。
言語仕様っつー事であきらめて。
972ななし:02/08/13 10:49
>>963
>>971
VB.NETなら初期化できますが。(As New 宣言の意味が従来とは違います)

だから、質問する人は、バージョンを書いてね。
次スレはちゃんとタイトルのAA変えろよ
974デフォルトの名無しさん:02/08/13 11:01
ADO初心者でデータベースの勉強をしているのですが、
レコードセットを取得する段階で本を見ながらSQLというのを書いています。
このSQLについて教えて下さい。

データベースの各レコードに「コード」を振っていて、
「指定したコードの次のコード」のレコードを取ってきたいのですが、
WHEREの所に何と書けば良いか分かりません。

例えば、コードを25と指定して、その次のコードの物(順当に行けば26)を
取ってきたい訳ですが、レコードを削除すると、26が欠番になる可能性が
あるので、+1と指定することができません。

これは何かやりようがあるのでしょうか。
お願いします。
(*´д`*)アハァ… VB初心者質問スレ Part13

↑これで。
>>972
VB.NET質問スレは別にあるんだから、ここは基本的には
VB6以前のの質問と思っていいのではないかな?
もちろん、環境くわしく書くに越したことないけど。
>97
コードを昇順に並べて全件取得。
んで、25番の次にあるデータを取得すればよろし。
WHEREはいらない。
978デフォルトの名無しさん:02/08/13 11:52
>>975
新スレよろ

>>974
WHERE コード>25 ORDER BY コード
で最初の一件ひろってくればいい
>>977-978
どうもありがとです。
レコードセットとSQLの使い方が今一つ分かっていませんでした。
勉強します。

>>975
(*´д`*)アハァ… VB初心者質問スレ Part13
↑これ賛成。
980 :02/08/13 12:18
ClientHeight , ClientWidth

ScaleHeight , ScaleWidth
の違いは?
>>980
裏技教えてやるよ。
<F1キーでヘルプが出る>
>>979
SQL文の質問ならデータベーススレに行った方がいいよ。
専門スレの方が質が高い、って>>977-978見て思った。
983デフォルトの名無しさん:02/08/13 19:29
VB6のMSHFlexGridで
SelectionMode=1(flexSelectionByRow)
に設定しているんですが、このときに
選択している(複数の)行はどのようにしたら
わかるのでしょうか?
☆ チン     マチクタビレタ〜
                         マチクタビレタ〜
        ☆ チン  〃  Λ_Λ   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
          ヽ ___\(\・∀・) <  新スレまだ〜?
             \_/⊂ ⊂_ )   \_____________
           / ̄ ̄ ̄ ̄ ̄ ̄ /|
        | ̄ ̄ ̄ ̄ ̄ ̄ ̄|  |
(´-`).。oO(新スレまだ?)
新スレ立ってなくても(゚ε゚)キニシナイ!!
まだかまだか
988デフォルメの名無しさん:02/08/13 19:33
987

まもなくここは 乂1000取り合戦場乂 となります。

      \∧_ヘ     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ,,、,、,,, / \〇ノゝ∩ < 1000取り合戦、いくぞゴルァ!!       ,,、,、,,,
    /三√ ゚Д゚) /   \____________  ,,、,、,,,
     /三/| ゚U゚|\      ,,、,、,,,                       ,,、,、,,,
 ,,、,、,,, U (:::::::::::)  ,,、,、,,,         \オーーーーーーーッ!!/
      //三/|三|\     ∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
      ∪  ∪       (    )    (     )   (    )    )
 ,,、,、,,,       ,,、,、,,,  ∧_∧∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
      ,,、,、,,,       (    )    (    )    (    )    (    )
990
9911000:02/08/13 19:36
1000

               ∩)  (´´ (´⌒(´
            ∧∧ノ  つ ズザーーーーーッ(´⌒(´
         ⊂(゚Д゚⊂ ノ ∧∧≡≡)ズザーーッ(´⌒;;;≡≡
              ∧∧(゚Д゚⊂⌒`つ∧∧≡(´⌒;;;≡≡≡
        ∩) ⊂(゚Д゚⊂⌒`つ≡⊂(゚Д゚⊂⌒∧∧≡≡)(´⌒;;;≡≡
     ∧∧ノ  つ ズザーーーーッ∧∧(´⌒(´ ⊂(゚Д゚⊂⌒`つ≡(´´ (´⌒(´
  ⊂(゚Д゚⊂ ノ ∧∧≡≡)⊂(゚Д゚⊂⌒`つズザーーッ(´⌒;;;≡≡
       ∧∧(゚Д゚⊂⌒`つ∧∧≡(´⌒;;;≡≡≡
    ⊂(゚Д゚⊂⌒`つ≡⊂(゚Д゚⊂⌒`つ≡(´⌒;;;≡≡≡
          ̄(´⌒(⌒;;∩)  (´´ ∧∧(´⌒)ズザーーーーッ
            ∧∧ノ  つ ⊂(゚Д゚⊂⌒`つズザーーーーーッ(´⌒(´
         ⊂(゚Д゚⊂ ノ ∧∧≡≡)ズザーーッ(´⌒;;;≡≡
              ∧∧(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
           ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
                 ̄ ̄  (´⌒(´⌒;;   ズザーーーーッ
キタ━━━━━━(゚∀゚)━━━━━━ !!!!!
995?
995デフォルトの名無しさん:02/08/13 19:37
☆ チン     マチクタビレタ〜
                         マチクタビレタ〜
        ☆ チン  〃  Λ_Λ   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
          ヽ ___\(\・∀・) <  チンスレまだ〜?
             \_/⊂ ⊂_ )   \_____________
           / ̄ ̄ ̄ ̄ ̄ ̄ /|
        | ̄ ̄ ̄ ̄ ̄ ̄ ̄|  |
カチャ
( ゚д゚)   ;y=ー( ゚д゚)・∵. ターン
.| y |.\/   | y |

   ∧_∧  / ̄ ̄ ̄ ̄ ̄
  ( ´_ゝ`)< 1000ゲット
  (    )  \_____
  | | |
  (__)_)
(゚∀゚≡゚∀゚)
(´・ω・`)
             わ          ,..-―-、           今
              |         /:::::::::::::::::l       1000 や
                 ∩  /::::::::::::::::::::|      ,、 番 !
      -―-、        |⌒ヽ/::::::::::::::::::::::|    _/|ノ ゲ
   /´Y    (´ヽ  ,、    l: : : i::::::::::::::::::::::::|-―'´: :丿  ッ
 ,、 _し' l     lヽJ/|ノ   \: |∧/l/|ノレ : : : :/   ト
 Y: : `ー`ー-―'´一': : |     /: : : : : : : : : : ::i-‐'′   や
  \: : : : : : : : : : : : /      /: : : : : : : : : : : |         |
   Y: : : : : : : : :r'´      /: : : : : : : : : : : :|
   /: : : : : : : : : :|       /: : : : : : : : : : : : |
  /:: : : : : : : : : ::|      / : : : : : : : : : : : : |
  /: : : : : : : : : : : |      /: ::_: : : : : : : : : :|
  `77ー--┬r一'       ̄/ / ̄`ー-┬r-'
  l'´)   ├|           l'´)     |~|
  し'    (ニ⊃        し'      (ニ⊃


             __
                /〃 ┼‐┼〃__
             /\    ノ                __
                      __  , -――-、  /\ノ
                      ヽ/\l::::::::::::::::::::\ /: : /
         ,..-―-、/)       |: : :|::::::::::::::::::::::/: : /
     /⌒Y    (_ノ  /)       |: : :|:::::::::::::::::::::|: : : /
      ̄l ̄l、     ) /`〉     ヽ:: :|::::::::::::::::::::l: : :/
         l: : :`ー--‐'‐'´: :/        \|∧ハ/l/: ::〈
       \: : : : : : : : : :く         |: : : : : : : : : : `ー-┐  ,.、
         l: : : : : : : : : :`ー―┐ ,、   |: : : : : : : : : : : : : : |二lニノ
         ヽ.: : : : : : : : : : : : : :|ニノ   |: : : : : : : : : : : : : : |
           ヽ: : : : : : : : : : : : :|      ヽ: : : : : : : : : : : /
           \: : : : : : : : :/       \ : : : : : : /
              ̄ ̄ ̄ ̄    ノ|      ̄ ̄ ̄       ノ)
                   ノしノ  し'(           ノ)__ノ (ノ(
                   '――――-'′         '-――一-'′
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。