(・ロ・)ホ,('ロ')ホ--ッッ!!!… VB初心者質問スレ Part17

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん

Part11 http://pc.2ch.net/tech/kako/1024/10243/1024380249.html
Part12 http://pc3.2ch.net/test/read.cgi/tech/1026642565/
Part13 http://pc3.2ch.net/test/read.cgi/tech/1029241786/
Part14 http://pc3.2ch.net/test/read.cgi/tech/1030947162/
Part15 http://pc3.2ch.net/test/read.cgi/tech/1032706491/
Part16 http://pc3.2ch.net/test/read.cgi/tech/1034302532/

Win32 API関連スレ
  Win32API 質問箱 Build4
  http://pc.2ch.net/test/read.cgi/tech/1023361418/
心得
壱.質問する前に過去ログにも目を通してみる。
弐.質問する前に MSDN などで調べてみる。
参.VBScript もこのスレでOK。
4.インストーラーなどの質問もOK。
五.下ネタもたまにならOK
2デフォルトの名無しさん:02/11/01 21:49
33げと:02/11/01 21:51
これまた微妙なタイトル(藁
スレ立て乙>>1
乙kare
どんなスレタイだよボケ。
なんだよ、この顔文字。絶対、前のが良いと思う。
こんなの見つけづらいだろ。
次スレ立てるヤシは、前のに戻しておくれよ。
>>8
可愛いねぇ。
親がBBSで愚痴ってるのがキモいが・・・。
8歳で既にプログラミングやってるんか(´д`;)
でも、子供はかわいいよな・・・
11デフォルトの名無しさん:02/11/02 02:23
お願いします。リストボックスの値をドラッグして別のテキストボックスに
ドロップすることできないでしょうか?

あ⇔か


あ⇔か?
L⇔R
半透明スプライトを表示したいのですが

Private Sub Sprite_Ini(ByRef Sprite() as SpriteObjectEx)
VsyncMode=True
Call Get@(hMemDC,0,0,32,32,Pat0%)
Call Get@(hMemDC,32,0,32,32,Pat1%)
Def Sprite(0)=Pat0%:Alpha 0,.5
Def Sprite(1)=Pat1%:Alpha 1,.5
End Sub

とした時にこの2つのスプライトが重なるとBGが
NORされてしまいます。何が原因でしょうか?

WinXPとVB.NETとDairectXを使用しています。
15デフォルトの名無しさん:02/11/02 07:22
ラベルコントロ−ルを使ってカ−ソルがコントロ−ルの上を通過している間だけ
テキストの色を変えたいです
マウスがコントロ−ルから離れたのを検出するにはどこをみればいいのやら・・・
Mouse_Moveイベント見てもわからないっすよね
なにか良い方法有ったら教えてください
16デフォルトの名無しさん:02/11/02 09:44
ポートの80が開いてるかどうか確認したいのですが
どの関数使えば確認できるのか教えてください。
>>16
connect
>>8-10

小さい子がディスプレイとにらめっこというのは、健康面でいかがなものかと思う。
19デフォルトの名無しさん:02/11/02 11:49
>>15
FormのマウスMOVEのイベントで ラベルの位置にあればラベルの色を変えるようにすればいい。
ラベルの位置は top left width height で 知るがよい。
20デフォルトの名無しさん:02/11/02 12:03
それだとうまくいかないから、SetCaptureもつかったほうがいいんでない?
21デフォルトの名無しさん:02/11/02 14:13
>>15
Form1_Mousemove()とAPIのWindowFromPointを併用。
タイマーもいる?
22デフォルトの名無しさん:02/11/02 16:42
age
23デフォルトの名無しさん:02/11/02 16:56
>>11
あ⇔か

イメージですか?

小人必死だな
小人すごいな…
(;゚∀゚)ヤラレター
前スレの 978 щ(゚Д゚щ)カモォォォン
>>25=小人
29小人:02/11/02 19:18
|ー゚)☆ニヤリ


|彡サッ
30デフォルトの名無しさん:02/11/02 20:22
ハハハ
31デフォルトの名無しさん:02/11/02 20:33
ほんの少し刺激を求めてる主婦のサークルを作りました!
私たち主婦が楽しめる安全でちょっとトキメキのある出会を求めて
只今男性会員を募集中です!! 女性会員も募集(^○^)/"
http://f-cc.com/~tokimail/
荒れ放題の無法恥帯だな・・・。
33転載:02/11/02 21:55
978 名前: デフォルトの名無しさん 投稿日: 02/11/02 17:33
テキストボックスをコントロール配列にして使用していますが、
要素がある場合にも、「実行時エラー"340" コントロール配列の要素"xxxx"がありません」
となることがあります。
一度終了して、再実行すると直りますが、
何でこのエラーが発生する場合とそうでない場合があるのでしょうか。
このバグの修正方法はコントロール配列を使用しないことなのでしょうか。
どなたかアドバイスいただけませんか。
34転載:02/11/02 21:55
980 名前: デフォルトの名無しさん 投稿日: 02/11/02 18:15
>>979
ソースはこのようになっています。
コントロール配列(txtMenu(0)〜txtMenu(3)まであります。
  
Dim MenuStr(3, 3) As String
Dim StaffStr(10, 1) As String

For i = 0 To 3
If Len(txtMenu(i).Text) > 0 Then

       rsSalesInfo.AddNew

rsSalesInfo!stfStatus = StaffStr(i, 1)
rsSalesInfo!stfID = StaffStr(i, 0)
rsSalesInfo!mpID = Val(MenuStr(i, 0))
rsSalesInfo!mpName = MenuStr(i, 1) + " " + MenuStr(i, 2)
rsSalesInfo!mpPrice = Val(MenuStr(i, 3))
rsSalesInfo!mpQnt = 1

rsSalesInfo.Update

End If
Next
このような感じでデータベースに新規レコードを追加しています。
発生するときと発生しないときがあり、どうしても解決できません。
>>34
原因はわからんけど、アドバイス。

(1) マジックナンバー(0〜3のリテラル値の記述)はやめなさい。
  仕様変更の度に余計な仕事が増えて胸糞悪くなる。
  (コントロール以外の)配列なら、LBound / UBoundを使うのが
  スジだし、コントロール配列やコレクションなら、For......Each
  でアクセスするのが健全な感覚。

(2) レコードの操作は、原則、SQLでやれ。

(3) rsSalesInfoが何の型で定義されているか、どこでインスタンス化
  されているか、不明。
  MLやBBSで他人に尋ねるなら、必要な情報は省略せず、開示すべき。

(4) データベースが関係する質問なら、DBMSと接続方法(使用ミドルウェア等)
  も示せ。

以上。
>>35に補足。

> コントロール配列なら、For......Eachでアクセスするのが健全な感覚。

コントロール配列の場合、何らかの設計上の事情で、要素の一部が削除された場合、
番号が再定義される訳ではないので、Index番号に欠番が生ずる。
だから、For...... Nextステートメントを使用したIndex番号によるアクセスでは、
エラーにならない保証はどこにもない。

それから、

For ...... Each

と書いたのは、

For Each ...... Next

の誤り。

以上。

>>35

更に補足。(藁

> MLやBBSで他人に尋ねるなら、必要な情報は省略せず、開示すべき。

こう書くと、数100行の長文コードをまんま○投げしてくるヴァカが
少なからずいるが、不要な情報は問題解決の助けにはならないと知る
べし。

情報の開示は、必要分のみ、過不足なく、ということだ。

以上。
>>35-37
簡潔に言うと・・・ググってこいや!って事ですか?
( ´_ゝ`)<分かってんじゃん。
4015:02/11/03 04:09
>>19-21
レス有難う御座います
APIやらタイマ−やら使わないとダメですか
と言う事はラベルなんか使わず自前で描画した方が楽そうっすね。
RECT構造体のテ−ブル作ってフォ−ムのMouse_Moveで比較とかが
スマ−トかな・・・つぅかVB痛いなぁ
>>40
まぁ・・・頑張れ・・・
>>40
そっちのほうが面倒に一票。
>>40
何と比較して痛いと言っているのか。

まず、おまいの得意な言語でどうやるのか書いてみな。
44デフォルトの名無しさん:02/11/03 13:49
当時、仕事を辞めたばかりで一人でフラフラしてた頃。
両親が遊びに来て、色々買ってくれた上に
家で作ってきたVB製家計簿プログラムを、机に置いて行ってくれた。

その次の日、母は入院。
あっという間に亡くなった。
葬儀を終え自宅に戻ると、Windows98にはまだ
母が作ったVBプロジェクトがあった。
大泣きしながらソースを読んだ。

あれ以来、VBプロジェクトは開けない。
>>44 ツマラン
>>44
ageるなよ。そんなことで
>>40
> RECT構造体のテ−ブル作ってフォ−ムのMouse_Moveで比較とかが
> スマ−トかな・・・

20と21のレスの意味を全然わかってないね。
Option Explicit
のすぐ下で宣言するときの
DimとPrivateの使い分け方がわかりません。
どういうときはどちらをつかうのでしょうか。
どっちもまったく同じ。
>>48
DQNじゃないならそこではPrivate使っておけ。
>>49
そこで平気でDim使うやつのソースは危険な佳織がぷんぷん。
>>50-51
後学の為に理由を教えてくだされ。
5349:02/11/03 18:00
>>51に誤解されたかな?
意味・動作はまったく同じということであって、
可読性の面においては Privateと書くことを
おすすめしておく。
54デフォルトの名無しさん:02/11/03 20:38
SetWindowLong(hWnd, GWL_WNDPROC, AddressOf MainFormWindowProc)
Public Function MainFormWindowProc(ByVal hWnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
〜省略〜
MainFormWindowProc = CallWindowProc(lngDefaultProc, hWnd, uMsg, wParam, lParam)
ExitFunction
てなことをかくとマウスカーソルを動かすたびにMainFormWindowProcの内容が実行される
サブクラスみたいなのですが、どういうことなのか、どういう順番で実行されているのかわかりません。
カーソルを動かすとSetWindowsLong関数が実行されるようになっているのでしょうか?
それともMainFormWindowProcが実行されてSetWindowLongが呼び出されているのでしょうか
55デフォルトの名無しさん:02/11/03 21:18
>>44
それを母のメッセージだと思ってガンガレよ!

おれも亡くなった人のソース読んだことがある。
なにやら切なかったな。
>>54
誰の書いたソースか知らんが、ちゃんとソース読め。
サブクラス化でぐぐれ。
>55
ただのコポペ改変です。
58デフォルトの名無しさん:02/11/04 01:18
VB6で,希望のデータファイルを関連付けられた標準アプリで開く方法を
教えてください。
たとえば,image.jpgやdata.txt をアプリケーションの指定なしに
標準アプリで開くという場合です。
Shell() やCreateObjectをためしたのですが,,,
VBにはうといもので,,低次元な質問で申し訳ない。どなたかお救いくだされ。
59VC厨:02/11/04 01:35
ShellExecute(NULL,"open","ほげほげ.jpg",NULL,NULL,SW_SHOWNORMAL);
(・<>・)ほぅ・・・ほーほほっほ・・・ 

●<>●
62デフォルトの名無しさん:02/11/04 02:12
はっきり言って全然初心者にやさしくない糞スレだね。( ´,_ゝ`)プッ
6358:02/11/04 03:33
>59
即答,感謝。Cだけど手がかり得たり。
VBではらくちんにはできないのね。あとは,自力で。
やさしくなかったけど,サンクスです。
>>63
VBでもヘッダ読む代わりにAPIビューアからコピペするだけじゃん。
APIビューアで使用するテキストファイルを単にプロジェクトに加えてもいいけど。
>>43
比較してるんじゃなくてWM_MOUSELEAVEもキャッチしない
ウインドウプロ-シジャが痛いなぁと思ったわけっす
と思っていたらTrackMouseEvent()ってWin98SE以降
なんすね
しちれいい足しました
66デフォルトの名無しさん:02/11/04 08:13
>>62
初心者にやさしいとは、どこにも書いてない。
糞スレではない。
糞レスがあるだけだ。
>>65
>と思っていたらTrackMouseEvent()ってWin98SE以降
そそ、WM_MOUSELEAVEメッセージじたいが新しいからね。
VB.NETならWM_MOUSELEAVEもサポート済み。
>VB.NETならWM_MOUSELEAVEもサポート済み。
え〜そうなんだ。いいなぁ。
69 ◆kB.Rp6wEqA :02/11/04 15:12
前にこの前スレあたりで
Inetコントロールを使ってExecuteした際に
漢字が文字化けしてしまうと、いう質問をしたものです。
VB6SP5 WindowsXPです。

また同じような話題で疑問が解けません・・・。

Dim TempStr as String
If State = 12 Then
70 ◆kB.Rp6wEqA :02/11/04 15:18
あー ↑のコード無しにして下さい。

InetコントロールのStateChangeイベントで
Stateが12になった時にGetChunkしてデータを取得しますよね。
で、前の質問でその際に icStringでなく、icByteArrayを使って、
バイト配列を結合してやれば漢字が文字化けしないとわかりました。
んで、そこまでは確かにOKなのですが、
どこまで取得していいのか分かりません。
あー 意味不明ですね・・・
icStringで取得していた時には文字列型なので
もうデータが無い、つまり最後まで取得できた場合は
取得したデータの中身が無いので、それで判断してループを抜けてやればOKでしたが
icByteArrayで取得しているとバイト配列なので
その中身が無いかどうかをどう調べればいいのかわかりません。
if CStr(TempStr) = "" then とかで判定しようとしてみたのですが、全然ダメでした。
どうやって、今GetChunkしたデータが空でもうこの先のデータがないと判断できますか?
71 ◆kB.Rp6wEqA :02/11/04 15:25
ageわすれ 
72PC教室で:02/11/04 15:41
オリジナルのプログラミングの宿題が出ています。

身長、体重の偏差値を出すプログラミングを考えています。
VB暦半年ぐらいですが、可能ですか?
>>72
お前には不可能。
53 名前:PC教室で :02/11/04 15:44
     ~~~~~~~~~      ~~~~~~
オリジナルのプログラミングの宿題が出ています。

身長、体重の偏差値を出すプログラミングを考えています。
VB暦半年ぐらいですが、可能ですか?



54 名前:デフォルトの名無しさん :02/11/04 15:46
>VB暦半年ぐらいですが、可能ですか?
はっきり言って意味わかんないです。


55 名前:デフォルトの名無しさん :02/11/04 15:47
>53
なんでここで聞くの?
VBの板あるやろ


56 名前:PC教室で :02/11/04 16:29
     ~~~~~~~~~      ~~~~~
>55
VBの板なんかねーよ。氏ね

で、
>>72__15:41
ワープしまくりか?
>>73
こんな奴に教えるな。
7772:02/11/04 17:52
おまえらじゃまだ
78もまずにパピコ:02/11/04 18:02
宿題自分でやらないならなんでPC教室なんか通ってんだ。
>>78

最近の学校やPC教室では、他人のリソースで問題を解決するアプローチを
推奨しているようです。(w

>79
そ、そうなのか?
…って本気で信じるところだったじゃねーかゴルァ!!






……………ネタダヨネ?
>>80

ネタというより、皮肉。反面教師とご理解ください。


指導者が、「わからないところはインターネットで調べてください」(検索エンジン等を利用した
情報収集の意味)と言ったのを、カン違いしたDQN学生が教えてクンと化す罠・・・。

ネチケットも指導して欲しい。
82デフォルトの名無しさん:02/11/04 19:39
質問ですVb66

改行を含むテキストがある。
その中から、1行だけを抜きたい。
取得したいという「抜きたい」ではなく、消してしまいたいという「抜きたい」だ。
abc
def
ghi
とあったら、2行目を消して
abc
ghi
とするような事。
こういう風にひとつとかなら簡単なんだが
これが4行めと28行目と71行目と121行目と143行目と187行目を抜きたい!
ってなったときに何か難しくてできねーんです。
こういう処理を一般化する方法無いでしょうか?
やり方教えてくださいでつ・・・。
83デフォルトの名無しさん:02/11/04 19:41
MSFグリッドのヘッダー部のみ文字列をセンター寄せしたいのですが、
ヘルプに載っているようにMSFGrid01.ColAlignmentHeaderってのを入力してもエラーが出ます。
これはどうやって使うものでしょうか。
>>82
後ろから抜いたら? (´ー`)
>>82

ファイルに対して直接どうこうしようとするのは、たぶんドツボに
ハマルと思うので、

(1) 配列
(2) コレクション
(3) RDB

のどれかで処理してみては?

# 最善解かどうか、わからないけれど・・・。
>>85
listはいいやねぇ。
>>82
一行ずつカウンタ回しながら該当行を改行コードごと消すだけじゃないの?
1行だけの時に対して何が難しくなるの?
88ワン:02/11/04 19:59
>>85
そーだな。メモリーが有り余ってるなら配列に
全部ぶちこんじまうのが一番らくだな。
89デフォルトの名無しさん:02/11/04 20:01
>>82
何で一つだと簡単で、複数だと難しいの?
>>89
確かに。最悪でもその関数を複数回呼べば良いだけで。
>>89

要件の汎化(抽象化)ができていないものと思われ。
VB初めて5年ほど。
といってもブランクありまくったり、とろくさい手法ばかりでやってきたおかげで
ちぃとも上達しませんでした。
が、ここ半年でずいぶんと理解が深まりました。
長年の謎だった「.hwnd」とか、WinAPIもMSDNみて自分で使えるようになったし、
(今まではサンプルからコピペしてた)
hwndがらみでWindows自体の仕組みも少し理解が深まりました。
え〜と、ようするに

ヽ(´ー`)ノ ワーイ。
>>92

で?
94デフォルトの名無しさん :02/11/04 21:32
ファイルを読み込んで、
そのファイルの内容を小文字に変換してから
そのファイルを読み込むプログラムを作成したのですが
FileName = "index.dat"
Open FileName For Append As #1
Data1 = StrConv(InputB(LOF(1), 1), vbUnicode)
Komoji1 = LCase()
Print #1, Komoji1;

Close #1
これだと「ファイルモードが不正です。」と出てしまいます。
どうすればよいでしょうか?
9594:02/11/04 21:33
すみません。
FileName = "index.dat"
Open FileName For Append As #1
Data1 = StrConv(InputB(LOF(1), 1), vbUnicode)
Komoji1 = LCase(Data1)
Print #1, Komoji1;

Close #1
でした。
SQL="select * from temp where Feild1='" & Str1 & "'"
Feild1はAccessのテキスト型で、
文字列変数Str1に'が含まれているとSQL文の実行にエラーが出るのですがどうすればいいのでしょうか。
フィールドに格納したい文に'が含まれていることがあります。
>>96

InStr関数で、変数Str1に'が含まれている場合と含まれていない場合を
分岐する。
含まれている場合は、
シングルクォート1つ → 2つに置換すれば、メタ文字扱いではなくなる。

以上。
9896:02/11/04 21:42
>>97
シングルクォート2つ重ねる技を与えてくださりありがとうございました。
>>92
一度VBででもいいからウィンドウシステムってのを自分で書いてみな。
使える使えないを考えずに(間違いなく使えないがw)、
汎用的なものを自分なりに考えてとりあえず動くものを作ってみる。
できるだけ細かく、特に汎用的に作ってみるという所が大切。
こんなこともあんなこともサポートできるようにって考えて作ってみる。
すると既存のものがなぜそういう仕様になっているのか
それによりどこに問題が発生するのかとかががよーくわかるよ。
自分が理解できないことや、表面だけみてクソの一言ですますDQNが
かわいらしく思ってくるしね。

ああ、年取ってくると偉そうなこと言いたくなるな・・・
>>99

> 汎用的なものを

再利用性ゼロのハードコーディングを一生卒業できない椰子もいてますが。(w
(茶々スマソ)
>>94
追加書き込みなのにInputBで読み込もうとしてるからでは?
読み込みはInputモードで。
10292:02/11/04 21:56
>>99
よく分からないのですが、ウィンドウや、ボタンやテキストやなにやらを
全部自分で描画するシステムってことでしょうか?
ActiveXコントロールみたいな。
ゲームのインターフェースを作るってな感じですかね?
>>102
ウインドウシステムだから外枠だけだろう。

とか言ってみる。
99が言ってるのは
http://www.vector.co.jp/magazine/softnews/020420/n0204201.html
こういう物だと予想。
>>104
絶対違うと予想。

ただのspyじゃん。
>>104
全然違うと思われ。

汎用的なもの。
不特定多数のプログラムから呼び出されることを考慮したdllとか、
エミュレータもどんなROMでも実行できるという面で汎用的だしな。


107デフォルトの名無しさん:02/11/04 22:58
DBGLIDのデータソースをクリアする方法を教えて下さい。
(表示されてるデータをクリアしたいです)
よろしくお願いします。

>>95
AppendモードでOpenしたファイルから読み取ろうとしてるから?
Binaryとかで開けばできるけど。

読み取るファイルと書き込むファイルを分けたほうが簡単。
小文字のファイルが完成したら、元ファイルを削除。
小文字のファイルを元のファイル名にリネーム。
>>107
ソースを外せばいいんじゃん?
SQLなりテーブルなりをソースにしてんでしょ?
110デフォルトの名無しさん:02/11/05 15:19
ListViewで 選択されている行が 何行目か知るには どうしたらいいでしょうか?
111デフォルトの名無しさん:02/11/05 16:05
ListView.SelectedItem.Index
112デフォルトの名無しさん:02/11/05 16:17
>>111
どうも。
逆に何行目を選択させるには どうしたらいいんでしょうか?
113デフォルトの名無しさん:02/11/05 17:09
ListViewを抜けると、選択されているのが消えてしまうんですが、
選択表示のままにしとくには、どうしたらいいんでしょうか?
114デフォルトの名無しさん:02/11/05 17:38
みなさん、こんにちは

VB6.0からLinux上のPostgreSQLのデータを取得するには
どうしたらよいでしょうか?

・・・そういうことは、出来るんでしょうか?
>>114
できる
>>114

[VB製プログラム]           [ PostgreSQL ]
   ↓↑                 ↓↑
[  Windows  ]←ネットワーク→[   Linux   ]

こういうイメージだな。
117デフォルトの名無しさん:02/11/05 18:22
>>112
'iは選択したい行列目
ListView1.ListItems(i).Selected = True
>>113
ListviewコントロールのHideSelectionプロパティが
TRUEなら、フォーカスを失った後も選択されている。
失ったように見えても、フォーカスを戻せば表示は復帰する。
選択は解除されていない訳だから。

ListViewは確かに他のコントロールに比べてMSDNのドキュメントが弱いね。
私も、最初はよくわからなかった。

MSDN「リスト ビュー (ListView) コントロールの使い方」
SampleのDatatree(TreeViewとListView)をみれば、理解が深まるよ。
118デフォルトの名無しさん:02/11/05 19:37
ボタンを押したときに、labelやpictureboxなどに書かれた文字に
フェード効果を加えたいのですが、どうやってやったらいいのでしょうか?
>>118
TimerコントロールでJOJOに色薄くしたらどうかね。
120デフォルトの名無しさん:02/11/05 20:04
>>119
必ずしもTimerコントロールは必要ないと思う。
DoEvent や Sleep 関数で適宜ウェイトを入れれば、滑らかな動作になるのでは?
121118:02/11/05 20:44
>色薄くしたらどうかね
RGBの値じゃなくて"明るさ"ってことですよね。明るさを変える方法なんてあるんですか?
>>121
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub Label1_Click()
  Dim n As Long
  For n = 0 To 255 Step 16
    Label1.BackColor = n * 256 * 256 + n * 256 + n
    DoEvents
    Call Sleep(100)
  Next
End Sub
123デフォルトの名無しさん:02/11/05 22:03
こんばんわ。VB6で宛名ラベルを印刷するのにデータレポートを検討しています。
(友人のライブなどお知らせするために使う予定です)

Accessのレポートは使えるのですが、ぱっと見たところ列の指定方法がわからず
困っています。単純に印刷すると一列で改ページすると思うのですが何か方法が
あれば教えて下さい。よろしくお願いします。


124118:02/11/05 22:09
>>122
ありがとうございます
>>123
Accessにはレポートのウィザードではがきサイズにするヤシがあったと思うが
激しくスレ(板)違いなのでAccess採用するならビジネスソフト板へ。
君の技能にもよると思うが、Excelに書き出すのがもっとも幅決め簡単じゃないかな。
126デフォルトの名無しさん:02/11/05 23:11
>>124

レスありがと。幅決めが必要なのですか?う〜ん、困ったな。
VB採用は決定なんですよ<ディベッロパーツールも買えないし。

どうもその辺がピンと来ないので教えて頂けると嬉しいのすが・・・
よろしくお願いします!ちなみにPrinterオブジェクトはちょっと
厳しいものを感じております(TT。
127デフォルトの名無しさん:02/11/05 23:40
寝ます。
>>122
>Label1.BackColor = n * 256 * 256 + n * 256 + n
RGB関数でよかろうに。nがLongなのが味噌だな。
>126
どう考えても決定を覆した方が楽な気がするぞ。
VBでやると余計面倒だって事を説得しる。

VBだと配置から出力まで全部自分で設計しなくちゃいけないし、
印刷に少し癖があってノウハウがないときついし、
それなりのもん作るならサードパーティのコントロールがいるしと、
色々面倒なのよ。その辺りを強調して何とか踏ん張れ。
んー。クリスタルレポート買え。
131デフォルトの名無しさん:02/11/06 09:21
>>117
ありがとうございます。

フォーカスがなくなっても、選択された状態になりました。
が、選択色が、違う色になってしまうので、この色を変えるには
どうしたらいいのか教えてください。
宛名印刷くらいPrinterオブジェクト使え
133デフォルトの名無しさん:02/11/06 11:13
VB+ADOで、OracleからEXCELシートへテーブルを落としたいのですが、
項目名を含めて落とすにはどうしたらいいのでしょうか。
お願いします。

134デフォルトの名無しさん:02/11/06 12:03
DRIVEリストボックスに表示された、ネットワークドライブを選択すると、
そのドライブの元のPATHを取得する、なんてことは可能でしょうか。

例えば、Xドライブに「\\server\java\」をマウントしていたとして、
DRIVEリストボックスからX:を選択することで、別途用意したディレクトリリストボックスに
「\\server\java\」と表示したいのですが。

APIかなんか使うといけますか?(APIの知識が薄くてアレです...)
135134:02/11/06 12:13
あああ、すいません。
最終的にFileListBoxを選択し、別途用意したTextBoxに
「\\server\java\aaa.java」みたいに表示したい、ってのを書きそびれました。
136134:02/11/06 12:35
>>133
ADOのFieldsコレクションでいけませんか?
Helpに載ってると思います。
137デフォルトの名無しさん:02/11/06 13:19
Formをリサイズしたあと、マウスをUPした時に 処理をいれたいんですが
どのようにすればいいのでしょうか?
>>137
???
resizeイベントじゃだめなの?
139デフォルトの名無しさん:02/11/06 13:39
>>137
フォームのサイズ(Width,Height)をどこかに格納しておいて、
マウスをUPするごとにフォームのサイズをチェックしたら?
140マジレス:02/11/06 14:27
>>137
「画面のプロパティ」の「効果」の
「ドラッグ中にウインドウの内容を表示する」のチェックをはずす。
14172:02/11/06 14:45
>>139
あんた天才
142137:02/11/06 14:47
画面のサイズが変更された時、画面の表示しなおしの処理を入れたいんですが、
それが重いので、サイズ変更してマウスをはなしたときに 一発 処理を入れて
表示するようにさせたいんです。

とりあえず、サイズの変更だけやっておいて、表示しなおしは
PAINTのイベントでやってなんとか うまくいきました。
143デフォルトの名無しさん:02/11/06 14:49
>>139
マウスをUPするイベントが 入ってこないので 失格。
>>142
フォームをサブクラス化してWM_EXITSIZEMOVEメッセージを
拾えばリサイズが終わったっていうイベントが取れるよ。
>>144
素人にはお勧めできない
146デフォルトの名無しさん:02/11/06 21:39
データレポートについて

空のデザインを作っておいて、印刷時に設定(マスタとか)を見て
レポートサイズ、印刷項目を作成したいのですが可能でしょうか?

例えば、フォーマット時のイベントでこう書けとか助言をお願い
いたします(__)。まず項目を作成するコードがわかりません(TT。



>146
とりあえずサンプルプログラムを探せ。
設定されたファイルがあるかチェックしようと、Dir関数を使おうとしたものの、

  s = "\\NetworkPath\"
  If Dir(s) <> "" then

と、ネットワークパス(\\〜)を指定すると、「""」じゃなく、普通にエラーが帰ってきます。
これをErrorトラップ以外でチェックする方法はないのでしょうか。

おながいします。
149デフォルトの名無しさん:02/11/06 22:43
lmhosts or hostsにIPを指定しておくか、Win98以降なら\\IP\〜で良いような
記憶があいます。
150デフォルトの名無しさん:02/11/06 22:46
>>146>>147

探して見たのですがそのようなサンプルにたどり着けませんでした。
誰かヒントあればお願い致します。うぇ〜ん
151148:02/11/06 22:52
>>149
Win98(会社)で作り、Win2K(家)で確認ですが駄目です。
家では当然ネットワークがありませんので、エラーが出るワケです。

lmHostsにわざわざ書き込まないと無理なんすか…ダラーン…
>>151
API使ったら?
153148:02/11/06 23:03
>>152
く、詳しく教えてつかぁさい!
155148:02/11/06 23:12
>>154
どうもです。
よく見てみます。
Vbで帳票は厳しいな。
is予約語(文字列)=True,False
みたいに、ある文字列がJavaScriptなどの予約語かどうかを判別する関数はあるのでしょうか?
>>157
少なくともJavaScriptの予約語を判別する関数なんてあるめーよ。
VBの予約語を判別する関数もない。予約語の一覧もない。
159157:02/11/07 00:35
そうですか・・・。
あと音の出ないメッセージボックスはどうやってつくるのでしょうか?
ピコンピコンうるさいです。
160157:02/11/07 00:54
あきらめます。
20分弱の間に何があったんだ?
162157:02/11/07 01:27
自分で音の出ないメッセージボックスをつくるから別にいいんです。
163デフォルトの名無しさん:02/11/07 09:54
msgbox("なんとか")
って 音でるんだっけ?
164デフォルトの名無しさん:02/11/07 10:05
ファイルをドラッグアンドドロップして、OLE_DragDropを発生させているのですが、
そこで
Data.Files.Count
とやっています。
特に問題はないのですが、
エクスプローラーから「マイコンピューター」や、「マイネットワーク」辺りの
ファイルじゃない物をドラッグアンドドロップすると
「エラー461 データの形式が一致しません」
となってしまいます。
どうすればよいのでしょうか?
>>164
On Error Resume Next これ最強。すべてのプロシージャの最初に入れとくべし。
>>164
ぐぐれが一発で出てくると思うが
' ドロップされたデータがファイルであるかを判断する
If Data.GetFormat(vbCFFiles) Then
>>165
それはちと怖い。
>>166
できました!ありがとうございました。
168デフォルトの名無しさん:02/11/07 13:53
VB.NETで
textboxの値をlong型に取り込みたいのですがうまく取得できません

dim i as integer
i = val(trim(TextBox1.text))

てなカンジで i に入力したテキストボックスの値を代入したいのですが
上記の書き方だとエラーが出てしまいます
VB6とかでやっていたのと同じように書いているのですが

Microsoft.VisualBasicとか前置きしてもダメです

どういう記述をしたら良いのかご存知の方がいましたら教えて頂けないでしょうか?
169デフォルトの名無しさん:02/11/07 13:56
>>168
>textboxの値をlong型に取り込みたいのですがうまく取得できません
         ^^^^^^
>dim i as integer
      ^^^^^^

ネタか?
170168:02/11/07 13:58
まちがえますた。
別にintegerでもlongでもどちらでも失敗してるんでどちらでもいいんですが。

dim i as long
i = val(trim(TextBox1.text))

因みにstring型への代入はできるんですが、
これにぶっこんでからの代入もうまくできません。
>168
マジレスすると、それだとDouble型が返るからだ。
オーバーロードぐらい覚えておけ。
つーか、タスクウィンドウ見れば一発だろーが。
つーか、スレ違い
173デフォルトの名無しさん:02/11/07 17:37
Dirを使うと、そのモジュールが終了するまでエクスプローラーが操作不能になってしまうので
回避したいのですがどうしたらできますか?
>>173
APIのFindFirstFileとかに変える。
>>173
というか、どういうもの組んだらそうなるのか知りたい。
>>173
スレッドとかどうだ?

>>175
同意。
177 :02/11/07 20:00
>>163 出るかも
vbInformationとかvbCriticalとかによって、Windowsのサウンドの
メッセージ(警告)とかメッセージ(通知)とかのサウンドがなるよ。
>>173
つーかエクスプローラーが操作不能になるという意味がわからん。
>>>173
OS入れなおせ
181デフォルトの名無しさん:02/11/07 20:43
VBで、一つのクラスから生成した複数のオブジェクトを
そのオブジェクトの名前で検索して取り出す事ってできますか?
要はオブジェクトのIndexを作りたいんですが……
>>181
コレクションを使えばできるのでは?(未確認)
>>181
オブジェクトの名前ってなんだよ?
どこから取り出すんだ?
オブジェクトのIndexってのも意味不明。
なにがしたいんだ?
>>183

その発想を突き詰めていけば参照とかポインタに行き着く。
勉強する良い機会だ。温かく見守ってやろうや。
185173:02/11/07 20:49
ファイルをエクスプローラーからドラッグアンドドロップしてコピーするとかすると、
コピー中エクスプローラーが操作不能になりませんか?
やっぱAPI使うしかないですかね。
APIだとFindCloseすれば大丈夫ですた。
>>185
いつの時代のWIndowsですか・・・?
VB2.0とかなら確かにそんなことも起こっただろうけど。
>>184
クラスとか書いてるんだから参照は知ってんじゃないのか?
発想を突き詰めるまでもなく。
>>187
じゃあ出来ないとおかしいわけで。
189173:02/11/07 21:13
いや、普通に起きますって。
コピーって、エクスプローラからエクスプローラーってことじゃないすよ。
エクスプローラーから自作のソフトへドラッグアンドドロップして、
自作ソフト内でコピー処理をするんですよ。
>>188
そんな事はない。知っていることと使いこなすことにはレベルの差がある。
クラスとか知っていてもデザインパターンにたどり着くまでには時間がかかるように。
>>189
シェルAPIを使えばどうかな?
しらんけど。
http://www.ab.wakwak.com/~greenspace/dev-api/theapi/reference/shfo.html
こういうことじゃねーの?
Dim o1 As clsTest
Dim o2 As clsTest

Set o1 = New clsTest
Set o2 = New clsTest

Call o1.PrintName
Call o2.PrintName

希望する出力
o1
o2
>>173
他のパソコンで試してみ。
VBの参考サイトでお勧め教えて下さい。色々な問題がカテゴリで
別れいてサンプルソースなんてあれば最高ですが・・・業者の
サイトでも結構です(良いとこならお金出します)。

vbvbvb.com
>>194
新山(へろぱ)
みーくんパパ
空耳工房
194>>195>>196

ありがとう!ぐぐっても色々出てきて、どこが良いか困ってました。さっそく拝見(活用)させて
頂きます。今更VBなんですが、、、仕事ですんで。
あるスレで楽勝で組めると書いてありました。
できる限り短いコードで書けますか?

問題:

WINDOWS上でDirectX使ってフルスクリーンモードにしたのちに、
適当なキャラクタをチピキャラをてくてく歩いくアニメを表示する。
>>198
このスレでは無理です。
今更な質問で恐縮ですが、「Nothing」を使うべき時ってどんな時なんでしょう?
どこからもオブジェクトが参照されなくなった時点で勝手に解放されるので、
Nothingは要らないって聞いて、自分のPGを見直してみたのですが…。

例えば私はDBを扱うPGで、プロシージャを抜ける時に、
使用したRecordsetを一々解放しています。
DBも必要なくなり次第解放しています。
が、For Each obj In xxx文で使用するオブジェクトは解放していません。
また、FieldオブジェクトやQueryDefなんかも解放していません。
今までOpenやCreateした時だけ消せばいいと思っていたのですが…。

あれこれ調べたのですが、考えれば考えるほど悩みのツボに入ってしまってます。
どうするのが正しいんでしょうか?
>200 暗黙の参照がなされていて循環参照になってしまう場合。
>>201
暗黙の参照ってなに?
203201:02/11/08 11:31
単に、「循環参照になってしまった場合」でよかったか。

暗黙の参照はプログラマーがNewしてないのに使えるオブジェクトの事。
AppとかFormsとかControlsとかかな。
TextBoxDecoratorとか作った時にはForm_UnloadでNothingしないとね。
>>200
さっさと解放したいときとか。
関数内のFor Eachだけで使う変数はFor Eachがすんだらすぐ要らないだろうけど
Nothingしなけりゃ関数が終わるまでオブジェクトが生きてる。
関数内ならまだマシだけど、これがグローバル変数だった場合
アプリが終了するまでオブジェクトが解放されないわけで。
それで良いのか悪いのはかは場合によるけど。
205200:02/11/08 12:49
ということはグローバルじゃない限り、
特別解放に気を使わなくても大丈夫なのかな?
Nothingしないと、リソース減ったままで
解放されなくなると思ってたんですけど、違うみたいですね。
心配ならとりあえずNothingしとけって事でしょうか。

なんだか判ったような判らないような…
とりあえず ありがとうございました〜。
206201:02/11/08 12:57
>205
基本的には変数のスコープが無くなれば自動的にNothingされる。
Class_Terminateで遊んでみれば分かるよ。

例えばButton1_Clickとかで、MousePointerをvbHourglassにするオブジェクトを
生成すると、関数を抜けると自動的にClass_Terminateが実行されて
MousePointerがNormalに戻るとか。
>205
VBに限らず、「自動で云々」に頼った作りは極力避けるのが基本だ。
自分で確保した領域は自分で明示的に解放するほうが絶対にいい。
OpenしたらClose、SetしたらNothingって決めとけ。

208201:02/11/08 13:04
>>207 AutoPointerの立場は?
209204:02/11/08 13:22
>>205
>>201じゃないけど、循環参照には気をつけてな。
要するにクラスAのインスタンスaがクラスBのインスタンスbを参照して、かつ
bがaを参照している場合。明示的にNothingにして循環を断ち切らないと
(アプリを終了しないと)どこからも参照されない状態にならないから。
210207:02/11/08 13:30
>208
とりあえずそういったものは置いといて、あくまで「基本」って事で。
最初から便利なものに頼りがちなVBだからこそこういった部分は大事にしたいな、と。
211デフォルトの名無しさん:02/11/08 16:02
>>210
うっせーバカ。
212201:02/11/08 16:10
Set 211 = Nothing
Nothingしたらすぐインスタンスは破棄されるの?
>>213
インスタンスは二つ以上から参照される可能性があるので、Nothingしても他から参照されていれば破棄されないし、
一つだけから参照されているならNothingした時点で破棄される。
215201:02/11/08 16:49
>213
一応Class_Terminateはすぐに実行されるようだけど、
実際にメモリーから破棄されてるかどうかまでは分からない。

[Form1]
Private Sub Command1_Click()
  Dim o As Class1
  Debug.Print "AAAA"
  Set o = New Class1
  Debug.Print "BBBB"
  Set o = Nothing
Debug.Print "CCCC"
End Sub
[Class1]
Private Sub Class_Initialize()
  Debug.Print "Class_Initialize"
End Sub
Private Sub Class_Terminate()
  Debug.Print "Class_Terminate"
End Sub
[結果]
AAAA
Class_Initialize
BBBB
Class_Terminate
CCCC
某所によると

第2の理由は、インスタンスを消滅させるメカニズムが変化したことにある。
VB 6では、あるインスタンスへの参照がなくなると、その時点でインスタンスは消滅させられる。
しかし、VB.NETでは、.NET Frameworkのほかの言語と同様に、不要となったインスタンスはガベージ・コレクタと呼ばれる自動ゴミ掃除機能が回収する。
そのため、VB.NETではデストラクタが実行されるタイミングはガベージ・コレクタ次第であり、プログラマーからは予測できない。

とあるのな。
>>215
COMとかあんまり詳しくないんで、つっこみ所があると思うけど、
Nothingするって事はCOM的に言えばRelease()を呼び出すこと。
(ちなみに参照することはCOM的に言えばAddRef()を呼び出すこと)
オブジェクトはAddRef()したら参照カウンタを+1してRelease()したら-1して
参照カウンタが0になったら自分で自分自身を削除しなければいけないことになっている。
だからVB6では参照がなくなった時点でメモリーも解放されると思うよ。
というか巨大な配列を持ったクラスで試したら解放されているのがわかるけどね。
でも、破棄に関しては、いつ破棄されてもいいようなプログラムにしといたほうがいいね。
だって、他の言語はいつ破棄されるかわからないんだよね。VB6.0で変な癖つけたくないな。
>>218
いつ破棄されてもいいようにするのは当たり前なんだがVBで変な癖つけるってどんな癖だ?
他の言語に比べて注意すべき違いがあったか?
>>219
NothingしたらすぐにClass_Terminate() が実行されるという前提でプログラムすること
>>220
VBをちゃんと使えている人はNothingをしてもすぐにClass_Terminate()が
実行されないのを知っているのでVBで変な癖がつくことはありませんけど?
>>221
いや、VB6はNothingしたらすぐにClass_Terminate()が実行されるらしいです。
>>222
間違いです。VB6ではどこからも参照されなくなったときにClass_Terminate()が実行されます。
知識不足のままVB6.0で変な癖つくとか言ってると笑われますよ。
224デフォルトの名無しさん:02/11/08 18:09
Recordset.Close しないで
Set Recordset = Nothing
するとどんな副作用があるの?





と煽ってみるテスト。
>>224
これも中途半端な知識かつかなり想像だが、もしRecordsetがOpenされたまま
Nothingをされたとき(正確にはどこからも参照されなくなったとき)Closeを
実行しないような実装になっているのならOpenされたままになる。
Openされたままほったらかされるのが良くないのなら何かまずいことが起きるだろう。

もっとも普通の感覚を持っている人ならOpenされたまま解放されたら
Closeやそれと同等の終了処理をするだろうがそれは作り手にかかってる。

ADOやDAOでCloseしなくて解放しても大丈夫と仕様で決まっているのなら
大丈夫だろうが決まっているのかどうかは知らん。

ってこれは煽りにマジレスなのか? というよりどこが煽りなのかな?
226 :02/11/08 18:31
え、副作用あるの?
227 :02/11/08 18:32
>>224
HELPにNothingでCloseされますって書いてあったような…。
228デフォルトの名無しさん:02/11/08 18:36
MSFlexGridコントロールで
書き込んだ文字色を例えば「青」としても
文字の色を変えた行にカーソルを合わせると
文字色が「黒」になってしまいます。
文字の色を変えた行にカーソルを合わせても
「青」のままにできるのでしょうか?
>>223
うーん。話がかみ合わないなー
他の言語では、どこからも参照されなくなった時点ですぐにClass_Terminate()が
実行されるわけではないってこと。
その点がVB6と違うっていってるんだけどな。
Nothingって書いてたのが誤解をうんだのかな。
>>226
If 仕様で副作用がないと決まっている() = True Then
  If 実際にやって副作用がでていない() = True Then
    MsgBox "仕様通り副作用はない"
  Else
    MsgBox "実装のバグ(もしくは仕様のバグ)"
  End If
Else
  If 実際にやって副作用はでていない() = True Then
    MsgBox "この場合は大丈夫みたいだがやめたほうが良い"
  Else
    MsgBox "副作用がある。でも実装がバグっていると言ってはいけない"
  End If
End If
でも話の流れはNothingだったんだよなー
232デフォルトの名無しさん:02/11/08 19:05
VBScript(ASP)で質問っ(マジレスください)

OpenTextFileを使ってcsv(カンマ区切り)ファイルを読み出して、カンマでsplitして配列としてデータをもつじゃんか。
んで、もし1データの中にカンマが存在したらそこもまた切られちゃうでしょ。
それを防ぎたいんだけど、どうしたらいいの?

(例

あいうえお,か,きくけこ,さしすせそ,たちつてと

誰かたすけてくださいっ
233デフォルトの名無しさん:02/11/08 19:16
Public Sub Main()
Dim str as Stirng
 str = "123"
 Call Test(str)
End Sub

っていう形でTestというプロシージャが呼び出される時、
Testというプロシージャの引数がByRef↓だとコンパイルエラーが出て、
Private Sub Test(ByRef arg As Integer)

逆にByVal↓だとコンパイルが通ります。
Private Sub Test(ByVal arg As Integer)

ByValの時でもコンパイルエラーにするようなオプションって無いでしょうか?
>>232
ダブルコーテーションでくくるのはダメ?

"あいうえお","かきくけこ","さしすせそ","た,ち,つ,て,と"
235デフォルトの名無しさん:02/11/08 19:49
>>234ありがとう。

いや。ダブルコーテーションでかこんであることを想定してのことです。
ダブルコーテーションでくくった中をのぞいてんでSplitしたいんですけど、
簡単な方法ないですかねー???
>>235
Write # ←→ Input # じゃなくてあくまで Split() で話をするなら、
分割後の最初と最後にごみが入るけど
デリミタを 「,」じゃなくて、「","」 にするのはどう?
237201:02/11/08 20:09
238デフォルトの名無しさん:02/11/08 20:19
>>236

いや。無事出来ました。
reg.Pattern = "(""([^""]|"""")*""|[^,]*),"
↑こんな感じのパターンマッチを作ってやってみたらうまく行ったよ。
皆さんさんきゅー!
>>204
> 関数内のFor Eachだけで使う変数はFor Eachがすんだらすぐ要らないだろうけど
> Nothingしなけりゃ関数が終わるまでオブジェクトが生きてる。
ループを途中で抜けない限りはループ終了時に解放されるはずだが。

>>207
ならお前は可変長文字列も動的配列も常に明示的に解放しろ。

>>217
> オブジェクトはAddRef()したら参照カウンタを+1してRelease()したら-1して
> 参照カウンタが0になったら自分で自分自身を削除しなければいけないことになっている。
それは単なるガイドラインであって、そのように実装しないといけない
という決まりはない。
240デフォルトの名無しさん:02/11/08 21:06
37=32+4+1
みたいに数字を分解するのってどうやるのでしょうか?
設定の保存とかで使われてたりするアレです。
241201:02/11/08 21:09
>239
本当だ、ビクーリしました。

For n = 1 To 10
  Debug.Print "n= " & n
Next
Debug.Print "n= " & n 'n = 11

For Each oTest In oTests
  Debug.Print oTest.nNumber
Next
Debug.Print oTest.nNumber 'オブジェクト変数またはWithブロック変数が宣言されていません。
242207:02/11/08 21:54
>239
そんな噛み付かなくてもいいじゃんかよー。
SetしたらNothingってのを基本にするのはそんなに悪か?
実際オブジェクトの解放し忘れでプロセス残ってた例も多々ある訳だし。
>>240
なにそれ。
>>240
何通りもあるんですが
245240:02/11/08 23:04
自分で10進数から2進数に変換するルーチンを書きました。
多分コレでOKかな。
>>245
やっと意味がわかった。











氏ねや
247デフォルトの名無しさん:02/11/08 23:31
Sub 罫線作成()
On Error Resume Next

Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone

罫線作成proc (xlEdgeBottom, 3) 'コンパイルエラー
End Sub

Sub 罫線作成proc(xlEdge, color)
With Selection.Borders(xlEdge)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = color
End With
End Sub

↑なんでコンパイルエラーなの?
>>247
ネタかもしれんが、
引数をカッコで括るのはCallステートメントでの呼び出しか
プロシージャの戻り値を利用する時だぞ。
249248:02/11/08 23:35
引数というより引数リストと言うべきか。
250201:02/11/08 23:38
>>242
SetしたらNothingってのは悪いことではないが、
基本というべきものじゃないと思うよ。
俺はスコープから抜ければNothingされるのに、無駄なことをと思う。

まあ、mallocしたらfreeすべきかという問題と同じかもしれんので、
人に強制はしないほうが良いかと。
もうしつこい。ヘルプ載せるから、こんなのでダラダラすな。

>Nothing キーワード

>複数のオブジェクト変数が同じオブジェクトを参照することがあります。
>キーワード Nothing をオブジェクト変数に代入すると、その変数は実際の
>オブジェクトを参照しなくなります。複数のオブジェクト変数が同じオブジェクトを
>参照すると、各変数が参照するオブジェクトに関連付けられたメモリと
>システム リソースは、Set ステートメントを使ってすべての変数を明示的に
>キーワード Nothing に設定するか、またはキーワード Nothing に設定した
>最後のオブジェクト変数が、暗黙のうちに適用範囲 (スコープ) 外になった後でなければ
>解放されません。
>247
ってか日本語のプロシージャ名使うなって。
253239:02/11/09 00:44
>>242
俺も250とまったく同じ考え。

悪いとは思わないが「絶対にいい」という類のことでもないと思う。
個人的には、End Subの直前でローカルな変数にNothingをセット
してるコードを見ると、なんだかな、と思う。
254207=242:02/11/09 02:00
>250 >253
俺はどうも、昔これ(明示的なNothing無し)で苦労した記憶の呪縛から抜けきらんらしい。
逝ってくる。
255201:02/11/09 02:23
Nothing入れたら直ったから、必ずNothingしときゃいいや
なんて消極的じゃダメ!!原因を追求しる!!
256デフォルトの名無しさん:02/11/09 06:48
Nothingするのは、当然だと思うが・・・。
当然すべきことを 怠っていただけの話だろ。
257デフォルトの名無しさん:02/11/09 08:11
典型的なVB厨ですな。
とにかく何でもかんでもNothingしとけば間違いないってか。
自分が使ってる言語の仕様がよっぽど信用できないんだろな。
使い終わったらnull/NULLの代入
はc/c++/C#/javaでもよくやるよー。

拒絶反応を示すのが居るっぽいけど2ch限定だから無視すれ〜
259デフォルトの名無しさん:02/11/09 08:34
> はc/c++/C#/javaでもよくやるよー。
やるヤツもいるが、当然すべきとは言わないな〜
まあ頑張って文字列にもvbNullstringをセットしとけ〜
コーディングルールがまだないならセットすることを薦めるよん

当然?ルールに従うのが当然ですが?
261デフォルトの名無しさん:02/11/09 08:41
典型的なVB厨ですな。
他人にNothingをすすめる理由は
「俺の所のコーディングルールで決まってるからそれに従え」ってか。
262デフォルトの名無しさん:02/11/09 08:52
>>257
VBの仕様なんて あてになるかいっ(w
>>261
というより、典型的な石頭な。
VBしか知らない連中は特に物心ついた時からそういうコーディングルールを
たたき込まれてる奴が多い。何も理解せず当然だと思い込んでるんだろう。
264デフォルトの名無しさん:02/11/09 08:56
じゃあ明示的な解放が処理されるかどうかもあてにならんな(w
不要なところの
Set xxx = Nothing
はただのゴミ。
入れたきゃ入れてもいいが、
その前にお前のコードを一度自分で追ってみろ。
1つのプロシージャを何行書いとんじゃ、ぼけ。
そんな目を覆いたくなるコードには盲目的にSet xxx = Nothing。
すげえ、入れ食いだ
不要でなければ入れてよい、と。
268207:02/11/09 11:14
>257
何でもかんでもなんて誰も言ってないよ。
言語の仕様が信用できないってのはあるかも。
実際、それで難儀したんだから。

>263
それはあるかも。
未だにGlobalキーワード使ってる奴いるしw

>264
WinCE版のVBは明示的に解放してもメモリリークしたりするし

>265
そうか?
ウン百行の酷いコード書く奴って、Nothing以前にオブジェクト変数の意味自体を
知らない奴が多いと思うけど。

ま、ともかく色々と参考になった。
みんなあんがと。
270デフォルトの名無しさん:02/11/09 14:30
>>233について誰か知りませんかぁ?
>>270
無理に決まってるじゃん。(受け側がオブジェクト型でもない限り)

Dim s As String
Dim i As Integer
i = s
この代入がエラーかどうか実行時にしかわからないのと一緒。
>>270
VBの暗黙の変換だから無理。
273名無し:02/11/09 15:22
相手のパソコンからデータを取得するにはどうしたら良いですか?ハッカーではないでしよ。
>>273
意味不明。なんだよ相手って。
275名無し:02/11/09 15:26
取得するファイルを持っているパソコンのことです。
意味不明。FileCopyでフロッピーにコピーして受け渡せ。
277233:02/11/09 17:49
>271 >272
どうもです。やはり無理ですか...
という事は、コンパイル時に双方の型が一致しているかを確認するにはByRefに
する以外無いという事ですよね。なんか納得いかない...
他の言語でもこうなのでしょうか?
278デフォルトの名無しさん:02/11/09 17:54
VBから16BitのDLL(具体的にはuser.exe)のAPIを呼びたいのですが
いい方法はありませんか?
279デフォルトの名無しさん:02/11/09 18:02
>>278
Call16bitDllを使え
280あっちの118:02/11/09 18:05
初心者じゃないんであっちに書いたんですが、一応こっちでも人捜しさせてください。

***すれ立てるまでもない質問はここで 第25刷***
http://pc3.2ch.net/test/read.cgi/tech/1036597434/118
281278:02/11/09 18:07
>>279
Googleでも手持ちのMSDNライブラリでも見つからないのですが、
それはどういったものですか?
>>281
Call16bitDllってのは>>279がそんなものがあれば便利だな〜と思ってるだけ。
あったらいいね。>>279

VBに限らず32bitプログラムから16bitDLLを呼ぶのは面倒。
具体的にどのAPIを呼び出すのか、何がしたいのかを書けば
他の解決策がわかるかもね。
>>277
VBはBASICの家系だから、そういう言語なんだYO!
そもそもStringをそのままIntegerに渡すことは普通ない。
事前に入力値のチェックするだろが。
型を知りたければTypeName関数でも使ってロジックチェックしろ、ぼけ。
284デフォルトの名無しさん:02/11/09 20:02
VBAであるブックを開いてある領域をコピーして
そのブックを閉じるときに現れる
”クリップボードに大きな情報があります。この情報(略”
というダイアログを表示させない方法ってありますか?
285デフォルトの名無しさん:02/11/09 20:03
ちなみに”いいえ”を自動的に選択させたいです。?
>>284
あるよ
287デフォルトの名無しさん:02/11/09 20:32
>>286
是非とも教えてくださいませ
Application.DisplayAlerts = False
289デフォルトの名無しさん:02/11/09 21:08
その程度の事も解決できないようなやつが作ったフロントエンドって、ど
んな人が使うんだろう?

教えてほしい。
290278:02/11/09 21:12
>>282
user.exe内のexitwindowsexecを呼び出したいのです。
今のところはrundllから呼んで何とかしてるんですが…直に呼び出したほうが
スマートだと思いまして。
291デフォルトの名無しさん:02/11/09 21:18
>>284
まーがんばれ。

>>289は性格に問題ありと..._〆(゚▽゚*)

>>290
exitwindowsexecはよく知らんのだがWindowsの終了かリスタートなら
ExitWindowsExとかを使えばいいんじゃないのか?
293デフォルトの名無しさん:02/11/09 21:21
Excel97のVBAで、ボタンおしたら通常使うブラウザが開いて
指定したURLのページを表示させるにはどうしたらいいでしょう?
>>293
ShellExecuteEx API
295278:02/11/09 21:23
>>292
Windowsのみの再起動(終了ダイアログでShiftを押しながら再起動した
時の動作)を再現したいのです。ExitWindowsExには無いようです。
296デフォルトの名無しさん:02/11/09 21:26
>>294
VBAからAPIを使う方法がわからん
>>296
VBと一緒だよ
298デフォルトの名無しさん:02/11/09 21:27
>>297
VBなんて知らん
>>298
まじで?
300デフォルトの名無しさん:02/11/09 21:30
スーパーブイバーになりたいんだけど、何で勉強すればいいの?
山本のVB3部作の次は?
>>300 MSDNライブラリ。
302デフォルトの名無しさん:02/11/09 21:40
293です。できますた。
なんかコンパイルエラーになると思ってたら、
VBAって関数呼ぶときはCall付けないとだめなんですね。
>>293に便乗だけど、VBから通常使うブラウザ書き換える術を教えて下さい。
>>303
レジストリをいじる
レジストリを弄ることそのものはAPIを使えば簡単なんだが、目的に
あった操作(どのキーをどのように弄るか)を調べるのがむずかしい。
FAQ、定番的なものなら、ググればいくらでも見つかるからよいが、
WEBで事例が見つからない場合、みんな、どうやってるんだろう?
2chで聞く
>>305
検索、勘。それらしいのが見つかったらトライ&エラー。
バージョン上がってキーが変わったら泣く。
VBを勉強するのに良いテキスト教えてください。
>>308 MSDNライブラリ。
>>302
> なんかコンパイルエラーになると思ってたら、
> VBAって関数呼ぶときはCall付けないとだめなんですね。

んなわきゃない。VBもVBAも基本的な文法は同じ。
>>309
本を頼む。
312310:02/11/09 22:19
あ、302はVBも知らんかったのか。すまん。

proc(a1, a2) と書くとエラーだが、
Call proc(a1, a2) または
proc a1, a2     または、戻り値を返す関数なら
戻り値 = proc(a1, a2) と書ける。
>>307
ある意味、食用キノコと毒キノコの判別法に近いものが感じられる。
>>310
302 は、戻り値を受けない関数呼び出しに括弧をつけていたと思われ。
315314:02/11/09 23:06
312 が見えなかーたよ。。。
>>314
Call ステートメントを使用した方が、可読性が多少はよくなる。(場合もある)
命名に一貫性がないソースコードの場合、変数名、関数名、オブジェクト名の
区別が付きにくい場合もあるので。

# だからこそ、命名規約が必要なのだ、という話もある。
VB6.0使ってます。
コントロールボタンを375×375にして、CaptionをCAにしますた。
文字のフォントはMS Pゴシック、サイズは11。
で、実行してそのボタンをクリックすると、
それまでボタンに横に表示されている文字が縦に表示されるのです。
なんでですか?


>>311
自分で本屋逝って良いと思うものを買ってくるのが一番だろうけど、自分は↓コレを買いますた・・・
  VisualBasic6.0パーフェクトマスター Perfect Master
  見有 哲久 (著), 青空研究会 (著) 秀和システム
オールカラーで見やすいし、内容も平均的。初めての人にもとっつきやすいかと。
>>316
命名がクソなのと、Call のある無しが何の関係あるんだ?
ThisIsNotFuncCall a1, a2
って書いてあっても、普通それが関数呼び出しだと分かるぞ。
>>317
フォーカスの点線のせいだ。
もうちょっとボタンの大きさに余裕を持たせろ。
320278:02/11/10 00:22
すいません、いい感じで流されてるんですが…(;´Д`)
>>320
VC++でラッパーDLL書く。

って言うかVCとかでも妙に面倒な手続きが必要だったと記憶。
サンクレイヤとか言う奴?
322317:02/11/10 00:29
>>319
レスありがとうございます。
ボタンを大きくすればいいのは分かるのですが、フォーカスの点線のせいっていうのは?
詳しく教えてください。お願いします。
>>318
ワロタ。
無理やり挙げれば、
ThisIsLabel  をラベルと間違えるとか、
Statc a, b  をStaticと間違えるとか。

俺はCallがない方がスッキリして読みやすいけどね。
メソッドの呼び出しだと Callを付けない人が多いし。
>>322
フォーカスを持ったボタンは、自分がフォーカスを持っていることをユーザーに
アピールするために、ボタンのふちのすぐ内側に点線を引く。
その点線の描画領域の為に、ボタンの文字の表示領域が減る。
で、文字をきちんと表示させるために、文字列をワードラップする。
(だから "CA" が C と A の間で改行される)
ところが、幅は考慮していても高さは考慮していないようだ。
(ボタンの文字列には普通改行が含まれないから当然と言えば当然)
こんな説明で OK か?
>>328
>俺はCallがない方がスッキリして読みやすいけどね。

オレはCall付いてる方が安心感があるかな。
ま、好みのレベルかもな。

b a
例えばさ、上みたいなんなんだと思う?>>318


>メソッドの呼び出しだと Callを付けない人が多いし。

それはいえてる。
326318:02/11/10 01:54
>>325
はじめ 「2 ちゃんねるのレス」 として見たから何の事かわからなかったけど、
「VB のソース」 として見るなら引数 a を指定したルーチン b の呼び出しと
すぐ分かる。
まあ他言語、特に C/C++ から来た人なら騙されやすいかもね。
327322:02/11/10 02:18
>>324
なるほど。親切に教えていただき、ありがとうございます。おかげさまで理解できました。
>b a
>例えばさ、上みたいなんなんだと思う?>>318

あほの書いたソース。見る価値もない。
仕事なら作り直した方が早い。

って思うかな。
でも実際いるんだよなぁ。わざと読みにくくしてねぇかお前ってやつ。
329277:02/11/10 06:45
>283
>そもそもStringをそのままIntegerに渡すことは普通ない
普通無くても、できてしまうから困る訳で。
呼ばれる側はIntegerで宣言していても、呼び元では違う型を使って呼び出している可能性が
あり、それによるバグが生まれる場合もあるのだから、事前に機械的にチェックする方法が
無いか?って考えるのはおかしいことじゃないと思うけど。

そういう意味では
>型を知りたければTypeName関数でも使ってロジックチェックしろ
ってのは本末転倒。

そういう言語なんだよと言われればそれまでなんですけどね。
とりあえず、デバッグ時はByRef使う方向で行きます。
> 呼ばれる側はIntegerで宣言していても、呼び元では違う型を使って呼び出している可能性が

設計や管理がずさんなだけじゃん。

普通は、関数が整数を要求することがわかってるのに
文字列型を使ったりはしないよ。
そもそもそんなこと言ってたらきりがない。
331330:02/11/10 07:16
あ、でも読み返してみると、確かに329の言ってることも
よくわかるな。
>329
複数人で開発していると必ずいるんですよ。
引数の型無視して呼び出してバグ生む奴・・・
333デフォルトの名無しさん:02/11/10 15:49
フォーム1のテキストボックスにテキストを入力する際に直接キーボードで入力せず、
そのテキストボックスをクリックすると、新しくフォーム2を表示させて、
フォーム2上の複数のコマンドボタンの中から1つおすと、押したボタンの
Captionがもとのテキストボックスに入力されるというのをやりたいのですが、
フォーム2からどうやってそこのテキストボックスを指定すればいいのかわかりません。
ちなみに、テキストボックスはコントロール配列になっていて、複数あります。
どなたかお教えください。宜しくお願いします。
form1.textbox(1).text = form2.label1.caption
>>333
入門書とかヘルプ、読んでないだろ?
ちゃんと読めよ。
336デフォルトの名無しさん:02/11/10 16:07
>>334
ありがとうございます。具体的に決まっている場合はわかりました。
どのテキストボックスが選択されたかわからない場合は、
何か変数に渡すのですか。
具体的にはここまでできてます。

frmForm1のコード '↑でいうForm1

Private Sub txtName_Click(Index As Integer)
frmSelectName.Show '↑でいうForm2
End Sub

frmSelectNameのコード '↑でいうForm2
Private Sub cmdName_Click(Index As Integer)
frmForm1.txtName(?).Text = cmdName(?).Caption
Unload Me
End Sub

?のところが良くわかっていません。


>>336
frmForm1.txtName(?).Text = cmdName(?).Caption

右の?は引数のIndexだからわかるっしょ。
左の?は frmForm1.ActiveControl.Index でわかるけど
あんまりオススメしない。
338Not (Me Is 333 Or Me Is 336):02/11/10 16:47
>>337

> frmForm1.ActiveControl.Index

今、手元にぶいびの環境がないので、確認できないんだが、
ActiveControlがコントロール配列でない場合、エラーに
なんないかい?
339336:02/11/10 17:20
たぶんエラーになるよ…
ダイレクトに参照したいなら
こんな方法もあるよってことでし。
好みの問題だろうけど
自分だったら関数でくるむかRaiseEventかなぁ
340339:02/11/10 17:25
スマソ、339は337から338へね
おれならこうする。(未検証ですが。)

<frmForm1>
Private Sub txtName_Click(Index As Integer)
 txtName(Index).Text = Form2.GetStrSelected
End Sub

<Form2>
'モジュール変数
Private strSelected As String
'ダイアログ表示→文字列選択待ち→ダイアログ閉じる→選択された文字列を返す
Public Function GetStrSelected() As String
 strSelected = ""
 Show Me, vbModal
 GetStrSelected = strSelected
Exit Function
'選択されたボタンのキャプションをモジュール変数に格納→ダイアログを閉じる
Private Sub cmdName_Click(Index As Integer)
 strSelected = cmdName(Index).Caption
 Unload Me
End Sub

これでForm2はいろんなダイアログから呼び出せるようになる。
Form1上のテキストボックスに文字列をセットするという作業は
Form1が自分でしなければいけない。
Form2は選択された文字列を外部に公開するだけ。
342341:02/11/10 19:23
>336
あれ?モードレスってのが仕様?
だったらとりあえず341却下。
ささやかに339のRaiseEventに1票。
343283:02/11/10 23:49
>>329
君のいわんとすることは277の書き込みで理解はしているよ。
ただ、
>そういう言語なんだよと言われればそれまでなんですけどね。
これが現実。そういう言語を選んだのだから。(君が選んだかどうかは別にして)
君が指導して周りのプログラマのレベルアップをはかった方が懸命。

>とりあえず、デバッグ時はByRef使う方向で行きます。

デバッグ時はByRefと書いておいて、後でByValになおすってこと?
それは現実的だと思えないし、
そういう行為(ソースの二重持ちするのか、毎度書き換えするのか知らないけど)
の方がバグ生むと思うけど。
「ByRefを型を厳密に使うのに使います」という使い方がトリッキー。
>>332=329?
そんなDQNを教育するか、それでダメなら、
まずプロジェクトからはずすのが先決かと。
>>329
もひとつおまけ。
VB.NETなら、Option Strict Onで厳密な型指定、型変換を強制できる。
>>329
一応書いとくけど、
いくらByRefで定義していても、呼び出し時にパラメータを
カッコで括るようなアホがいたら、コンパイル時のチェックに
引っかからないからね。(それと、定数渡しもアウト)

Dim s As String
Func (s)
Func "ABC"
--------
Sub Func(ByRef n As Integer)
End Sub

というわけで、344と同じく、一定のレベルに達していないDQN
はプロジェクトに入れないのが一番の策と見た。
なんて、DQNな話してんだよー
348デフォルトの名無しさん:02/11/11 00:37
WinsockコントロールでTCPで通信、インターネットを想定した場合、
ただ単にIPアドレスを指定しただけでは通信できないのでしょうか?
ローカルIP、グローバルIPが関係してくるのかな?
349329:02/11/11 01:05
>343
もちろん、コーディング規約への追加や、教育によるレベルの底上げは行っていきます。

>344
同意なんですけど、そういうレベルの話じゃないんです。
機械的にチェックする事で型の不一致によるミスを100%なくす手段が無いか?という話なので。

>345
.NETはよさげですね。
少なくとも今の平均レベルでは移行できませんけど(泣

>346
ありがとうございます。
普通はないけど、ありえないとは言い切れない現象ですね。
参考にさせて頂きます。
>>349
ByRefにしといてあとからByValに手動で変えるのは全然機械的じゃない。
>>350
手動じゃないかもよ。
>>351
自動でByRefを全部ByValに変えるのか? こわいな。
そもそも、本来の使い方が全く無視されてると思うが。
353351:02/11/11 03:55
> 自動でByRefを全部ByValに変えるのか?
全部じゃないかもよ。
ソース上ではデフォルト(ByRef記述の省略)と明示的な記述の
2通りが使えるわけだし。
>>348
portも指定するよ
355デフォルトの名無しさん:02/11/11 13:43
Windows98&VB6&ディストリビューションウィザードで作成したexeを
Windows95にインストールした所、右寄せを設定していたテキストボックスが
全て左寄せになってしまいました。
Windows95でも右寄せのテキストボックスはありますし、設定自体はいけると
思うのですが、どのようにしたら受け付けてくれるのでしょうか。
excelファイルをドラッグアンドドロップしてVBで作ったexeを起動するにはどうしたらいいですか?
357 :02/11/11 14:20
うっさい、ハゲ
>>355
MultilineをTrueにするんじゃなかったか
>>358
・・・マジですか?
361デフォルトの名無しさん:02/11/11 14:40
>>356
ドラドロで普通に起動できると思いますが。

アイコンにドロップすると、ファイルのフルパスが引数として渡ります。
Command で引数を取得してファイルパスなら・・
という処理を書いてくだせぇ
362デフォルトの名無しさん:02/11/11 14:51
Inetコントロールを使ってVBで簡易webブラウザを作ろうと思うのですが、

UserAgentがデフォだと「Microsoft URL Control - 6.00.8862」です。
これを変更する方法が知りたいです。
363355:02/11/11 15:04
>>359
なんで騙る必要があるのですか。
すごいナチュラルに誰にも被害もなく騙ってますけど(w

>>360
サンクス!できますた。
もともとEnterキーで次のコントロールにフォーカスを移す仕様だったので
何の問題もなくできますた。
マジサンクスです。
364デフォルトの名無しさん:02/11/11 15:09
画像の情報取得をして表示させたいのですが、jpegで
24ビットフルカラー(各8ビット)他モノクログレースケール画像(8ビット)
の判別の方法がわかりません。
どうすればよいのかどなたか教えてください。
>>363
糞仕様
366359:02/11/11 15:20
>>363
言い訳させてもらえれば、煽ったつもりも騙ったつもりも無いんだけど。
マジで疑問に思ったから。
>>365
お客さんの前で言ったらお金が出なくなります。
Shellで呼び出した別のEXEファイルが呼び出し元のフォームより
後ろに回るのですが、これに対処法はありますか?
引数にはノーマルフォーカスを指定しています。
369んばばんばんば:02/11/11 15:52
凄い初歩的な質問なんですが。今クイズを造っているのですが
その初期段階として「VBでコマンドボタン押したらテキストボックスに
ランダムに問題が表示される」って言うのはどうやったらよろしいんでしょうか?
>>369
配列とRndとRandomizeを調べれ。
371んばばんばんば:02/11/11 16:00
>>370
持ってる本には書いてないっす。配列宣言しか。
>>371
ヘルプ(MSDNライブラリ)があるだろ。それを見れ。
373んばばんばんば:02/11/11 16:16
わかりもうした。調べてみます。
>>368
ShellExecuteのヨカン
375デフォルトの名無しさん:02/11/11 17:00
ボタンを1回押すと数字が1大きくなって
ボタンを押している間は数字が大きくなり続けるようにするには
どうすればよいですか?
スピンコントロール(適当
質問なんですけど。
メッセージボックスのボタンの文字を変更する事ってできますか?
VB標準では無理ですよねぇ?
無理です
>>375
タイマー

>>377
それっぽいフォームを自作しれ
380377:02/11/11 17:02
>>379
やっぱそれしかないか〜
ありがとう
381デフォルトの名無しさん:02/11/11 17:06
364です jpgの24bppと8bppの深さの取得の方法どなたかおねがいできませんか?
SOFセグメントには縦、横のサイズを取得するものがあるのですが、
bmp見たいにbitcountみたいなものが構造上見当たらないのです。
お知り方いましたらご教授ください
382375:02/11/11 17:12
>>379
ありがとうございます
できればもう少しヒントください
>>382
試してないが、mousedownでフラグ立ててmouseupでフラグ解除
タイマーで定期的にフラグが立ってるか見て、立ってれば処理すればいいのでは?
あ、それよかmousedown時にタイマー始動、up時に解除のほうがスマートか・・・
でも前に別の人が書いてたけど、スピンコントロールが
使えるならそっちのほうがスマートだし楽だと思うぞ
試してみた。フォーム作って、ボタンとタイマー貼り付けて
以下のソースで試してみれ。なお、タイマーのEnabledはデザインではFalseでな。

Option Explicit

Private cnt As Integer

Private Sub Command1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Timer1.Enabled = True
End Sub

Private Sub Command1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Timer1.Enabled = False
End Sub

Private Sub Timer1_Timer()
cnt = cnt + 1
Caption = CStr(cnt)
End Sub
385375:02/11/11 17:49
何も起きないのですが...
>384
↓Command1でマウスダウン
↓ALT+TABでアプリ切替
↓マウスアップ(もちろんMouseUpイベントは起きない)
↓ALT+TABでもとのアプリに戻す
↓>385が正しければ何も起きない
387375:02/11/11 18:13
Intervalが0になってました。
ありがとうございました!&すみませんでした
388デフォルトの名無しさん:02/11/11 18:23
>>48
やべ〜オレ普通にDim使ってるわ。
今度からPrivate使おう・・・
389デフォルトの名無しさん:02/11/11 20:03
PrintFormでフォームを印刷したいのですが
フォーム上に配置したPictureBoxが真っ白になってしまいます
フォームごとPictureBoxの内容を印刷することは無理なのでしょうか?
PictureBoxはビットマップを読み込んでるわけではなく
コードで図形を描画してます
390デフォルトの名無しさん:02/11/11 20:12
>>389
PictureBoxのAutoRedRawは?
>>364 >>381
JPEG にはフルカラーしかなく、しかも RGB じゃなくて YCbCr だったと思う
のだがどうよ?
ちっとは Web 検索した?
ちなみに漏れも良く知らない。
392デフォルトの名無しさん:02/11/12 01:24
TXT形式のファイルに出力したいのですが、
どうしても上手くいきません。
開く方は何の問題もなくいけたのですが・・・

Dim Strfilename As String
Open Strfilename For Input As #1
StrData = Text1.Text
Print #1, Stroutput
Close #1

という感じです。
ファイルのパスもあっているのですが、、、
どなたか教えていただけないでしょうか?
393392:02/11/12 01:41
StrDataとStroutputは同じものです。
直し忘れた><
それでもやっぱり動かない・・・
394デフォルトの名無しさん:02/11/12 01:46
Open Strfilename For Output As #1
初めまして。

ネタではなく、まじめなご相談なのですが。。
とある、ソフトウェアとハードウェアを持っています。
ハードウェアは、USB経由でICチップにクリップで繋ぎ、データをリード
ライトする為のものです。
ソフトウェアは、上記ハードウェアに付属している開発ツールを使って作られ
たもののようで、ディレクトリ構造的に

SETUP.LST
SETUP.EXE
キャビネットファイル(解凍すると以下)
  各種DLL、各種OCX、TLB、BIX、VXD、EXE、INF、
  TXTファイル

からなっており、上記ハードウェアのドライバとリードライト制御を行う機能
を持っています。このソフトウェアは、同じ上記ハードウェアで動作してるの
ですが、もう一つの同種の(シリアルは異なります)ハードウェアで動作しま
せん。これを動作させる事はできるのでしょうか。ハードウェアに付属の開発
ツールのソースコードとVBによって、ハードウェアに対応した各種のアプリ
ケーションが作成できる、とあった為に、ここに質問させて頂きました。
もし、どなたかこれを解決できる方がいらっしゃいましたら、是非お願いした
く、ご相談させて頂きました。ソフトウェアは、CD−Rで保有していますの
で、必要に応じて出す事が可能です。
当方、ソフトウェアの素人である為、この問題を解決出来ません。
レジストリの問題なのか、ソフトウェアを改造する必要があるのかすら分かり
ません、解決して頂ける方には、成功報酬として、非常に少ないですが、10
万円ほどご提供させて頂きたいと思います。
素人ではありますが、もう少し詳細な情報も出す事が可能です。
もし場違いであれば、削除して頂いて構いません。

よろしくお願いします。
>>396
マジレス。
報酬が用意できるくらいなら、ここで訊くよりメーカーに訊け。
>>396
よく読んでねーけど、それってHASPキーみたいはハードウェアプロテクトをはずせと言ってるんじゃないだろうな。
399デフォルトの名無しさん:02/11/12 12:29
>>362
変えることできないんじゃなかった?
まえにどこかのFAQ掲示板でそんなやりとりを見た。

しかし変えれないとなると使えねーな。
VB初心者です。
ADODBでデータベースを作って検索しようとSQLを使ったのですが、
「演算子がありません」とか出てきて検索できません。
どうしたら検索できるのでしょうか?
あと、SQLでの複数条件の記述式を教えてもらえませんか。

401 ゆうじ:02/11/12 14:17
パスワードのかかったACCESSのデータベースをVBで読み込みたいのですが、案の定
エラーが出てしまいます。どなたコーディングの仕方を教えていただけませんでしょうか。
VBは6.0でACCESSは2000を使用しています。よろしくお願いいたします。                         
>>400
それはVB使ってるってだけでSQLの質問でしょ?
だからスレ違いだし、そもそも情報少なすぎ。
>あと、SQLでの複数条件の記述式を教えてもらえませんか。
にいたっては、SQLの文法書でも読めとしか言いようがない。

>>401
ADOかDAOかぐらい書け。キーワードはpwdで検索しる!
>>400
ってこいつSQLスレとのマルチかよ。死ね。
404ゆうじ:02/11/12 14:50
すみませんでした。ADOを使用しています。よろしくお願いします。
>396
あるハード用に作られたソフトを他の同種のハードに
流用したいって事かな?

なぜ動作しないのかはハードの情報が無いので何とも言えない。

あなたの持っているソフトはコンパイル済みのようで、
ソースを持っている人以外は修正することが出来ない。

解決策1: ソフト作成元に他ハードに対応するように依頼する。
解決策2: ソフト作成元からソースを購入し、自分でまたは
      他者でソースを変更する。
解決策3: 他者に現在のソフトウェアの機能を説明し、
      同様のソフトを一から作成してもらう。
406405:02/11/13 02:35
なんか変な事書いたかな? みんな固まっちゃったよ。
人は誰しも自分の発言の後に発言がないと不安になるものである

まぁ、レスの付かない夜もあるさ>>405
408392:02/11/13 03:47
394,395>ありがとうございます!
    なんとか分かりました!
409デフォルトの名無しさん:02/11/13 07:55
>>391
グレースケールのJPEGもあるよ。
>>409
そういうならフォーマットを呈示しなさい。
// Create an instance of the scripting Shell Object
shell = WScript.CreateObject("WScript.Shell");

// Have the Shell Object call ShellExecute on our file
shell.Run(WScript.Arguments(0), 1, 0);

// Destroy the Shell Object
WScript.DisconnectObject(shell);
Option Explicit
のすぐ下で宣言するときの
DimとPublicの使い分け方がわかりません。
どういうときはどちらをつかうのでしょうか。
>>412
効果は変わりないけど、PublicはPrivateと対になってるので、論理上正解。
414412:02/11/13 12:31
効果は同じと聞いて安心しますた
待った。Dim=Privateだろ。
異議あり!! Dim=Privateだろ。

と言え。
あ、そうだっけ Dim使ってないから忘れてた。スマソ。
ちなみにGlobalと同じで過去の遺物なんだよね、これ。。
417 が、ローカル変数を使わない DQN である事をカミングアウトしました。
>>418
揚げ足取り カコ(・A・)ワルイ
420デフォルトの名無しさん:02/11/13 15:18
VB6 なんですが、VBA のトグルボタンコントロールに相当する
トグルスイッチを作ろうと思ったら、どうしたらようござんしょう?
つーか、(モジュールレベルで使うにしても) Global と Dim を同列で並べてる
ところが痛い。
せっかく遠まわしながら間違っている事を 418 が指摘したのを、揚げ足取りとして
非難してるのはもっと痛い。
そもそも、記憶があやふやなのにドキュメントを調べもしないで堂々と回答してる
姿がとっても痛い。
そして、「論理上正解」 って意味不明。

って、こうして煽られたいからそういう書き込みするの? >>419
422420:02/11/13 15:23
↑ただし、CheckBox は不可です。あしからず。
結局、VB6で開発しているのにGlobalやDimで宣言してるヤシには気をつけろってこった。
424420:02/11/13 15:32
Microsoft Forms 2.0 Object Library コンポーネントを追加すれば
ようござんした。失敬。
>>420
どのレベルから作り込みたいのかはっきりさせてくれないと、アドバイスの
しようがない。
カスタムコントロール作る?
既存のコントロール改良しる?
フォームに直接ガリガリ書く?
426425:02/11/13 15:36
ヽ(´ー`)ノ
>>421
なに過剰反応、っつーか拡大解釈してるんだ? 譫妄?
419は、417の言ってるDimが当然ローカル変数のでは
ないことぐらい文脈で分かるだろと指摘しただけだろ。
それと、俺はGlobalもモジュールレベルでのDimも過去の記述方法として
同列に書かれることにはちっとも違和感おぼえなかったが。
428413:02/11/13 15:41
Option Explicitも面倒なので使ってませんが、何か?
429!421:02/11/13 15:44
>>427
そう思ったなら 419 が素直にそう書けばいいだろ。
419 は煽りにしか見えん。
>>413だけど、騙りまで出てきたか。どうせ>>421と同一人物だろうが・・
あー、あと、>>427の人あんがとね
431413:02/11/13 15:45
>420
OptionButtonのStyleプロパティを1 - グラフィックスにするとそれっぽいぞ。
432419:02/11/13 15:47
>>429
418が分かってて書いてるのがミエミエだから
あえて指摘しなかっただけだが何か?
もういいでしょこの話題。421で結論でてるし
433419:02/11/13 15:47
421じゃないや 結論でてるのは427だった スマソ
>>413
「PublicはPrivateと対になってるので、論理上正解」の意味がサパーリわからんから説明してくれ
435434:02/11/13 15:51
あ、「PublicはPrivateと対になってる」はわかる
それが「論理上正解」とどう結びつくのかサパーリ
>>434
書いたままだが、何か?日本語不自由なのか?
>>435
しつこいなー マジで聞いてるのか?
Dim <-> Public が対になってるのは文法的に理解しがたい
Private <-> Public のほうがスマートでしょって意味
正解と断言したのが気に入らないのか?
それなら正解に近い とでも言い直すが
438434:02/11/13 15:56
>>436
ああ書き方が悪かったよ
「DimとPublicの使い分け方がわかりません」に対して
「PublicはPrivateと対になってるので、論理上正解」なのがわからん
439413:02/11/13 15:57
>434 >435 ケコーン(藁藁
440434:02/11/13 15:58
>>437
それなら納得できるが>>413はその意味に取れない
>>438
なぜ部分的に抜き出す?
その前に書いた「効果は変わりないけど、」の部分は目に入らないのか?
効果は同じだけど、さっき書いたとおり、Privateにしたほうが
Publicとも対になって論理的整合性が取れてるでしょってこと。
442413:02/11/13 15:59
しまった、本人じゃん
443434:02/11/13 16:01
>>412=414は「効果は変わりないけど」に気を取られて帰ってもーたみたいだし、
どうせ回答するなら>>437のように最初からちゃんと書いた方がいいかと思うがどうよ?
>>440
言葉足らずだったのは認めるが、そこまで赤ちゃんに
言ってきかすほど噛み砕いて説明する義務は俺にはないんだが。
>>443
ほんとにしつこいなあ・・ (´д`;)
繰り返すけど、そんな義務はないって。
そう思ったならあなたがそうやって教えてやれば
良かったでしょうが。
こんな話題でこれ以上スレ伸ばすのは無駄と思うがどうか?
>>441
客観的に見て、437 や 441 に書いてある情報は 413 にはちっとも書いてないよ。
>>446
>>444
これ以上は相手しません スレの無駄遣い。
>>445
義務が無いと言うなら、あなたは何で回答しているの?
449419:02/11/13 16:09
>>448
それは「言ってきかすほど噛み砕いて説明する」義務でしょ
なんかさっきから勝手に言葉切りとって、無理やり
揚げ足取ろうしてるヤシがいるみたいだけど、なんか413に
個人的な恨みでもあるのか?(w
450デフォルトの名無しさん:02/11/13 16:10
こういうアフォな人たちがいるから回答者が減っていくのですね・・・
正直、人のやったことにグダグダとケチつけてるだけの奴らより、
413のように短くても回答くれる人のほうがよっぽど有益と思われ
ということで、次の質問者の方、どうぞ
はじめまして、質問させてください。
VB6で、Excelファイルを出力したいのですが、
.Quit処理を行ってもExcelのプロセスが残ってしまいます。
お手数ですがよろしくお願いいたします。

''ソース抜粋
Private xlApp As Object
Private xlbook As Object
Private xlsheet As Object

Set xlApp = excel.Application
Set xlbook = xlApp.Workbooks.Add
Set xlsheet = xlbook.Worksheets(1)

xlsheet.Cells(1, 1) = "データを入力"

xlsheet.Unprotect
xlbook.Close True, "C:\Book.xls"
xlApp.Quit

Set xlApp = Nothing
Set xlbook = Nothing
Set xlsheet = Nothing
>>453
Set xlApp = excel.Application を
Set xlApp = New Excel.Application にしてみ。
>>454
ありがとうございました、無事解決できました。
感謝感謝です;;
456434:02/11/13 17:44
>>451
うっさい、ハゲ
457猿並初心者:02/11/13 18:25
本当に猿並な質問ですみませんがVBSで、
1個220円の商品が1ダースなら2500円として、
26個なら2500円*2+220円*2=5440円
というように金額が出るようにしたいのですが、
いくらやっても全部1ダースあたりの金額で小数点以下まで計算されるか、
12個以下の個数だとエラーになるかで、どうにもなりません。
どんなに罵倒されてもかまいません。どなたか助けてください、お願いします。
1ダースは20コぐらい?
459デフォルトの名無しさん:02/11/13 19:16
winsockを使ってプログラムしているのですが、
チャットの他にいくつかの機能を付けようかと思ってます。
そこで、データを受け取った時にそのデータがチャット用なのか、
その他1用なのか、その他2用なのか・・といった風にCASE文あたりで振り分けたいのですが、
何かいい方法はありますか?
いろいろ見てみたんですが、それっぽいものが見つからなかったので><
どなたかお願いします!
>>457
なんかよくわからんけどこれでいいの?
Dim lngIn, lngAns
lngIn = 25
lngAns = ((lngIn \ 12) * 2500) + ((lngIn Mod 12) * 220)
MsgBox lngAns & "円"
>>459
> データを受け取った時にそのデータがチャット用なのか
> その他1用なのか、その他2用なのか・・
てことは、データ送る側が「それ」を送るデータにくっつけて送ればよいのでは???
微妙にスレ違いかもね。
462猿並初心者:02/11/13 19:39
>>460 ありがとうございます。lngIn = 25というのがよくわからないのですが
例えば単価220円として、本来30個なら6600円
でも1ダースなら2500円なので30個の合計金額は
2ダース*2500円+6個*220円=6320円
になるように個数を入れれば合計金額が出るようにしたいのです。
説明不足ですみません。
>>462
Int or Fix 、mod関数を調べてみれ
>462
プログラムを欲嫁。lngInが商品の数。
465猿並初心者:02/11/13 21:03
こんな猿にみなさんご親切にありがとうございます。
INT関数でダース、MOD関数でその余りというのはよくわかりました。
後は個数が12個以下だとエラーが出るのを何とかしたいのですが。
ユーザーが同じソフトを2つ起動しないようにするにはどうすればよいのでしょうか?
467最凶VB厨房:02/11/13 21:20
468466:02/11/13 22:00
ありがとうございます。
App.PrevInstanceは知りませんでした。
469466:02/11/13 22:10
Private Sub Form_Load()
  If App.PrevInstance = True Then
   フォームロードのところで End とか Unload Me とかやってみます。
  End If
END
470デフォルトの名無しさん:02/11/13 22:23
フォームモジュールに書いた Sub (〜_clik みたいなやつ)の中で、
標準モジュール内にある変数を呼ぶ時にパブリック変数を多用しているのですが
まずいですか?
471最凶VB厨房:02/11/13 22:24
GoodLuck!
472466:02/11/13 22:33
感謝です。
無事成功しました。
フラットボタンとか作りたいんですけど、
オーナードローって、ウィンドウをサブクラス化して、メッセージ受信して、
そのメッセージによって後は自分で全部描画するってことでしょうか?
とりあえずボタンの色変えるぐらいはそんな面倒な事しなくてもできるだろ
と思ったんですが・・・できないんでしょうか。
>>473
ボタンの代わりにピクチャボックスを使う。
とりあえず周りに線引いてボタンっぽいものを書いておく。
MouseMoveで浮き上がる絵を書いてタイマーON。
タイマーの中でAPIのWindowFromPoint使ってマウスがボタンの外に移動したのを
検出できるようにしとく。検出したらまた普通のボタンを描画。
MouseDownでボタン押下、イベント発動。

サブクラス化しない方法としてこんなのはどう?かなり横着してるけど。
475473:02/11/13 23:36
なるほど。それは簡単ですね。
しかしボタン、チェックボックスぐらいは簡単に出来そうですが、
スクロールバーやリストボックス、タブストリップとかになると・・・う〜ん。
まぁ無駄なことはやめとけってことでしょうか・・
空のテキストファイルを作成するにはどうしたらよいのでしょうか?
Open "test.txt" For Output As #1
Print #1,
Close #1
とやっても、改行コードが含まれたファイルが作成されてしまうのですが・・・
>>476
Print #1, ;
>>477
おお!できました。ありがとうございました。
>>476てか、Print #の行かかなきゃいいだけじゃ・・・
480デフォルトの名無しさん:02/11/14 01:23
ExcelのVBAで質問です。
条件付書式で文字の色が変更されている状態の色を
マクロから取得することってできますか?
Cell(x,y).Font.ColorIndex だと、元々の色が取れてしまいます。
481んばばんばんば:02/11/14 09:57
質問です。データベースに入ってる複数項目のデータ
1 あああ  123 
2 いいいい 212
とかのレコードをVBのリストボックスに格納したら
1あああ123 
2いいいい212
となってずれてしまうのですがどうやったら列ごとにずれないで
格納できるのでしょうか?
>>481
どうやって格納してるの?
というか、どの段階のことが聞きたいのかよくわからん・・
文字列の整形? それとも同じ位置になるように空白
入れてるつもりなのにズレるのか?
それなら、MS ゴシックとかの等幅フォントにすれば問題ない。
しかし個人的には、そういう場合にはリストボックスじゃなくて
グリッド系コントロール使うがな。
ちなみに文字列整形のことから聞きたいのであれば、
どこまでやったかソースかなんか出したほうがいいと思われ
484んばばんばんば:02/11/14 10:11
やっぱグリッドのほうがいいですかねぇ。
別にテキストボックスにこだわる必要性はないんだけど・・・・

格納は各項目に当たる変数を作って(上の例なら番号、名前、数みたいな3つ)
それをテキストボックスの中で表示してます。
>>484

だからそうじゃなくて、空白はちゃんと入れてるの?
”A”と”B”と”C”をただ連結しただけなら
”ABC”になるのはあたりまえでしょ。
”A ”と”B ”と”C”を連結したら
”A BC”になるよね。
そういう風に、ちゃんとそれぞれの文字列の位置が合うように
文字列への空白はしてるつもりなのか?
”A B C”になるんだった。間違い。
ちなみにこういう空白挿入処理自体のやり方が
分からないなら、LenB StrConv String$ あたりを
キーワードに検索しる!
487んばばんばんば:02/11/14 11:41
みんな、ありがとさんくす。
えらく簡単にできた。
すいません、質問なんですが
VBで参照するADO(.NETではなく)タイプライブラリのバージョンによる
違いを説明しているページを教えてもらえないでしょうか?
どれを参照すれば最適か調べたいもんで。
よろしくお願いします。
489デフォルトの名無しさん:02/11/14 15:31
はじめまして。
VB6.0でEXCELを使ったプログラムを組んでいます。
EXCELファイルを参照し、中身を編集した後に保存して終了したいのですが、
終了時にQuitメソッドを使うと、事前に保存しても
メッセージで”保存しますか”と聞かれてしまいます。
このメッセージを出さないようにすることは出来ないでしょうか。

よろしくお願いします。



>>489
DisplayAlerts
491489:02/11/14 16:36
>>490
ありがとうございました!
見事に表示されなくなりました。

重ねて質問しても宜しいでしょうか。
EXCELをQUITで終了した後、なぜかプロセスにEXCELが残ってしまい(終了しきれてない?)
保存したファイルが開けなくなってしまいます。
これを回避するにはどうしたらよいでしょうか。
もちろん、オブジェクトの開放(SET objEXCEL = Noting)は行っております。

何度も申し訳ありませんが、よろしくお願いします。


>>491
ちょっと前にそっくりな質問があったが、それとは違うのか?
探してみ
493489:02/11/14 16:44
>>492
すいません、同じような質問があったのですね。
確認してみます。
494489:02/11/14 17:13
今確認して、同じように書き換えてみたのですがやはりダメでした。
どうしたらよいでしょうか。。。
以下ソースです。(関数名が日本語なのは仕様なので許してください)
Fnc_Excel出力 = False
Set objexcel = New Excel.Application
rsRecordset.ActiveConnection = cnObj
rsRecordset.CursorType = adOpenStatic
Call rsRecordset.Open(strSQL, cnObj)
If Dir(strFileName) = "" Then
Open strFileName For Output As #1
Close #1
End If
Set xlBook = objexcel.Workbooks.Open(strFileName)
Set xlSheet = xlBook.Worksheets(1)
xlSheet.Cells(1, 3).Value = strTitle
varFiledName = Split(strFiledName, ",")
intMax = CInt(UBound(varFiledName))
For i = 0 To intMax
xlSheet.Cells(2, i + 1).Value = varFiledName(i)
Next
xlSheet.Cells(3, 1).CopyFromRecordset rsRecordset
xlSheet.SaveAs strFileName
Application.DisplayAlerts = False
objexcel.Quit
Application.DisplayAlerts = True
Set xlSheet = Nothing
Set xlBook = Nothing
Set objexcel = Nothing
Set rsRecordset = Nothing
Fnc_Excel出力 = True
495489:02/11/14 17:20
見づらくてすいません。。。
改行規制で引っかかってしまいまして。
>>494
ざっと見た感じおかしなところはないようだが・・
とりあえず余分なコードを削って、現象が出る
最小限のサンプルを作ることをオススメする。
デバッグ手法の基本だよ。
ほかの人にも提出して確かめてもらいやすいし。
497489:02/11/14 17:27
>>496
そうですね。すいません。
ちょっとシンプルにまとめてみます。
498489:02/11/14 17:36
Public sub sub_Excel出力()
Dim objexcel As Excel.Application 'Excel
Dim xlBook As Excel.Workbook 
Dim xlSheet As Excel.Worksheet
Dim rsRecordset As New ADODB.Recordset
Dim i As Integer
Dim varFiledName As Variant '項目名保存
Dim intMax As Integer '項目数カウンタ

Set objexcel = New Excel.Application

Set xlBook = objexcel.Workbooks.Open("c:\test.xls")
Set xlSheet = xlBook.Worksheets(1)

rsRecordset.ActiveConnection = cnObj
rsRecordset.CursorType = adOpenStatic
Call rsRecordset.Open("select * from test", cnObj)

xlSheet.Cells(3, 1).CopyFromRecordset rsRecordset

xlSheet.SaveAs strFileName
Application.DisplayAlerts = False
objexcel.Quit
Application.DisplayAlerts = True

Set xlSheet = Nothing
Set xlBook = Nothing
Set objexcel = Nothing
Set rsRecordset = Nothing

End Function
499猿並初心者:02/11/14 18:03
皆様昨日はおかげさまで助かりました。
私は今日も猿なので本日もよろしくお願いします。
VBSで元金X円、年利Y%、年数Z年をそれぞれテキストボックスに入力し、
複利計算として元利合計を出したいのですが。
さらに元利合計とX、YからのZの求め方や、
さらに元利合計とY、Zからの求め方などもお願いします。
>>499
そんなもの調べれば分かるだろ。
>>499
VBScriptでテキストボックス使えるレベルなら
自分で調べられるはず

> 複利計算として元利合計を出したいのですが。
> さらに元利合計とX、YからのZの求め方や、
> さらに元利合計とY、Zからの求め方などもお願いします。

ていうか激しくスレ違い
VBと全く関係ない
ウザイ
関係ないけどVBSってランタイム無しでも動くの?

何かランタイム無しで動く言語やってたら便利そうなので、
必要なければやってみようかと。
503最凶VB厨房:02/11/14 20:00
504デフォルトの名無しさん:02/11/14 20:20
frmMainという名のフォームがあり、そこにはリストボックスがあって3種類のテキストファイル名が表示されてるとします。
そしてfrmTextViewというフォームがあり、frmMainのリストから選んだテキストを表示するフォームだとします。
その時、同時に複数のfrmTextViewを開けるようにしたいのですが、どうすればいいでしょうか。

つまりえーと、frmMainのあるテキストをfrmTextViewで開いた上、
更にそのfrmTextViewを開いたまま、また別のテキストを表示する全くおなじfrmTextViewを表示するような。

要するにSDIでありながら、MDIみたいに使える感じにしたいのです。
可能でしょうか。
Newすればいいんでない
506504:02/11/14 20:45
あー、こんな感じって事ですか?
Dim frmTextView As New frmTextView
frmTextView.Show

たしかに動いた(複数同じフォームが表示できた)。
けど、これがどういう意味なのか分からない。
MSDN読むか。
宣言段階でNewするの駄目なんじゃなかったっけ。
なんでかすら知らないけど。
dim hoge as frmtextview
set hoge = new frmtextview
がいいってこと?
>>507
コレクションはNewで宣言するような
510504:02/11/14 21:00
うーん、サッパリわからん。
511502:02/11/14 21:02
>>503
サンキューっす。
今、MicrosoftのサイトからDLしてインストールしてみました。

これ、今、インストールしたものを実行する端末にもインストールしなくても動くものですか?
あと、これをVB6上で作って拡張子vbsで保存する方法ないっすか?
メソッドとかプルダウンで出た方が作るの早いですし。
>>510
Javaとかやってればわかるんだけどね。
513最凶VB厨房:02/11/14 21:28
>>511
win2000なら問題ないはずだ。
最初からver5.6(だっけ?)がインストールされている(はず)
win98とかだと、versionが古いから動かない可能性は高い。

後者は知らん。
514デフォルトの名無しさん:02/11/14 21:36
A = Inputbox(msg)

数字を入力してもAはVariant型なので文字列になりまが,数字にするにはどうしたら良いでしょうか。
vbs厨ばっかだな・・・。
なんでわざわざ「厨」をつけて馬鹿にする必要があるのだろう・・・。
517デフォルトの名無しさん:02/11/14 21:47
>>515
あっち行け
518デフォルトの名無しさん:02/11/14 21:48
>>515
vbsって何?
vbsはWin板のWSHスレに逝け
ここでいいじゃん。
>>519
ぼちぼち胴衣。
522最凶VB厨房:02/11/14 21:57
>>514
Val関数とかな。

>>519
>>1を100回読んで首吊って来い。
つーかなにげにレベル高いぞ>WSHスレ
ここで質問している香具師に往かせてもなぁ…
525デフォルトの名無しさん:02/11/14 22:45
おとといVB始めたばっかりですが、今までExcel-VBAを多少。
こんなレベルで質問させて下さい。

ボタンをクリックしたら特定のテキストを、メモ帳なりエディタなり、
とにかくほかのアプリケーションに貼り付けたいのですが…。
ご指導よろしくです。
>>525
clipboard.settext "hoge"
VB使って、フォルダ内のWordファイルの全文検索って無理でしょうか。
Textファイルだと簡単なんですが。
528デフォルトの名無しさん:02/11/14 23:17
>>527
VBでWordを呼び出すなら簡単。
自力でやるならWord文書のフォーマットを調べる。
529525:02/11/14 23:22
>>526
申し訳ないです。全く分かっていません。
たとえばbutton1をクリックすると同時に、
メモ帳に"hoge"という文字を貼り付けるには?

Private Sub Button1_Click(ByVal sender ........

の次に何が必要でしょうか。
なにせほかのアプリケーションとのやりとりが全く分からないもので。

>>529
clipboardオブジェクトをヘルプなりGoogleなりで調べろ。
ちなみに、クリップボードにコピーするものであり、自分でペーストしないといけないので注意。
>>529
メモ帳はボタン1をクリックしたときに起動するのか?
532525:02/11/14 23:33
>>530
ひとしきり調べたのですが、出てくるのは上でおっしゃっているのと同じ
クリップボードへのコピーばかりで、その点は理解しています。

自分でペーストせずに(もちろんクリップボード経由でもいいですが)
メモ帳に貼り付けられないかということです。
初心者には無理がありますか??
533525:02/11/14 23:35
>>531
一応起動させておいてから…。
>>525
ふーん。まあ、簡単だな。
>528
>Word文書のフォーマットを調べる。
それやったらマイクソに訴えられそうな気が。
まあ、ほぼ100%無理だけど。
537525:02/11/14 23:45
>>534
>>535
ありがとうございます。何とか解決しそうです。
538525:02/11/14 23:47
>>534
ありがとうございます。何とかなりそうです。
>>525
とりあえず、できた。
Option Explicit

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Private Sub Command1_Click()

Dim hwnd As Long, hcwnd As Long
hwnd = FindWindow("notepad", vbNullString)
hcwnd = FindWindowEx(hwnd, 0, "edit", vbNullString)
Clipboard.Clear
Clipboard.SetText "hoge"
Call SendMessage(hcwnd, &H302, 0, 0)

End Sub
どうせなら直接 WM_SETTEXTすればいいのに
>>530-540
525はVB.NETだということにまず気づけ。
542525:02/11/15 06:09
>>541
.net 6.0 どちらでも試してました。
しかし助かりました。皆さんありがとうございました。
>>541
.NETだとおもたけど.NET持ってないしー
>>498
めちゃ遅レスだが、原因わかったぞ。
ソース出せと言った手前、答えないとなw

原因は、
>Application.DisplayAlerts = False
>objexcel.Quit
>Application.DisplayAlerts = True
この部分。
Application を objExcel.Application に置き換えてみ。

あと余談だが、「現象が確認できる最小ソース」ってのは

Dim objexcel As Excel.Application 'Excel

Set objexcel = New Excel.Application
objexcel.Visible = True
Application.DisplayAlerts = False
objexcel.Quit
Application.DisplayAlerts = True
Set objexcel = Nothing

こういうのを言うんだ。これでも現象は出せる。
テマヒマを惜しんでいたら、デバッグはできないよ。ほいじゃ。
545デフォルトの名無しさん:02/11/15 09:23
最大化のボタンをクリックした時に
Formの大きさをある程度の大きさ以上にしたくないのですが、

Private Sub Form_Resize()
Me.Width = 7500
とかすると エラーになっちゃいます。
どうしたら、最大化で サイズを変更できますでしょうか?

>>545
WindowStateで調べて処理を分けるか、めんどくさきゃ
On Error Resume Next でエラーをシカトしてもいいんじゃない?
>>545
最大化ボタンを無効にする
つか最大化ボタンおしても最大化しないインターフェースって、すっげぇ気持ち悪いよ。
>>545
これでいい?
Private Sub Form_Resize()
If Me.WindowState = vbMaximized Then
Me.WindowState = vbNormal
End If
Me.Width = 750
End Sub
まちがた
Private Sub Form_Resize()
If Me.WindowState = vbMaximized Then
Me.WindowState = vbNormal
Me.Width = 7500
End If
End Sub
551545:02/11/15 09:42
>>549
おおっ さんきゅっー

できたよー。
>>551
でもそのインターフェースが糞だってのは
多分全員の意見だぞ。
553545:02/11/15 09:57
いや 縦長で、横には 広げられないんだよなぁ。
554デフォルトの名無しさん:02/11/15 09:57
実行プログラムを選択するフォーム上で以下のようにプログラムを指定し:

FullExePath = App.Path & "\program1.exe"
中略:選択条件
FullExePath = App.Path & "\program2.exe"
中略:選択条件
FullExePath = App.Path & "\program3.exe"

プログラムを実行するフォーム上で以下のように実行すると、ときどき失敗することがあります:

RetVal = Shell(FullExePath)
If RetVal = 0 Then
MsgBox FullExePath & "の実行に失敗しました。"
End If

失敗した場合に備えて上記のようなメッセージボックスを指定しておくと、実行に失敗したときには正しいフルパスが表示されます。

なぜ、プログラムの実行に失敗することがあるのでしょうか?
失敗するのは最初に選択して実行したときではなくて、2回目以降選択したときのようです。

Visual Basic Version 6を使用しています。
Windows XP、Windows 98いずれでも同じ状況です。
555デフォルトの名無しさん:02/11/15 10:10
>>554
プログラムがない時は、エラーになる。
>>554
ただのバグだろ
>>554
「プログラムの実行に失敗」って、具体的にはどういう症状が出るんだ?
ただ指定プログラムが起動しないだけ?
それともなんかエラーメッセージが出るの?(あなたのMsgBox以外に、ね)
>>554
On Error でエラーを潰したりしてないか?
Shell の前で On Error Goto 0 をしる。
または、
Shell の前で Err.Clear して、
Shell の後で MsgBox Err.Description をしる。
559558:02/11/15 12:02
>>554
どうしてもエラーがわからなかったら、
ShellExecute() API や CreateProcess() + GetLastError() API を試す。
>>554
> 失敗するのは最初に選択して実行したときではなくて、
> 2回目以降選択したときのようです。

「選択」 の意味がわからん。
>>545-553
今更だが、こんなページを見つけたぞ。
「ウィンドウのサイズの範囲を制限するには?」
http://fumiyuki-web.hp.infoseek.co.jp/tech/tech005/
562Cogy:02/11/15 13:21
質問です。VBでSQLつかってデータをもってきてデータグリッドに入れて
表示させたいのですがデータグリッドの設定や使い方がよくわかりません。
(データの入れ方や、それ以前に行や列の設定の仕方も)
教えていただけませんか?
>>562
何がわからないのかわからない。
とりあえずマニュアル嫁にしろ。
564Cogy:02/11/15 13:31
フォームにグリッド張り付けて・・・
そこから先がわかりません。マニュアル詳しい説明ないし。
MSDNでもわからず。
>>564
ま。気長にやれや
>>564
それだけじゃ誰も分かんないって。
グリッド貼り付けて、あなたはどうしたいの?
せめて疑問点をはっきりしろ。
いくら初心者スレとはいえ、使い方を1から全部
教えてくれるほどのお人よしはさすがにいないと思うぞ。
マニュアル読め。
>>564
荒らすな
>>564
データグリッドの仕様だけ調べたってどうしようもないでしょ。
SQL (何使ってるか知らないけど) 側の仕様も調べて、データグリッドでできることと
SQL (何使ってるか知らないけど) でできることをすり合わせていかなきゃ。
569Cogy:02/11/15 13:43
データグリッドにデータベースからSQLで持ってきたデータを
貼り付けたいのです。ですがサンプルコードなどもなく
データグリッドにデータを入れる事すらままなりません。
マニュアルというか与えられた資料には(新VB入門・林晴比古)
データグリッドには全く触れていないので役に立ちません。

ということです。
>>569
つーか正規ユーザーならMSDN持ってるだろ。
それ参照しれ。
あと、与えられた参考書に載ってない・・・なんて文句は上司に言えw
ここではそんな個人的な事情言われても、困る。
とにかく 「SQL」 って何なのかはっきりさせてくれないとどうしようもない。
572デフォルトの名無しさん:02/11/15 13:54
>>569
Data Grid は、ADO Data コントロールとセットで使うのが基本。
■データグリッド(DataGrid)

・データグリッド(DataGrid) に Adodc から、データをセットするには、次の
ようにする。
実際には、Set DataGrid1.DataSource = Adodc1 はデザイン時に連結する。
あまりコードで連結はしない。

Dim dsn As String
Dim sql As String

dsn = "dsn=SAK3_ADO;uid=SAK;pwd=SAK"
sql = "select * from 受注m order by 受注番号"

Adodc1.ConnectionString = dsn
Adodc1.RecordSource = sql
DataGrid1.AllowAddNew = False
DataGrid1.AllowDelete = False
DataGrid1.AllowUpdate = False
Set DataGrid1.DataSource = Adodc1

・連結済みデータグリッド(DataGrid) の表示内容を変更するには、次のよう
にする。Adodc1.Refresh しないと、表示は変わらない。

Dim sql As String

sql = "select * from 受注m where 品番 like 'a%' order by 受注番号"

Adodc1.RecordSource = sql
Adodc1.Refresh
575デフォルトの名無しさん:02/11/15 14:48
>>544
545-560のご回答をありがとうございました。
おかげさまでエラーの原因がわかりました。

FullExePath = App.Path & "\program3.exe"
中略
RetVal = Shell(FullExePath)
If RetVal = 0 Then
MsgBox FullExePath & "の実行に失敗しました。"
Else
Set MyObject1 = CreateObject("Scripting.FileSystemObject")
Set MyObject2 = MyObject1.GetFile(SrcPath & "\" & SrcFile)
End If

質問には書かなかったのですが、上記Else以下で実行結果ファイルのコピー先を
指定していました。FullExePathが正常に実行されているときにShellから0以外が
返されるため、ファイルのコピー先が指定されないでエラーとなっていました。
exeファイルが正常に実行されてもShell()から0が返されないことがあるようですね?
> exeファイルが正常に実行されてもShell()から0が返されないことがあるようですね?

・・・え?
>>575
On Error Resume Next 等していたら
> RetVal = Shell(FullExePath)
これが失敗するとRetValへの代入は行われないわけだが。

つまり、呼ぶ前から RetValが初期化されてなければ
いけないのだが、その辺は大丈夫?
578577:02/11/15 15:57
いや、575の文章をよく読むと俺の勘違いだわ。
というか一体何を言ってるのかサッパリわからんな。
もう解決済みって言ってると思われ。
580デフォルトの名無しさん:02/11/15 16:42
自分のPCにIIS設定して、Basp21を使ってメールを送ろうとしました。
したら以下のようなエラーメッセージが。

553 [email protected]... Relay operation rejected to [email protected]

どうやっても直りません。。
なにか解決策ないでしょうか?
アドバイスお願いしますっ!
>>580
そりゃスレ違いだろ。Basp21のスレ(あるのか?)で聞けば?
582デフォルトの名無しさん:02/11/15 17:01
>581
そうですか。。
すみません。。一応ASPでメール送信しようとしているので書き込ませていただきました。
>>582
VB(Script)使ってるのは分かるんだけど、
エラーメッセージ出してるのはBasp21だろうから、
本質的な問題はVBにはないって意味でスレ違いね。
今調べてみたらBasp21の有益なスレはないみたいだが、
ASP系のMLではよく話題を見るので、エラーメッセージを
Googleしてみたら、なんか情報見つかるかもね。
がんがれ!
がんがるほどのことではないが
585デフォルトの名無しさん:02/11/15 20:11
VB6.0から(IEを起動して)以下のようなページを参照する方法について
教えてください。(POSTです)

"http:// ip address /cgi/login.cgi"

パラメタとしてIDを渡したいです。

技術的にどのような方法がありますか。
サンプルソースなどあれば、教えていただけたら
うれしいです。

よろしくお願いします。

586デフォルトの名無しさん:02/11/15 22:04
>>585
Option Explicit
Public Explorer As SHDocVw.InternetExplorer
----------------
Private Sub Command1_Click()
Set Explorer = New SHDocVw.InternetExplorer
Explorer.Visible = True
Explorer.Navigate "http://doc"
End Sub
プログラム自体はこんなかんじだが、
その前に参照設定で
shdocvw.dll
を呼び出しておく必要がある。
postについてはjavascriptの出番のような気がする。
(javascriptを埋め込んだドキュメントを上記の方法で開くとか。)
navigateの引数でpost送信すれば?
Private Sub Form_Load()
 Me.Show
End Sub
Private Sub Command1_Click()
 Dim a As Object
 Set a = New Form1
 Load a
End Sub
のような感じでフォームを再帰的に呼び出したいのですが、
このような使い方をして何か問題はありますか?(スタックオーバーフローは除く)

具体的に言うとオブジェクトレベルで宣言したオラクルセッションの変数が
上手く認識してくれないのですが、理由がわかりません/-;
590デフォルトの名無しさん:02/11/16 05:51
複数起動を禁止して、もう一度実行されそうになったらコマンドライン引数をすでに起動しているほうで取得したいんですが、
どうすればいいでしょうか。
複数起動禁止はApp.PrevInstanceをつかって。
コマンドライン引数の取得はcommand関数で出来たんですが、
もう一つ起動しようとしたときにコマンドライン引数を得る方法が分からないです。

ようするにタブブラウザとかで、すでに起動している状態で
URLをコマンドラインに付けて更に起動しようとすると、もう一つ起動したりしないで、
すでに起動しているほうで新しいタブでそのURLが開かれたりしますよね。
あんな感じのインターフェースを作りたいです。
>>590
DDE使え
>589
Newキーワードを使ってるって事は新しいインスタンスが生成される訳で、決して再帰している訳ではないのだが。
つぅか上手く認識してくれないって何よ?
もう死ぬほど繰り返されてきたことだが、具体的なエラーメッセージや必要と思われるソースを提示すれ。

593590:02/11/16 08:36
>>591
どもです。
MSDNとにらめっこして送られてきたDDEコマンドに対しては処理するようには出来ました。
(ファイルタイプの設定でDDE通信の設定してやったらうまいこと動きました)
今度は多重起動されそうになったときにDDEコマンドを自分に対して送るような処理を書けって事ですよね。
>>593
それよか、2重起動禁止はミューテックスでやって
引数は、FindWindowしてSendMessegeしたほうがよくない?
595デフォルトの名無しさん :02/11/16 12:32
USBで、MSCommのシリアル通信と同じようにデータを取り込みたいのですが、
どうすればデータを取り込めますか?
目的はGPSデータの取り込みです。
598デフォルトの名無しさん:02/11/16 16:30
ファイル操作のopenしっぱなしでプログラムを終了させていると不良セクタかなんかできてヤベーって
聞きますが、RecordsetやADOConnectionなんかもCloseせずに終了しちゃったりしたらヤベーのでしょうか。
やばくないよ
>>598
基本的に、Open したものは Close しないとヤバイ。
VB の場合、多くの資源は終了時に勝手に Close されるので問題無いが、
時々終了時に自分の持っている資源 (データベースのコネクションやロック)
を解放してくれない粗悪なコンポーネントが存在するので注意する。
601600:02/11/16 16:45
あと、実行しているプログラムがクラッシュすると、かなりの終了時処理が
実行されない。
Close できるものは、できる時にそうしておくべきだ。

>>599
どういう根拠で?
602 :02/11/16 16:47
>>601
VBランタイムが自動的に参照をクリアするから
>>598
今時(つーか昔も?)openしたまま終了した程度で不良セクタが出来ることはない。
読み書き中にリセットとか電源を切ったらやばいかもしれんが。
605595:02/11/16 20:01
>>596-597
情報ありがとう!勉強してきまーす。
>>600,601
( ´,_ゝ`)プッ
今日からVBを始めたのですが質問させてください。

ボタンを押すと図形が一定の場所に移動する、というプログラムを組んでいるのですが
図形が移動している様子(アニメーションとして)はどうやったら表示できるのでしょうか。
例えば図形を上方へスライドさせたい時、

Do Whileで回して
オブジェクト名.Top = オブジェクト名.Top - 1

などとしてもうまく動かないです。何か他にやり方はあるのでしょうか?
超初心者な質問で大変心苦しいのですがどうかご教授願います。
>>607
タイマーコントロールを使う
>>607
Refresh?
あと、X 座標と Y 座標を同時に動かすなら Move の方が良い。
610609:02/11/16 22:36
>>608
ああ、それだ。
Form1のcommand1_clickに
Form2.Show:Unload Form1
と書いて、
Form2のCommand1_Clickに
  Dim tmevent As Long
  tmevent = timeSetEvent(10, 1, AddressOf TimeProc, 0, 1)
Form_QueryUnloadに
  Load Form1:timeKillEvent tmevent
と書き、
標準モジュールに
API timeKillEventとtimeSetEventを宣言し
Public Function TimeProc(ByVal IDEvent As Long, ByVal uReserved As Long, ByVal dwUser As Long, ByVal dwReserved1 As Long, ByVal dwReserved2 As Long) As Long
  Unload Form2
End Function
と書いて実行するとかならずVBごと落ちるのですが、どこに問題があるのでしょうか?
タイミングの問題かと思い、unloadのタイミングを多少変えてみたのですが効果はありませんでした。
612607:02/11/17 02:59
>>608-610
ありがとうございました。やっと動きました!
ただまた質問が出てきてしまいました。
タイマーコントロールに条件をつけてプロシージャから抜け出すことは出来ますか?
指定した位置まで図形が達したと同時にタイマーも止めたいのです。
ExitやWhileではうまく止まらなかったのですが、これもまた別の方法があるのでしょうか。
ご指摘あればどうぞよろしくお願いします。
>>611
MSDN に載っていなかっただろうか。(バージョンによってはそうでないかも知れない)
| アプリケーションは、PostMessage、timeGetSystemTime、timeGetTime、timeSetEvent、
| timeKillEvent、midiOutShortMsg、midiOutLongMsg、および OutputDebugString を
| 除いて、コールバック関数の中から、どんなシステム定義された機能も呼ぶべきでは
| ありません。

これに反する事はやってはいけない。
それを守らなければ、何が起こるかわからない。
Unload なんかしたら、DestroyWindow() やら DeleteObject() やら、おびただしい量の
API が呼ばれる。
これらを見切れないようでは、timeSetEvent() を呼んではいけない。

そもそも VB は途方も無く遅いので、高精度タイマを使うのには向いていない。
本当に高精度タイマが必要なのか?
タイマーコントロールが使えないかを検討する事。

なお、コールバック関数が 1 度しか呼ばれない事を期待する場合は、最後の引数に 1
ではなく 0 を指定する。
これにより、timeKillEvent() を呼び出す必要がなくなる。
より良い方法では、マジックナンバーの代わりに TIME_ONESHOT、TIME_PERIODIC 定数
を定義する。
>>613
指定した位置まで図形が達したと判定できた瞬間に、タイマーコントロールの Enabled を
False に設定する。
615607:02/11/17 03:10
>>614
速レスありがとうございます!
試したところうまく動きました。本当に助かりました〜。
>>589

> のような感じでフォームを再帰的に呼び出したいのですが、
> このような使い方をして何か問題はありますか?(スタックオーバーフローは除く)

(1) 個別のインスタンスごとのライフサイクル(「寿命」)を意識してきっちり管理しないと
  めちゃくちゃなことになる。

(2) ヘタレが小手先の技に走ると、バグの温床となりやすい。

(3) 大半の場合、そのテのテクニックは開発者の自己満足に過ぎず、実用性に欠ける。
  (↑これが一番重要)
SetFocusはフォームが画面の一番上に無いと実行できませんでしたが、
あるフォームが画面の一番上にあるかどうかはどうやって取得するのでしょうか。
If 一番上 Then
Text1.SetFocus
End If
とやってみたいです。
GetActiveWindowとか。
619617:02/11/17 16:58
>>618さんありがとうございます
そのキーワードで検索してきます
検索してからレスした方がいいと思った
622620:02/11/18 01:07
>>618-621さん
なるほどお。
GetForegroundWindowいうのもあるんですね。
GetActiveWindowもどちらもよさげですね。
ところで
ユーザのWindowsフォルダが
C:にあったりD:にあったりでこまってます。
ユーザのwindowsフォルダにアクセスするにはどうすればいいでしょうか?
>>622
620は俺だが?

質問の答えはGetWindowsDirectory。ぐぐっても出てくるぞ
質問でつ。WinXP VB6

かなり大きな(300kほど)csvデータを読み込んで
それに複数条件で検索をかけ、条件に合うものだけを
ListViewに表示する、というものを作っているのですが
何か重いです。多分私の組み方が悪いためだと思うのですが。

ちなみに現時点でのコードは
最初にscvの全データを読み込んで一行ずつ解析し、
配列を組んである変数に各データを格納して
検索時にはその配列内をガーっと検索かけてやって
全部の条件に合う配列番号を取得して、
ListViewにその配列番号のデータを表示しています。

これだと検索は速いのですが、最初の格納にかなり時間がかかります。
どうにかもっと効率的なやり方は無いものでしょうか?
625 ◆fy3fqyFzv2 :02/11/18 14:20
外部アプリケーションのListViewコントロールの内容を取得したいのですが、
どうすればいいですか?
どうもそのListViewはオーナードローのようなので
どうやって取得していいのかわからないのです。
>>624
1 行を取り出すには Line Input の方が速かったと思う。

あと、VB を使うのを諦めれば速くなるかも知れない。
VB は大量データの処理に向いていない。
>>624
格納に時間がかかるってのは、もしかして
格納時にListViewをVisible=Falseにしてやればいいって
だけのオチじゃないだろうね?
「どこで時間を食ってるのか」を、憶測じゃなく、実際に
計ってみるのが高速化への第一歩と思われ。
いわゆるボトルネットを探すというやつだ。がんがれ。
VB6で
Dim IE As Object
Set IE = CreateObject("InternetExplorer.Application")
とやると、実行時エラー「オートメーションエラーです」
とでてしまいます。いい方法は無いでしょうか。
>>628
エラーにならないぞ
当方Win2K + IE6 + VB6
>>629
IEがはいってないんでないの
>>630
普通に考えたらそうだよね。
でも今時そんなマシン探すほうが難しいような・・
まったくの推測だけど、少なくともIE4以上が
入ってれば上記のソースは問題なさそう。
IE(3.0以上)が入ってなければ
「ActiveXコンポーネントはオブジェクトを作成できません」
というエラーになるはずだよね。

多分 IEは入っていて、本当はCreateObjectの行ではなく
その後ろの省略してる行でエラーになってんじゃないの?
>>632
きっとそうだ。
じゃあ、628はDQNってことで。
635628:02/11/18 15:30
今までいけてたのに、急にそうなったから
何でかな?と思って聞いてみました。
Win98+5.5SP2
>>627
ボトルネット、って何だ?
637628:02/11/18 15:40
ちなみにVBSで
Set IE = WScript.CreateObject("InternetExplorer.Application")
とやると通ります。。。
>>637
WindowsUpdateをしたらいいかも。つーか、IEの再インストールつーか。
>>636
ボトルメールの.NET対応版・・・って書こうと思ったけど
あまりにもつまらなくてやめにした

>>638
そういうので直るんだったら、VBSのも通らないような・・
628よ、ほんとのほんとに、さっき書いたソース「のみ」を
書いた状態でエラーが出るんだな?
ほかの行でエラーが出てるなんてDQNなオチは勘弁だぞ。
640628:02/11/18 16:26
タスクトレイで常駐状態(非表示+最小化)の
場合になるようです…。
>>640
主語が抜けてるが。
「なにが」タスクトレイで・・ なんだ?
自分のアプリ?
>>628
ほかのPCでも試してみたの?
643628:02/11/18 16:50
>>641
すんません。自アプリです。
右クリックメニューを出してそのメニュー
選択時にその処理をしてます。
>>642
開発環境が1台しかありません。。。
exe化してもう一台でやってみましたが、
やっぱりエラーが出ます。
しつこいようだが、

Dim IE As Object
Call MsgBox("1")
Set IE = CreateObject("InternetExplorer.Application")
Call MsgBox("2")

と書いた場合、1が表示されて、2が表示される前にエラーが
出るんだな? 推測じゃなくて、実際に試して報告して欲しい。
タスクトレイのサンプル拾ってきてやってみたけど問題ないよ
646628:02/11/18 17:23
>>644
その通りです。2の表示が出る前に
オートメーションエラーが出ました。
普通のフォーム(最小化もせず、
非表示でもない)から同じコードを
流すと、1も2も表示されます。
エラーも出ません。
>>646
うへえ。疑ってすまんかった。
それじゃ俺には原因分からんわ。
ほかの人、よろしこ。
648628:02/11/18 17:30
とりあえず自分で解決策を見つけてみます。
考えていただいた方、ありがとうございました。
タスクトレイの処理がおかしいのかな。
どのサンプルから拾ってきたの?
それとも全部自作?
サブクラス化した?
しないやり方?
サブクラス化で思い出したが、
サブクラス化するとVBの停止ボタンで停止できない(押すと不正落ちする)のはなんとかならないの。
これが嫌でサブクラス化を敬遠してしまう。
フォームからフォームを開いて、双方のフォームをタスクバーに表示したいのですが、
プロパティの ShowinTaskbar = True にしても、最初のフォームのみしかタスクバーに表示されません。
双方ともタスクバーに表示するにはどうしたらよいのでしょうか。
>>651
・・・されるけど?
>>651
まさか、デザイン時に False に設定してて、それを実行時に True に変えようと
してる?
654651:02/11/18 18:22
プロジェクト>プロパティからスタートアップの設定をフォーム1にし、
標準モジュールからフォーム1を呼び出し、フォーム1でオブジェクトとして
フォーム2を呼び出しています。
判りづらい説明で申し訳ありません(汗
>>654
だから、再現しないってばさ。
653 についてはどうなの?
656651:02/11/18 19:11
ソース抜粋です。

標準モジュール(Module1)
Public Sub Main()
Dim obj As Object
Set obj = Form1
Load obj
obj.Show 1
End Sub

フォーム1(form1 ボタン一つだけのフォーム)
Private Sub Command1_Click()
Dim obj As Object
Set obj = Form2
Load obj
obj.Show 1
Set obj = Nothing
End Sub

>>653
ShowinTaskbarはプロパティウィンドウで変更していますが、やっぱり表示されません…
>>656
モーダルフォームはタスクバーに表示できない。

あと、何でそんな面倒な事やってるの?
obj に代入しなくてもいきなり Form1.Show 1 とかで済むのに。
Load も要らない。
658651:02/11/18 19:33
>>657
ありがとうございました。
お手数をおかけして申し訳ありませんでした。
だね。Loadするんならshowじゃなくてvisible=trueにするよね
つーかまあ、モーダルフォームをタスクバーに表示する必要性が感じられないんだが・・・。

>>659
それではモーダルにできめぇ。
661デフォルトの名無しさん:02/11/18 20:45
>>658
検索したらこんなページ見つけたYO!!!
http://www.fukkey.dyndns.org/pins/vb/020425/36425.html
不気味だ・・・。
662デフォルトの名無しさん:02/11/18 21:00
.netでウィンドウズ9Xのアプリケーション作成できるの?
そういや、.netより前のVisual StudioでDOSのアプリケーションって作成出来たっけ?
664デフォルトの名無しさん:02/11/18 21:09
PC初心者も安心して使えるこのソフト!

 http://hp.vector.co.jp/authors/VA031513/
665617:02/11/18 21:41
>>623さんありがとうございす。
>620は俺だが?
書き間違いに今気が付きました。
666デフォルトの名無しさん:02/11/18 21:43
DTPicker以外にも日付の入力が出来るコントロールって標準でありますか?

うちの会社の先輩、DTPickerでカレンダーを表示して、
月を変更して他の部分を押しただけで日付が確定されるってことを気にしているんですよ。。
禿げしくどうでもいいことなのに。

もう一つ質問。DTPickerで日付をWクリックした時のみ日付の変更を確定するってことは出来ますか?
667デフォルトの名無しさん:02/11/18 22:37
ExcelVBAでなのですが、
WindowsMediaAudioファイルの
再生時間を取得することってできますか?

何か特別なモノが必要なのでしょうか?
よろしくお願いします。
>>662
95以外ならね。
>>667
CurrentPositionプロパティは現在の再生経過時間をあらわしている。
>>624
今どのくらいかかってて、目標がどのくらいとかよくわからないからなんとも言えないけど、
ちなみに Redim は遅いよ。
あと、ListView は Add Set Set ... より Add一発の方が早い。
With を使って無駄な解決を減らすとか。

というか、そもそも
[1] ファイル読み込み [2]配列に格納 [3]配列の全要素を対象に検索条件の判定 [4]表示
よりは
[1] ファイル読み込み [2]検索条件の判定 [3]表示
の方が早いような気がする。。。
671667:02/11/19 08:34
>>669
すいません。
現在の再生時間ではなく、
1ファイルの長さです。

例)1:30/5:45の場合、5:45の方です。

よろしくお願いします。
>>671
ファイル全体の時間は
Durationプロパティ
673質問です:02/11/19 11:51
VBScriptで文字列の全角→半角の変換を行いたいのですが、
VBにあるStrConvのような関数が無いようですので、
これは力技で総当り変換のロジックを組むしか無いのでしょうか?

ぐぐっていろいろ検索しましたがズバリなページを見つけることが
出来ませんでした。もし何かいい方法がありましたらよろしくお願いします。
>>673
VBで半角に変換するActiveX作って、それを呼び出したら?
>>673
総当り変換関数作ったら公開してください
>>675
総当り関数なんて必要? >>674の方法が楽でいいと思うが。
VBランタイム入れたくないとか、理由あるなら別だが。
>>676
>>674のやり方なら自分でやっても楽だけど
総当り関数は自分で作るのはめんどいから作ってくれっていってるの。
いつか役に立つこともあるかもしれないし。
>>677
なるほど
でもVBScriptで作った総当たり関数なんてクソ重そうだな。
使い道にもよるが・・・
SQL文でカンマをエスケープさせる方法がわからずになやんでいます。
where MOJI='〜,〜'←エラーが出る
,,2こ重ねたり\,としてもダメでした。
>>679
何に対してSQL文を発行してるかも言わずに
答えろというのか。無茶なヤシだな。
681679:02/11/19 16:17
Accessのテーブルに対してです。
682679:02/11/19 16:41
わかりました。では。
683667:02/11/19 16:46
>>672
ありがとうございます。

ところでこの場合必要なものって
WindowsMediaFormatSDKがですか?
自分なりに探しては見たのですが、
いまいち詳しく紹介してるところが見つからなかったので…。

よろしくお願いします。
>>683
こちらはVBAでなくVBを使用していて、
VBの画面から
表示→オブジェクト ブラウザ→MediaPlayer
を選ぶとMediaPlayerコントロールのメソッドやプロパティ一覧が表示された。
これにもあまりくわしくはのってなく、
Durationに関してもわざわざ英語辞書で意味を調べる苦労をしたぐらいだ。
Excelでメディアプレイヤーを使ったことはないのでオレからはこれ以上は何も言えない。
Excel以外でメディアプレイヤーを使ったことがあれば情報を提供できるはずなんだが、
VB厨はよく言語とコンポーネント等をいっしょにして考えるよね。
VBで〜を使うにはどうすればいいですか? みたいに。
687デフォルトの名無しさん:02/11/19 19:16
じゃなんと考えれば良いの?
688デフォルトの名無しさん:02/11/19 23:45
VB6です。
メニューエディタでメニューを作っているのですが、
セパレータ(?)が作れません。

 上書き保存(S)
 名前をつけて保存(A)...
 -------------------   ←これ
 終了

どうやったら作れるか教えてください。
689デフォルトの名無しさん:02/11/19 23:52
エクセルのVBAについてここできいてもいいでしょうか、っていっても聞くけど。
再描画を行われないようにするにはどうすればいいのでしょうか?
データの書き換えが終わるまで再描画を切っておきたいのですが。
>>688
Captionを"-"に。
691688:02/11/20 00:13
>>690
ありがd
できますた。
>>688
ヘルプ見ろよ
693デフォルト名無しさん:02/11/20 02:12
Visual Basic 6 です
ビープ音10回鳴らして終了するプログラムってどうやるんですか?
beep
beep
beep
beep
beep
beep
beep
beep
beep
beep
end
695693:02/11/20 02:37
ヽ(`Д´)ノウワァァン 
>>689
Application.ScreenUpdating = False
詳しくは ScreenUpdating でヘルプ
697696:02/11/20 07:36
>>696
ありがとうございます。
worksheetやworkbookのメソッドで捜していたから見つからなかったみたいでした。
(゚Д゚)??
島谷タソに強引に迫られてみたい…ハァハァ(´Д`;)

島谷「あのね、今日実はお願いがあるんだ…うふふ…」
漏れ「えっ何?言ってみてよ、ひとぴょん」
島谷「私も男の子がオシッコしてるとこ見てみたいなぁ〜…な〜んてねっ♪クスッ」
漏れ「えっ!?も、漏れの!?」
島谷「ねぇいいでしょ?私オチンチンの先からオシッコ出てるの見ると、何だか『可愛い〜』って思っちゃうの…♪」
漏れ「うん…じゃぁいいよ、ひとぴょん」

ジョボボボ…

島谷「立ってオシッコするのって、何か不思議だね…私、ずっと見てても全然飽きないの…」
漏れ「えっ別に普通だよ…ねぇ、ど、どこ持ってるの?ひとぴょん」
島谷「ここ持ってると、オシッコ通ってるのが物凄くよく分かるね…うふふ…」
漏れ「やめてよひとぴょん…恥ずかしいよ…」

(省略されました・・全てを読むにはここを押してください)
>>694

For文使えや。
>>694

Sleepも使えや。
>>694

End使うヤシはDQN。
>>700-702
つーかおめーら文句逝ってる暇有ったら書けよ屑
704デフォルトの名無しさん:02/11/20 11:36
RealPlayerで複数のファイルを連続で再生するのに合わせて
テキストを表示させたいのですが、できるでしょうか?

1.aaaa.rmの再生と同時にaaaa.txtを表示
2.bbbb.rmの再生と同時にbbbb.txtを表示
.
.
.

という感じです。ヒントだけでもいいので何か教えてください。

shellとGetExitCodeProcessを使おうと思ったのですが、
shellで動かしたRealPlayerが一つのrmを再生し終わっても
終了コードが返ってくるわけではないのでダメでした。
RealPlayerを起動して表示するなら無理です。
自分のウインドウにrmを表示させてやれば再生してるか
終了してるかわかりますよね?
706 :02/11/20 12:44
うっさい、ハゲ
>>706
ハゲはおまえじゃ、ハゲ
708704:02/11/20 13:22
ありがとうございます。RealPlayerのOCXを使えばいいってことですね?
で、
http://www.jp.realnetworks.com/resources/sdk/vbplay.html
http://service.jp.real.com/help/library/guides/extend/methods.htm#1019460
に辿り着いたのはいいんですが、
「一つのrmが終わってから次のrmへ」というのが、どうもできません。
できたら、またヒントをお願いします。

「自分のウインドウにrmを表示させる」というのはできました。
709704:02/11/20 13:26
× OCX
○ ActiveX コントロール
710すみませんが:02/11/20 13:33
エクセルのVBAなんですが
空のセルを以下のように0という文字で所得しようとするとエラーになります。
If Cells(a, b) = "" Then age(a, x, y, b) = "0"
調べてみても良く分からないので簡単に教えて頂けないでしょうか。
>>709
おなじことやんか。

>>710
前後の状況を説明せずに断片的かつ中途半端な情報だけをまる投げして
他人のリソースで問題を解決しようとする姿勢が間違っています。

ジグソーパズルのピース1、2枚だけで全体の完成イメージを推理しろと
要求するようなものです。
712704:02/11/20 13:48
>>711
「同じか、似たようなもん」っていうあいまいな知識はあるんですけど、
コンポーネントのファイルは、dllになってたので。
また見当違いなこといってますかね。
>>708
http://service.jp.real.com/help/library/guides/extend/methods.htm#1019460
再生状態の情報
GetPlayState()
0 停止中
になればいいんじゃない?
あいまいであれば、調べる事も大切かと。
715704:02/11/20 13:57
>>713
ケアレスミスでした。
やっぱりGetPlayStateでいいんだって安心してすぐ発見できましたです。
助かりました。
おっと
http://service.jp.real.com/help/library/guides/extend/events.htm#1014246
OnPlayStateChange(newPlayState)
でイベントがくるとおもうので、その中でだろうね。
OnPresentationClosed()
は違うんかぃ>>716 @自分
>>704
なぜそんなことをしたいのか知らんが、SMILとか使えば解決する問題じゃないのか?
そこにVBがあるから
じゃないのでしょうか。
720704:02/11/20 14:33
やっぱりだめでした。ケアレスミスはそのとおりだったんですが、根本的に。

Form1.RealAudio1.Source = strRm
Form1.RealAudio1.DoPlay

Do Until Form1.RealAudio1.GetPlayState = 0
Loop

という感じにしたのですが。

>>716
ありがとうございます。
「その中で」っていうと、どういうことでしょう?

>>718
SMILって??

また、あとで来ます。
RealAudio1には
OnPlayStateChange(newPlayState)
というイベントでてきません?
そのイベントの中で、やるのじゃないかなあ
OnPresentationClosed()
というイベントはファイル終了時に来ないでしょうか?
それと、DoPlayの直後ってGetPlayState = 0になってる可能性ありません?
Do-Loopの中、DoEventとかないと、停まってしまったりして。
そのまえに、失敗したらエラーか停まったか、状況がわからんと、レスできないような。
ShowOpenでファイルを開くときに、
Text1.Text = CommonDialog1.FileName
だったらテキストボックス1に絶対パスでファイル名が入りますが、
これを相対パスでそこのフォルダのファイル名だけを表示させるには
どうしたらいいでしょうか?
723 :02/11/20 15:04
うっさい、ハゲ
>>722
App.Path を引く。
"..\" を先頭に付加。
>>722
文字の右から取っていって、¥や.や:とかがあったら、そこまで。とか。
726724:02/11/20 15:17
訂正
"..\"

".."の間違い。
>>722
InStr関数やMid関数やLen関数やらを駆使しろ
相対パスが得たいのか?ファイル名が得たいのかどっちだ?
相対パスを得る必要なんてあるのか?
別ドライブにファイルあってApp.Path轢いても。。。
つーか、コモンダイアログってカレントディレクトリ変えるから、その都度
相対パスも変わるべ。
引くなら App.Path じゃなくて CurDir だろ。
ネットワークパスはどーするんだ。
CurDirの文字数とFileNameの文字数ひいて、Right関数で、、、
顧問ダイアログって、複数のファイル選択できたっけ?できたらコレ使えないんだろうけど。
ネットワークパスでおかしくなることありましたっけ?
734718:02/11/20 16:06
>>720
SMILっていうのは・・・といいたいとこだが、使っているのを見ただけで俺もよく知らん。
もしかしてなんか間違っているかもしれんので調べてくれ。もはやVBの話題ではないが。
とりあえず、出来ることを適当に書く。もしかしたらプラグインが要るかもしれない。見当ハズレの事を書いていたらごめん。

複数のファイルを連続で再生。↓という内容のファイルを拡張子ram(rmでもいいかも)作り開く。
file://aaa.rm
file://bbb.rm
file://ccc.rm

動画の下に歌詞をつける(動画:aaa.rm 歌詞:aaa.rt) ↓という内容のファイルを拡張子smiで作成
<smi>
 <head><layout type="text/smil-basic-layout">
  <region id="videoregion" top="0" left="0" width="316" height="236" background-color="#000000" fit="hidden"/>
  <region id="textregion" top="237" left="0" width="316" height="25" background-color="#000000" fit="hidden"/>
 </layout></head>
 <body><seq><par>
  <video src="aaa.rm" id="aaa1" region="videoregion" fill="freeze"/>
  <textstream src="aaa.rt" id="aaa2" region="textregion" fill="freeze"/>
 </par></seq></body>
</smil>

歌詞 ↓という内容のファイルを拡張子rtで作成
<window duration="00:30.0" bgcolor="black" height="25" width="316" type="generic" loop="false" wordwrap="true">
<required><B><CENTER><font size="1" face="Arial" color="#FFFFFF">
<time begin="00:00.00"/><clear/>aaaaa<br/>bbbbb
<time begin="00:10.00"/><clear/>ccccc
<time begin="00:20.00"/><clear/>ddddd
</B></required></CENTER></font>
</window>
>>732
Flags プロパティ に cdlOFNAllowMultiselect をセットすれば複数選択できる。
分解した後のファイル名に対してなら、その方法で逝ける。

ファイル名はスペースで区切られる。
やめてくれ。
vbNullChar とかだったら Split で一発分解できるのに。
スペースでバラバラにしたら、ファイル名の中のスペースまでバラバラなんだろうね(笑)
737デフォルトの名無しさん:02/11/20 17:08
cdlOFNNoLongNames 使ってもいいんだが、いちいちロングネームに変換するのが結局面倒。
コモンダイアログ API は vbNullChar 区切りの名前を返すから、それをそのまま戻して
くれればいいのに余計な事しやがる。
すみません、インストーラについての質問なんですが、

複数のプロジェクト(exe)を含めたインストーラって作れるんでしょうか?
(そもそもインストーラ自体作ったことがない厨なモンで^^;どなたか親切な方よろしくm(__)m)
>>738
まずVBのバージョンぐらい書け。
VB6のディストリビューションウィザードのことを言ってるなら、
複数のEXEを含めることはできるぞ。
age ちった・・・

ファイルのオープンとセーブのダイアログなら、自分でクラスモジュール書いた方がいいな。
カスタムコントロールも要らなくなるし。
741738:02/11/20 18:07
>>738 です。バージョンは6.0SP5です。

みすずん検索で見つけた、「(´-`).。oO(VB初心者質問スレ Part11)」
http://pc.2ch.net/tech/kako/1024/10243/1024380249.html

のスレで、ディストリビューションウィザードの記述を見つけました。

さっそくいじってみましたが、SETUP.LSTを直接編集するということでしょうか?
どう直せばよいのかわかりません。
>>741
ウイザード中、GUIでもできますよ。
ファイルを追加するのにEXEをつっこみゃOKでは
743738:02/11/20 18:52
できました、できました!
途中にファイルを追加する所があったんですね(^^;
あとは、追加するexeの依存ファイルも確実に加えてあげればいいわけですね。
ありがとうございました。
beep * 10 で 10回鳴らすことは可能でしょうか?
できないのでしょうか?BEEPを10回は。
BEEPの音を録音して、編集して10回リピートさせたWAVをつくり、再生<おいおい
すなおにWAVを10回ならしてはだめですか。
for i = 0 to 9
beep
next
じゃだめなの?
747744:02/11/20 19:22
>>745-746さんありがとうございます。
748704:02/11/20 19:40
>>721
Sub RealAudio1_OnPresentationClosed()
を作ることで解決しました。
(実は「イベント」というのが分からなかった)

>>718
おお!これいいですね。一変にテキストが表示しきれないので、
テキストのスクロールを自動化したいなぁと思っているのですが、
SMILだと、このtime beginってので解決できそうですね。
ちょっと迷うところです。

でも、はじめに欲しかったものができて満足に使ってます。
レスくれた人ありがとうございました。
どういたしまして。<と普通に書いてみる
750デフォルトの名無しさん:02/11/20 21:38
教えてください。
VBAでディレクトリへのパスを取得するダイアログを使うことはできるのでしょうか?
できるのなら関数名でいいので教えてください。よろしこ。
>>750
SHBrowseForFolder() API、続けて SHGetPathFromIDList() API を呼ぶ。
初期ディレクトリを設定する場合はコールバック関数が要るのでやや面倒。
>>751

> コールバック関数が要るのでやや面倒。

一度きっちりしたものを作り込んだら、コンポーネント(または共通関数)化
して使い回すのが正解かも?
753デフォルトの名無しさん:02/11/20 22:42
クライアントPCに受信されているメール文書を読み込むことのできるAPIとかクラスってあります?
OE、Outlook、Becky、Eudora、Almailといったあたりはみんな受信メールの保存方法が違うから
統一したアクセス手段なんてないのかな?
ADOみたいな感じで、メーラが何であるかを意識しないでメール文書を取得できたら最高なんだけど・・・





Datula がリストに挙がっていない・・・

>>753
無理じゃないか?
755デフォルトの名無しさん:02/11/20 22:50
なんか、お馬鹿な質問が多いね、、、
さすがVBすれだ(藁
サーバにメールが云々ならわかるけど、クライアントに取り込んだメールを、
ましてやいろんなメーラのデータを奪うのは無理かと。
作成可能ならすごいウイルスつくれそうだな
>>753 >>756
クライアントに簡易メールサーバを立てれば良いんだけどね。
なんかいいソフト無いかな。
前はLinuxマシンにimapサーバ立ててやってたんだけど今Linuxマシン壊れてて。
>>755
うるさい。ボケ。



とか言ってあげると喜ぶのかな?
>>758
□サーバにメールを残す
にチェックとか?
>>759
うるさい。ボケ。
>>759
うるさい。ヴォケ。

 はい
           
 ε ⌒ヘ⌒ヽフ   ブヒー
 (   ( `ω´) ≡3
  しーし─J

    っと。

↓次の質問ドゾー。
オレってすげーんだがどうしたらよろしいでしょうか?
オレってすげーんだがどうしたらよろしいでしょうか?
>>765の方が>>764よりタイムスタンプ早いのはどゆこと?
>>764-765
確かにすげーわ・・・(;´Д`)
どちらかが光の速さに近いスピードで動いてるのでは?
769デフォルトの名無しさん:02/11/21 00:22
グラフを描かせて、カーソルを当てると、要素の情報を表示させたいのですが。
ピクチャボックスに点を打たせるだけじゃムリですよね?
教えてください。
>>769
AutoRedraw を True にしてグラフを書く。
MouseMove で座標を判定してそれに応じて情報を表示する。
771デフォルトの名無しさん:02/11/21 01:22
質問です
IEのインスタンス(複数)実行中に、
それらの中から任意のDocumentオブジェクトを参照することは可能ですか?
VBSでやろうとしてます。
>>735-737
本気でそんなこと言ってるの?
FlagsプロパティにcdlOFNExplorerフラグついてりゃ、
vbNullChar区切りだって。
何も付加していないデフォルト状態でこのフラグは付いてるし。
 ∧||∧
(  ⌒ ヽ
 ∪ 。ノ
  ∪∪
VBSって、VB6みたいにプロパティなどのヒントが出る、プログラミング環境っつうか、
そういうエディタとか無いでしょうか。
ヘルプも欲しいな。。。素人が始めるにはキツいっす。。。
>>774
VBでプロトタイピングしてから、VBSに書き換える。
(なんか違うような予感・・・)
776 :02/11/21 09:44
λ...... ここ変だよ・・        λ......       λ......
  λ......            λ...... 失敗だったネ…
 λ......      λ......
        λ......                  λ...... 逃げていく…
    λ......             λ......
                λ......
 λ......       λ......          λ...... みんな逃げていく…
λ...... ここ変だよ・・        λ......       λ......
  λ......            λ...... 失敗だったネ…
 λ......      λ......
        λ......                  λ...... 逃げていく…
    λ......             λ......
                λ......
 λ......       λ......          λ...... みんな逃げていく…
777デフォルトの名無しさん:02/11/21 11:01
ボタンにキーボードショートカットをつけるにはどうしたら良いのでしょうか。
いわゆる、どこにフォーカスがある時でも、Alt+Aでリスト項目を全部選択する、みたいな。
まさか全コントロールのKeyPressに書かないといけないのでしょうか…。
778デフォルトの名無しさん:02/11/21 11:30
Image15.Picture = LoadPicture()
などするときにこの「15」の部分をを変数に置き換える方法って
あるのでしょうか?情報求ム!
>>778
オブジェクト名変えれやタコ
780デフォルトの名無しさん:02/11/21 11:34
>>779
オブジェクト名を変数名と同一にするてこと?
>>778
Controlsプロパティについて調べれ。
>>778

Me.Contorls("Image" & Afo_Na_778_Wa_Itte_Yoshi).Picture = LoadPicture()
783デフォルトの名無しさん:02/11/21 11:40
みたが使い方がいまいちわからん。
説明無さ過ぎ。
object は、「対象」一覧内のいずれかのオブジェクトを指すオブジェクト式です。
解説
コントロール オブジェクトを操作するには、Controls プロパティから取得した参照を使います。
これじゃ初心者にはわからん。
>>783
お前、質問する側ならまず言葉遣いなんとかしたほうがいいぞ。
あと答えは782が書いたのがそのものズバリだ。
785デフォルトの名無しさん:02/11/21 11:43
>>782
アりガトサンクス。ただどこを変えればいいのか教えてください。
786デフォルトの名無しさん:02/11/21 11:44
>>784
以後気をつけます。
ここまで書かれて分からないのか・・・・・?
初心者スレとはいえ・・・・・
これはひどすぎる・・・・・
788デフォルトの名無しさん:02/11/21 11:47
Afo_Na_778_Wa_Itte_Yoshi
この部分が変数なのかなんなのか
みたことの無い人間にはわからないのが普通かと思うんですが・・
>>788
アンダーバーで繋がっているのは一つの単語として認識されるのは分かるよな?
つーことはこれ以外に変数っぽいのは無いだろうが、このバカチンが!!

ヘルプと見比べてみろ。
あと、ヘルプでダメなら、教えてもらったプロパティ名などで
Googleかけるなり機転を効かせられる知能を持て。
人間はいまだ日々進化し続ける生物ですよ?
>>788
常識的に考えて変数に決まっとろーが。
なにかを返す関数の可能性もあるが、
それにしたって文字列と結合してる以上、
何かの文字列を返すものだと推測するのが妥当。
それぐらいも推測できないんだったら、プログラミングは
ちょっと適性がないと言わざるを得ないぞ・・・・
繰り返すが、782が答え「そのものズバリ」だ。
あれ以上を求めるなら、それは完全動作するサンプルをくれってこと、
つまり丸投げをするってことだぞ。
791デフォルトの名無しさん:02/11/21 11:55
               (´⊆`)?<788

     パシャ パシャ
   ∧_∧
   (   )】   すごい人がいる!
.   /  /┘    記念に一枚撮っておこう。
  ノ ̄ゝ
だいたいImage15のまま使うヤシがいまだに現存するんだなぁ。
不思議。
788さん、ありがとう。
あなたのおかげで、自尊心がかなり回復しますた。
794デフォルトの名無しさん:02/11/21 12:00
すんませんなぁ。まだ扱って2日目なもんでね。
みなさんごりっぱごりっぱ。よほど初めからできたらしい。

教えてくれたことには感謝。
↑こいつ偽物。
これ以上いじくると、こいつ荒らしに変貌するぞ。
もう放置、放置。

次の方どうぞ
797デフォルトの名無しさん:02/11/21 12:03
言い訳キタ━━━━━━(゚∀゚)━━━━━━ !!!!
798デフォルトの名無しさん:02/11/21 12:04
ブチャラティィィィィィィィィィィ!!!!!!!
799777:02/11/21 12:12
ええっと、じゃあ、この空気の中申し訳ないです。>>777おながいします。
AltじゃなくてCtrlでよければCtrl+Aをメニューに仕込んで非表示
>>799
それってそもそもUI的に変じゃない?
メニューを作って、それにショートカット&望む動作を
割り当てるんじゃダメなのか。
ケコーン
アイーン
804777:02/11/21 12:33
なるほど、メニューかぁ。
ありがとうございます。

>>801
例にと思って考えたのですが、確かにおかしかったですね。スマソです。
805771:02/11/21 15:02
>>774
Visual InterDev使うとそこそこ入力支援してくれます。
VB6を使うなら 参照設定で「Microsoft Html Object Library」をチェックすると
入力支援やらオブジェクトブラウザやら使えて便利になるんだけど
移植しないといけないです。

ちょっと変えて再質問です。
CreateObject("InternetExplorer.Application") で新しく作ったインスタンスの制御はできるのですが、
既にあるインスタンスの参照を取るにはどうしたらよいのでしょうか?
GetObject() あたりを調べているのですが、クラス名がさっぱしわかりません。
そもそもGetObject()であってますか?
>>777
ボタンのCaptionに"hoge(&A)"って設定するんじゃダメですか?
807 :02/11/21 15:34
>>795
うっせえんだよ!このたこが!
>>777
もしかして質問の内容は
テキストボックスが画面にたくさんあります。
全ての Changeイベント、KeyPressイベント、、、で共通の処理をやりたいです。
全てのコントロールに同じことを書かなくてよい方法はありませんか?
ってこと?
809デフォルトの名無しさん:02/11/21 17:40
Gridって言うと、MSFlexGridばっかり使っているのですが、
Excelみたいな直接セルに書き込めるGridを最近よく見るので
使いたいのですが、何というGridなのでしょうか。
また、これは昔からあるのですか?
>>809
VS-FlexGrid
811628:02/11/21 18:20
>>808
多分そう。
KeyPreview使うだけなのになぁ、と思いながら
見てた。
812811:02/11/21 18:27
名前が…。
813デフォルトの名無しさん:02/11/21 21:24
VB6.0+access98で開発してます。
ADOを使ったレコード単位の排他ロックについて教えてください。
rs.Open時に,adLockPessimisticを指定しても,ロックされません。
rs.Update のところで一瞬ロックされているようです。
あるレコードの編集中は登録またはキャンセルされるまで、
ずっとロックしていたいのです。
他端末からそのレコードにアクセスした際にエラーが返るように
したいのです。
上手く出来る方法ありませんか?
Accessを使わないという手はだめですか
815sakura:02/11/21 21:36
皆さんはじめまして。
教えてください。

VB6のプログラムです。
FTPを使ってファイルを送信(ADD)したあとに、
送信元と送信先のファイルのサイズを比較して、
全件送信成功したかどうかを判別したいのですが、
サイズの比較をするようなコマンド(?)が見当たりません。

手順としては、
@送信元ファイルのサイズ取得(このサイズをAとします)
A送信先ファイルを受信してサイズ取得(このサイズをBとします)
Bファイルを送信(ADD)する
C再度、送信先ファイルを受信してサイズ取得(このサイズをB’とします)
DB’−B=Aであれば正常終了

このような方法を考えています。
上記以外によい方法はないのでしょうか?
よろしくお願いします。

おわり。
FTPを自作してるのかコントロールつかってるのか外部コマンドかわかりませんが、
FTPが成功していればそれを信じてはだめ?
Bファイルをよみこむんなら、Aと足してBに上書きすればいいのでは。
>>815
SIZEコマンドで取得できるよ。
820sakura:02/11/21 22:06
みなさん、お返事ありがとうございます

「インターネットトランスファコントロール」を使ってます。
も一度いうと、VBのプログラム内でサイズの比較をしたいです。

ちなみに、SIZEコマンドは引数はどんなかんじですか?
そのコントロールは使ったことが無いでよくわかりませんが、
サイズを取ってくるくらいであれば>>819さんのだしたとこと
winsockコントロールで
http://www.mars.dti.ne.jp/~torao/rfc/rfc959-ja.txt
を見ながら作れるとおもいますよ。
↑のは中途半端な翻訳でしたか、、、
http://hp.vector.co.jp/authors/VA002682/rfc959j.htm
もちろん原文もみたほうがいいのかもしれませんが。
823ぼぼぼ:02/11/22 00:00
質問です。WinsockでTCPセッションを張った状態でデータ長を指定して、
送れますか?ループ文にsenddataを繰り返すとどうしても2つ目のデータ
の後ろに3つ目のデータがくっつき、またくっつき、、、、、^^;
大変大きいパケットとなり送信してしまいます。
dim data(46) as byte
for i = 0 to 10000
winsock1.senddata data
doevents
'この後dataの一部を変更
next i

結果:一発目は100byteくらい?・その後はくっつくので1518Byteでとんでく 笑
目標:一発目と同様にデータ長でデータを送信したい
くっつき、、、といわれても、、、
データに区切りようのデータとか、データ長とか、含めてないのでしょうか?
socketとはそんなもんです。
>>823
TCP はストリーム。
ストリームを理解しろ。
826ぼぼぼ:02/11/22 06:38
>824
>825

う〜ん、それはわかるのですが、実現できているソフトも
あるのですよ。それはVCで作成しているのですが、VBでも
ストリームをうまく扱えないかなぁと思いまして。
>>826
実現できているソフトはどうやって実現できていると判断したのか?
828ぼぼぼ:02/11/22 07:36
SnifferでTCP1セッションで104Byteで5000発10秒以内に送れていました。
まぁ経路注入ツールなんですけどね
829ぼぼぼ:02/11/22 07:45
訂正。
Snifferででなく、Snifferは確認するアプリとしてです。
受信側はどうしてんの?
区切りは?

831:02/11/22 09:30
>>828
SendCompleteイベントで送信を確認してから次を送ってはどうでしょう。

効率悪そうだけど。
832デフォルトの名無しさん:02/11/22 11:26
VBでFor文中でCのcontinueのような感じで
ある条件の時、For文の頭に戻りたいんだけど
goto使うしかないですか?
>>832
うん。
834832:02/11/22 11:29
>>833
了解です
ありがとう
>>832
でっかいif文書くとかな。
836832:02/11/22 11:34
そうですね
あんまりgoto使いたくないんでif文使って逃げます>>835
俺は、gotoの方がいいと思うが。
>>837
うむ。制御構造を意図に反した使い方をすべきではないな。
continueとかbreakはどちらかというとgoto寄りだな。
俺はどんなにネストが深くなろうともだんぜんifだな・・・
on error以外でgotoは使いたくない
構造化をみっちり仕込まれたからな
841デフォルトの名無しさん:02/11/22 11:44
HTML + VBScript の質問です。
<Script src="age.vbs" type="text/VBScript"></Script>
という方法以外で、別ファイルに定義した関数を呼び出す方法ってありますか?
>>839,840
なんかVB房っぽいな
843832:02/11/22 11:48
あやっぱ修正2行で済むんでgoto使います。
ちんぽー
>>842
だな。

適材適所。使った方がより良いのなら使うべき。

って言うかそれ一昔前のgoto理論だな。
ジサクジエン・・・ (・∀・)
>>844
俺もおもた。
なんか古い考えを真に受けちゃってるって感じ。
>>847
非常にシンプルだ。

gotoは死んでも使うな。

そういわれる理由も考えずそれを振り回すだけのバカが最近やたらと多い。と。
ルールは理由があって出来るもんだ。
釣りだろ。gotoだとスパゲッティーソースになるから
どーだこーだとか噛み付いてくるのを待ってる感じ。
そんな論争はスレ違いだし、もう飽き飽きだ。
それより誰か>>841に答えてやれ。
漏れは無理だがw
>>848
だから噛み付くなってば。不毛だ。
>>849
>そんな論争はスレ違いだし
そうなのか?

VB厨はアルゴリズムとか美しいコードとかは無視してとにかく動くもん納入しろと。
アホなんだから。

ってことか?
>>851
どういう拡大解釈だよ それはw
ここは初心者”質問スレ”だぞ
gotoとifの論争がどうしてもやりたきゃ、よそに
専用スレでも立ててそこで好きなだけやれ
誘導しておくか

goto文を恐れなく使う兵達のスレ
http://pc3.2ch.net/test/read.cgi/tech/1021364372/l50
gotoを選択するやつも、If文でどんどん深いネストを作るやつも
どっちもcontinue使いたがるやつも、どれもいけていない。
関数化で意味ごとに小分けしろ、アルゴリズムを見直せ。逆転の発想だ。
>>854=空気の読めないヤシ
856デフォルトの名無しさん:02/11/22 13:58
はい、次の質問者の方、どうぞ
gotoは使うべき
858わからねー:02/11/22 15:42
VBからwininet.dllのFtpFindFirstFileを使ってファイルの情報を取ったのですが、
ファイル名の所に”21ニ・17:36 .”ていう値が入ってしまうのです。
欲しいのはファイル名だけ(この場合は”.”)なんですけど、
解決策の分かる方はいらっしゃいませんでしょうか?
>>858
使い方を間違っているんだから、
どういうコード(API宣言、APIで使用している構造体の宣言、その関数を読んでる箇所)を
提示してよね。
860:02/11/22 16:24
>>858
参考になりそうなページを見つけたので貼っておきます。
http://vbvbvb.com/jp/gtips/0101/gFtpFindFirstFile.html
861858:02/11/22 17:05
>860
既に参考にしてたりします。
というかそれを、そのまま盛り込んだんだけどね。

>859
というわけで、860さんの紹介してくれたサイトのソースで
何処を直すというか教えてくれるとうれしいです。
862858:02/11/22 17:13
補足します。860が照会してくださったサイトの

Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternateFileName As String * 16
End Type
の構造体のうち、dwFileAttributes、nFileSizeHigh、nFileSizeLow
dwReserved0は正しく取れているようです。
typedef struct _WIN32_FIND_DATA {
 DWORD dwFileAttributes;
 FILETIME ftCreationTime;
 FILETIME ftLastAccessTime;
 FILETIME ftLastWriteTime;
 DWORD nFileSizeHigh;
 DWORD nFileSizeLow;
 DWORD dwReserved0;
 DWORD dwReserved1;
 TCHAR cFileName[ MAX_PATH ];
 TCHAR cAlternateFileName[ 14 ];
} WIN32_FIND_DATA, *PWIN32_FIND_DATA;

合わせてなおるかどうかわからないけど
cAlternateFileName の長さちがうyo
>>863 補足。
VB側は
cAlternateFileName As String * 14
865863:02/11/22 17:38
>>862
ていうか今 >>860 のサイトの内容をコピって貼り付けたけど
なんも修正しないで、そのままで動いてるっぽいぞ。
くわしく検証はしてないけど、リストボックスにはファイル名の一覧が表示された。
866:02/11/22 17:43
>>861
> 既に参考にしてたりします。
それを先に言って欲しかった・・・。

ファイル名の取得は、 cFileName と cAlternateFileName のどちらを使用していますか。
ざっと調べた所 cAlternateFileName はファイル名を返さない場合があるという記述を
見つけましたが、その辺が原因ではありませんか。

それと、先にあげたページのサンプルは、私の環境では正常動作しました。
おそらく、組み込むときにエンバグしたんじゃありませんか。
>>866
いいえ。
>>863
> cAlternateFileName の長さちがうyo

パディングを考慮してあえて変えてるんだと思うが。
869:02/11/22 17:55
>>867
では、>>860 のサンプルは動作しますか。
アプリに組み込んだものではなく、そのままコピペで。接続先も変えずに。
870858:02/11/22 18:07
ファイル名はcFileNameを使用してます。

組み込みのミスも考えて何度か試したのですけどね・・・
ところで、ちょっと気になることがあったのですが、
ファイル名の前に入っている変な文字って、EUCコードのようなので、
変換してみたところ日と時間なんですよ。

DOSプロンプトからftpで接続して、lsコマンド打ちこんでみると
drwxr-xr-x 3 xxxx XXXX 1024 3月 21日 17:36 .
と表示されるのですが、どうもこれの21日という所以降を持ってきてしまってるようです。
なんか関係があるのでしょうか?

>860さんの所だと、lsコマンドを打った時に
drwxr-xr-x 3 xxxx XXXX 1024 Mar 21 17:36 .
というように表示されませんか?
>>870
ごちゃごちゃ抜かさずソースコード書け。
872858:02/11/22 18:11
867は俺じゃないっすよ。

サンプルのテストは、今ちょっと出来ない状態なので、
後で試してみます。
873858:02/11/22 18:14
>871
860のサイトの内容をそのままコピぺしただけなんですけど。
載せた方が良いですか?
長いと思うんだけど。
>>868
パディングってなに?
>>874
パッドを入れること。
876:02/11/22 18:43
>>870
私の環境では、後者の形式で表示されます。
そうすると、wininet.dllのバグという可能性も出てきましたね。

後者の形式で返すftpサーバに接続した時の動作はどうですか?
877858:02/11/22 18:48
>876
うーん、後者の環境だと、今すぐには試せないです。
もし試せたらここに報告にします。
>>876
>そうすると、wininet.dllのバグという可能性も出てきましたね。

低い。断じてお前のせいだと思われ。
ごちゃごちゃ言ってないで問題のソースコード晒せば?
それでどこがおかしいかはっきりする。

まぁ、いきなりDLLのせいにするようなDQNが書くコードだ。ツッコミどころは4つ以上あるに8ラーニングエディション。
>>879
しつこいなー
860のをそのままコピペだって本人が言ってるじゃん。
そこを見ろよ。
881:02/11/22 18:57
>>873
こちらで再現できるだけの情報が欲しいですね。
どこどこのサーバ(出来れば一般に公開されているサーバ)に、このプログラムで接続すると失敗するとい
うような形で。コードについては、完全なコピペなら貼らなくてもいいと思います。

出かけないといけないのそろそろ落ちます。
役に立てなくてスマン。
882:02/11/22 19:08
>>858
1個書き忘れた。
860 のサンプルは FtpFindFirstFile の 戻り値をチェックので、その辺も確認してみてください。

>>878
おっ、俺が悪いの!?
883:02/11/22 19:10
あげ
>>882
878は君と元質問者の858とごっちゃにしている勘違いさん。
しかしまあ、安易に 「wininet.dll のバグ」 と言い出すのはアフォだ。
FTP のリストのフォーマットが規格で決まっていて、wininet.dll がそれを
まともに認識できないと言うならそれでもいいが、実際はそうではない。
http://support.microsoft.com/default.aspx?scid=kb;ja;JP172712
MSDNで検索しる!

で、パディングを教えれ
>>886
そのリンク先のヤシは論外だな。
DLL呼び出しでも文字列の後ろにスペースが埋められると
勘違いしてるか、NULL終端を知らないだけ。
889意味不明@名無し:02/11/22 20:25
教えて下さい! AccessのデータベースをもととしてVB上の画面でグラフを
作成する方法。(ツールがあればツールってどこにあるんですか?)
VB上の画面に表があるんですがそこにもAccessのデータを持っていきたいん
でその方法も!
もしくはVB上の画面の表にデータをもっていき、そのデータからグラフを作
成するんですか?お願いします!
>>889
もう少し落ち着いて文章を書かないと煽りか釣りとみなされてレスつかないよ。
>>889
氏ね
ハンドルそのまんまだな
>>887
パディング 構造体
でぐぐる!
>>887
http://yougo.ascii24.com/gh/33/003305.html
用語辞典くらい調べれ
895意味不明@名無し:02/11/22 20:34
教えて下さい! AccessのデータベースをもととしてVB上の画面でグラフを
作成する方法。(ツールがあればツールってどこにあるんですか?)
VB上の画面に表があるんですがそこにもAccessのデータを持っていきたいん
でその方法も!
もしくはVB上の画面の表にデータをもっていき、そのデータからグラフを作
成するんですか?お願いします!
>>895
もう少し落ち着いて文章を書かないと煽りか釣りとみなされてレスつかないよ。
>>895
マルチ氏ね
ハンドルそのまんまだな
899意味不明@名無し:02/11/22 20:43
プログラムも初心者なんですいません。
ていうか調べてるけどわからないっす。
会社の方針?ですべて自学みたいなんで・・・
900意味不明@名無し:02/11/22 20:45
デフォルトっていうかブラックホールじゃん
萌え。
>>899
ここは VB 初心者のスレであって、質問初心者のスレではないから
そこのところ了承してくれ。
>>895
Text1.Text = "グラフ"
表.Text = OpenDatabase("hoge.mdb").OpenRecordset("Table")(0).Value
903意味不明@名無し:02/11/22 20:54
了解!てか質問レベル高かったみたいっすね
>>903
そんな煽りしても何も出ないぞ
905意味不明@名無し:02/11/22 21:01
でもオレの勝ちだろ
意味不明度では勝る者なし
907意味不明@名無し:02/11/22 21:03
負けました。
902のやつはそれっぽいっすね。
ありがと!やってみます
「インターネットで調べてごらん」とか言われたら
最初にすることが2chでスレ立てる奴
全員梱包してどっか別の星に送ってくれ
909意味不明@名無し:02/11/22 21:07
906うるさい!意味不明意味不明
いつか負かしてやる
910意味不明@名無し:02/11/22 21:08
調べて分からなかったからここ来たんじゃん
そこまでじゃないっす
911ひげ:02/11/22 21:09
winsockで、tcpセッションをはり、1つストリーム送信後、
送信バッファをクリアするまで2つ目なげないっての
できますか?教えてください
912意味不明@名無し:02/11/22 21:09
俺まだ童貞なんだよなー
913意味不明@名無し:02/11/22 21:10
ひげのヴぉけ
お前の番はまだだろ
914意味不明@名無し:02/11/22 21:12
912、913は荒らし
何で winsock をここで質問するんだよ
916意味不明@名無し:02/11/22 21:23
914はおれじゃないよ
917意味不明@名無し:02/11/22 21:28
915も相手してんなよばか!
質問させていただく。VB6SP5

とあるコンソールアプリケーションに引数を与えて
VBから起動したい。
具体的には
Checksum.exeに、
C:\Folderを引数に指定して、さらにその結果をファイルに吐かせる。
つまりdos上から
Checksum.exe C:\Folder > C:\tmp.txt
と打った場合と同じように実行させたいのです。

どうやりゃぁ実装できるんでしょうか。
お願いします。
919デフォルトの名無しさん:02/11/23 00:22
念の為age
>>918
パイプ。
パイプってネットワークのソレじゃないよね?
何?
man | more
>>918
面倒だからbatでその処理を書いておいて
そのbatをVBからShellで呼んでやればぁ?
Command 関数で引数よみとって、
hoge.exe -iFilename -oOutName
とかするとか
925aaa ◆wSaCDPDEl2 :02/11/23 01:47
VB6 Windows2000
ListViewコントロールを使っていて
今カラムをクリックした時のソート部分作ってたんですけど
数字をソートさせると、左側の数字が大きい方が下にいっちゃって
数字の大小で比較できるソートではなくなってしまいます。
どうやれば独自ソートが出来ますか?
それとも他に回避法とかありますか?
926デフォルトの名無しさん:02/11/23 02:13
>>925
文字としてソートされるから、そうなる。
スペースでケタをそろえればオッケー。
>>926 レベル低っ
927 ( ゚д゚) ポカーン
929デフォルトの名無しさん:02/11/23 04:29
WSHをVBのようにデバッグするには、どうやればよいのでしょうか?
スクリプトデバッガって使える?
WSHって何で使うの?
せいぜい、Explorer,Excel あたりしかコントロールできないでしょ
>>930 ごめんね。ネタはよそでやってね。
WSHで検索したら、
「 Office2000にはMicrosoft Script Editorというツールが付属しているそうで、これを利用するのもいいでしょう。
 また、Visual Studio(Visual Basicはこれの一部です)にも同様のエディタが付属しているそうです。」
だそうです。
なんか読んでたら、インタプリタで実行したい気分になったよ。
HyperCardみたい。(W

Set WSHShell = WScript.CreateObject("WScript.Shell")
WSHShell.Run "C:\Progra~1\Outloo~1\msimn.exe" 'OEを立ち上げる。
WScript.Sleep 5000 '5秒ウェイトを入れ起動を待つ。適宜調整してください。
WSHShell.AppActivate "Express" 'タイトルが"Express"で終わるウィンドウを探し、それを前面に表示させる。
WScript.Sleep 100
WSHShell.SendKeys "^+M" 'Ctrl+Shift+MのキーコードをOutlook Expressのウィンドウに送る。「すべてダウンロード」のショートカットキーです。
WScript.Sleep 100
WSHShell.SendKeys "%Y" 'Alt+Yのキーコードを送る。オンラインに切り替えますか?というダイアログで「はい」を押す操作です。
>>921-923

http://www.kumei.ne.jp/c_lang/sdk3/sdk_242.htm

勉強しろよ。すこしは。
>>934
それCじゃ?
>>935
朝っぱらから清々しいこと言うなよ・・・。
937デフォルトの名無しさん:02/11/23 11:17
>>903 >>905-906 >>910
なんか、人間的に欠陥がある椰子が一匹いるね。
938意味不明@名無し:02/11/23 11:40
構って欲しいのか?
939デフォルトの名無しさん:02/11/23 11:42
おまえらバカじゃないのか?ほんと自分は出来る風ですか?
ほんとにバカ、オメーラ、みんな、ネット荒らしとどこが違うんだ!?
ほんとな、おまえらはみんな、ここに来る資格ねーな!!
デフォルトの名無しさんだっけ!!おまえしね!!人が頼んでるってのに何が
あやしいっておまえみたいのがいるから日本がだめになるんだ!!
分かったバーカ!!もう荒らしでも何でもいいよ!!
オメーラみたいなバカどもにつき合ってもしかたないから!!
あんたらみたいのはもうこのよにもいらない !!
 
>>939
君をスカウトしたい!
来たれ!自衛隊!
941デフォルトの名無しさん:02/11/23 11:53
Excel VBAスレで返事がもらえなかったのでこちらでも質問します。

Excel VBAで英語の発音練習に使うソフトを作るつもりです。
マイク入力をwavで保存し、更に波形まで表示したいのですが、
どうすれば良いでしょうか。
Windows APIを使うらしいのですが、いまいち分かりません。
942デフォルトの名無しさん:02/11/23 12:02
>>941
具体的に書かないと漠然としすぎて誰にも答えられない。
API関数の呼び出し方がわからないのか、どの関数を使えばいいかわからないのか、
どこまで出来ていてどこでつまずいているのか。
943デフォルトの名無しさん:02/11/23 12:51
質問です。VB.Netにて 以下のクラスA,Bを定義した場合

Dim a As A
Dim b As New B()
a = b.func1()

でクラスAを利用できますよね

Public Class A
Public Sub New()

End Sub
End Class

Public Class B
Public Sub New()

End Sub
Public Function func1() As A
Dim mA As New A()
Return mA
End Function
End Class
>>941
水野にでも訊けばぁ(w
945941:02/11/23 14:24
>942
どの関数を使えばよいのかが分かりません。
参考になるソースがあればいいのですが。
>944
水野さんとは?

>>945

> 水野さんとは?

伝説の水○を知らないとは、モグリだな。
↓をよく読んでおくように。

ttp://members.tripod.co.jp/ms_mzn/
947デフォルトの名無しさん:02/11/23 16:32
例えば、フォームにあるボタン(OkButton)を押すと動くsub(OkButton_Click)
に、他のモジュールで宣言した変数を渡すにはどうしたらいいんでしょう?

>>947

(1) INIファイルから読み込む。
(2) レジストリから読み込む。
(3) DBから読み込む。
(4) 大逝変数を使う。
(5) 回線を切って首を吊る。

のいずれか (w
949デフォルトの名無しさん:02/11/23 16:40
バウチャー安いの見つけた!!
なんと、5000円!!
アクセスしてみて!
http://www.bidders.co.jp/item/12162690
950 ◆SYTcmgF.Zs :02/11/23 20:44
ListViewコントロールで
一番上にスクロールさせる処理はどう書けばいいですかねぇ?
>>950

MsgBox "1番上までスクロールアップしてください。" & vbCrLf & "おながいします。", vbExclamation, "ネタレスすまそ"
>>950
ヘルプ見ようね。
>>952

>>950のようにロースキルの開発者には、>>951の方が有力な選択肢だと思うが。
954952:02/11/23 22:00
>>953
諒解(w
Lcaseはラージという意味のLなのになんで大文字を小文字に変換するんですか?
逆だと思うんですけど。
それともラージを小文字に、という意味なんでしょうか。
小文字をラージに、という意味にも取れますし。
>>955

> Lcaseはラージという意味のLなのに

お前がヴァカなのはよくわかった。
だから、思い込みで間違ったことを書くのはやめれ。

LCase (lower case) は UCase (upper case) の反対語だ。

ttp://dictionary.goo.ne.jp/cgi-bin/ej-more_print.cgi?MT=Lower&ID=EJ-179830.txt&sw=0

ttp://dictionary.goo.ne.jp/cgi-bin/dict_search.cgi?MT=upper&sw=0


貴様の知能では、理解できんだろうがな。
> Lcaseはラージという意味
(゚Д゚)ハァ?

逆の動作をする UCase が何で U かを考えてみれ。
さらにその逆が L になる事を考えてみれ。
>>956
みなまで書くなよ・・・


ところで、誰か次スレ立ててくれ。
959955:02/11/24 09:05
>>956-958
なるほど〜
ズバリの回答で助かりました。
ポテトのエルとかしか知らないからわかりませんでした。
960955:02/11/24 09:06
Uはアンダーだから変換前よりも小さくなるはずだなー
とおもってました。
>>959-960

「恥の上塗り」って言葉は知ってるか?

知らなかったら、↓ここで勉強してこい。

ttp://dictionary.goo.ne.jp/cgi-bin/dict_search.cgi?MT=%BE%E5%C5%C9%A4%EA&sw=2
963955:02/11/24 09:25
わかりました。
今回は比較級の用語だったのでむずかしかったです。
いいから次スレ立てろ矢(゚д゚)フォルァ!!
>>964
いらん。さっさと滅んでくれ。
966を踏んだ人が次スレたてて、そしてここにそこへのリンクを書き込んでね
978おねがいします。
968と書くつもりだった。
またやっちまった。
969おねがいします。
立てられず。誰か立てれ。

(*´д`*)アハァ… VB初心者質問スレ Part18

1 名前:デフォルトの名無しさん

  Part11 http://pc.2ch.net/tech/kako/1024/10243/1024380249.html
  Part12 http://pc3.2ch.net/test/read.cgi/tech/1026642565/
  Part13 http://pc3.2ch.net/test/read.cgi/tech/1029241786/
  Part14 http://pc3.2ch.net/test/read.cgi/tech/1030947162/
  Part15 http://pc3.2ch.net/test/read.cgi/tech/1032706491/
  Part16 http://pc3.2ch.net/test/read.cgi/tech/1034302532/
  Part17 http://pc3.2ch.net/test/read.cgi/tech/1036154952/

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

心得
壱.質問する前に過去ログにも目を通してみる。
弐.質問する前に MSDN などで調べてみる。
参.VBScript もこのスレでOK。
4.インストーラーなどの質問もOK。
五.下ネタもたまにならOK
Form1に
Form2.Form_load
というステートメントを書いてもエラーがでました。
どこがダメなのでしょうか?
>>971
Private Sub Form2.Form_load()
ってことか?そりゃピリオド入ったら怒られるだろ。
974971:02/11/24 11:19
>>972
そうです。
別のフォームのイベントハンドラというか、プロシージャは呼べないみたいです。
975971:02/11/24 11:23
Form2の
Private Sub Form_load()

End Sub
をForm1から呼びたかったんです。
>>973
乙だけど、ひでーことになったな。
君、>>2貼ったの?
>>975
Subから呼ぶんじゃない。
だいたいForm2のLoadイベント呼ぶ必要あるなら、Form2開けよ。
978971:02/11/24 11:47
>>977
Call Form2.Sub Form_load
ってかんじですか?
979971:02/11/24 11:49
Call Form2.Command1_Click
とかもForm1に書くとエラーでました。
980971:02/11/24 12:07
Form2.text1.text="aaa"
のようなプロパティ操作はForm1からでもできるけど
Form2サブプロシージャはForm1から呼び出せないということで結論にしたいと思います。
なるほど。
>>980
Form2を開きたいなら
  Form2.Show
で良いじゃん。

Form2のCommand1_Clickなどは、Form2側でPublic指定していないと予想。
983971:02/11/24 12:22
どわって〜 Form_Load以外に
Form2.List1_DblClick
とか
Fom2.text1_Change
とかもForm1から呼び出したかったから、Form2.Showを使うわけにはいかなかったんだもん。
Publicを使うというのなら、これからは
わざわざ標準モジュールを用意して共通の処理を書かないとかぁ。
それとも今までどおり
Form1とForm2でダブっているプログラムがあるのは仕方がないとするか。
ダブってんなら別のサブプロシージャに飛ばせよ。
985971:02/11/24 12:30
あるフォームから別のフォームには飛べなかったのだ
986971:02/11/24 12:39
984はこのことを言ってるのだとおもうけど、さっき実験してみてこれはできた。
Form2のなかにオリジナルのサブプロシージャを作って、
'--------------
Sub inForm2()
Form1.Caption = "bbb"
End Sub
'--------------

それをForm1から呼び出すことはできた。
'----------------
Private Sub Command3_Click()
Form2.inForm2
End Sub
'----------------

つまり、VBが自動的に書く
Private Sub Command3_Click()

End Sub
は別のフォームから呼び出せないが、自分で作ったSubプロシージャは別のフォームから呼び出せる。
987971:02/11/24 12:44
だからこれからはいちいち
'-------------------
Sub myCommand3_Click
ステートメントいろいろ
End Sub
'-----------------
Private Sub Command3_Click()
myCommand3_Click
End Sub
'----------------------
のようにイベントハンドラのところからサブプロシージャに飛ばせる方法でプログラミングしていくのがよいかもしれない。
そうすればどのフォームからも再利用可能だ。
971はバカか?
すべての関数・変数にはスコープというものがあるんだよ
イベントの定義文には Private Sub 〜 とあるだろ。
Private と Public の違いくらい自分で調べてから能書きたれろ。ぼけ
989971:02/11/24 12:58
>>988
Sub の中身が他から呼び出せないのはわかるけど、
Subプロシージャ自身も他から呼び出せないのか、と思った。
>>988
BASIC使いにスコープを説くなんて正気の沙汰とは思えない。
>>990
BASIC と Visual Basic の区別がつかないのにこのスレに居るなんて気の沙汰とは思えない。
あ、区別がつかないからスレに居るのか。
>>971はもう氏ね。
書き込みすぎ。
だいたい質問するにも値しないレベルだ。まず本買え。
993971:02/11/24 13:31
結論でたし、なっとくしたからもう書き込まない。
↑馬鹿( ´_ゝ`)
995971:02/11/24 13:49
うましか?
     \ 馬 /   \ 鹿 /
               ∩     ∩
               | つ   「,"|
        ヾ∧     !,'っ_ ⊂_,!
      / ・ |ミ    /  ・ ヽつ
     (_'...  |ミ   ▼,__  |
      (゚Д゚; )..|ミ     (゚Д゚ ,)・|
      (|  .、)|      (|   、)|
       |    |       |   ・・|
       ヽ.._人     ヽ._・ν
       U"U        U"U
997971:02/11/24 14:18
カワユイ
998
999
1000。
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。