トップページ⇒tech
988コメント350KB

くだすれVB6.0以前(超初心者向け)

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/12/08(金) 19:36:45
このスレッドはVBについて、
他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
VB使いが優しくコメントを返しますが、
お礼はVBの布教はしなくてよいので、初心者の救済をお願いします。
0552デフォルトの名無しさん2007/08/28(火) 12:02:52
超初心者的質問ですみませんがどなたかお願いします。
VB5.0 + ActiveReport1.5で帳票を印刷していました。
環境はXPです。

去年SP2に上げたところ、
エラーログが出るようになりました。
ErrCode :VB-2950
ErrMessage:予約済みエラー

SP2では対応できない と考えるべきでしょうか?
それとも
参照箇所を変えることで対応できるのでしょうか?

回答お願いします。
0553デフォルトの名無しさん2007/08/28(火) 13:23:28
>552
こんなとこで聞くよりグレープシティに聞いたほうが早くね?
0554デフォルトの名無しさん2007/08/28(火) 15:38:35
vb6を終了する時にvbのエディタが閉じた後、
異常終了(MSに報告する、しないの画面)が出るんだけどw
100発100中ですww
0555デフォルトの名無しさん2007/08/28(火) 18:01:03
変数名が重複してないか確認汁
0556デフォルトの名無しさん2007/08/28(火) 19:13:58
>>554
エラーメッセージは?dllとかのエラーかな?
0557デフォルトの名無しさん2007/08/29(水) 13:17:02
>>554
そんなんいくらでも原因がボロボロでてくる情報だ罠
グチじゃないならもっと詳細書くといい
0558デフォルトの名無しさん2007/08/29(水) 17:13:09
>>555-557
レスありがとうございます。
会社で再インストールするように言われて
言われた通りにしたら直りました。
現象も出ないので原因ももう分かりませんww
0559デフォルトの名無しさん2007/08/29(水) 21:11:44
いまさら聞くのは恥ずかしいのですが・・・


GOTOを使っちゃダメ、ってのはもはや「信仰」でしかないですよね?
ReturnやBreakを頻発させず、進行がすっきりすると判断される場合は、
躊躇なく使っていいものですよね?
0560デフォルトの名無しさん2007/08/29(水) 21:16:14
それはそうなんだけど、結局そんな場面なんて滅多に現れない。
結局影の薄い存在となったことには変わりないな。
0561デフォルトの名無しさん2007/08/29(水) 21:37:37
いやGOTOを使わなければいけない場面などない

いまどきアホ?って言われるな 精進しなされ
0562デフォルトの名無しさん2007/08/29(水) 21:47:40
>>560-561
例えば、Ifで条件分けをする場合など、その都度インデント入れますよね。
もし、その条件の値が最初から分かってる場合は、プロシージャの最初の方で
条件に合致しない場合を、プロシージャ最後の終了処理に直接飛ばすようにすると、
メインの処理部分は、ひとつインデント無しで書きやすく、見やすくなると思うんです。

条件が多く、WithやFor、Doなども必要な場合は、より効果的だと思うのです。

--------------------
If HOGE = False Then
  Goto ENDP
End If

メイン処理

ENDP:
終了処理
--------------------
0563デフォルトの名無しさん2007/08/29(水) 21:58:34
いまどき無条件にgoto禁止する奴はいない。
自分の頭で物事判断できない教条主義的な馬鹿は別として。
0564デフォルトの名無しさん2007/08/30(木) 22:57:31
>>562
そいういう関数化が必要なのは関数にしてしまうのがいい

昔っからのGOTO禁止もあるけど、VB6がReturn文を陰ながらサポートしてることも忘れないでください
0565デフォルトの名無しさん2007/08/30(木) 23:03:24
>>562
GOTO文の本当の怖さは、無条件にジャンプできることじゃない
ジャンプした先で「なぜジャンプしてきたのか?」が曖昧になるからだ
0566デフォルトの名無しさん2007/08/30(木) 23:29:35
メソッドやプロパティも「なぜ呼ばれたか?」は呼ばれた側からわわからないぞw
そんなもの通常は知る必要はない。

gotoを忌避すべき理由はそんな理由ではなくもっと単純なことだ。
実際に自分でスパゲティコード書いてみれば体感できるよ。

要するにコードを上から下に読めないことが端的に「ヒトにとって」問題なんだよ。

逆に言えば、goto使ってもコードを「上から下に読める」ことが維持されていれば
普通はそんなに可読性は破壊されない。
0567デフォルトの名無しさん2007/08/30(木) 23:34:51
>>566
それはgoto固有の問題じゃないよな?
0568デフォルトの名無しさん2007/08/30(木) 23:39:00
>>567
何をいってんだろうね

じゃあ逆に聞くが、goto以外で「下から上に戻る」コードを
書く方法を教えてくれよまったくw

ループとか寝ぼけたこと言うなよ
0569デフォルトの名無しさん2007/08/31(金) 07:36:25
ローカル変数を全部グローバルにもっていって、
Procedure line3
end
Procedure line2
end
Procedure line1
end

Procedure foo
call line1
call line2
call line3
end
みたいな?
05705592007/08/31(金) 11:56:57
あるプロシージャ内でのみ、内容の同じ数行のコードを複数回記述する場合・・・など、
関数にして外に出すよりも、GOTOでそのプロシージャの末尾に置いておく方が、
可読性は破壊されないどころか、向上するのではないかと考えています。

その都度関数を作っていると、引数や戻り値の仕様もそのたびに
考えなくてはならない場合も多く、時間的にもGOTOを選んだ方がいい場合が、
必ずあるように思います。

↓こうなるよりは、>>562の方がよいと思うのですが・・・。
--------------------
If HOGE = False Then
  Call 終了処理関数
  Exit Sub
End If

メイン処理

Call 終了処理関数
--------------------
Function 終了処理関数()
  終了処理
End Function
--------------------


スパゲティと教条主義以外に、GOTOを忌避する理由って、ありますか?
0571デフォルトの名無しさん2007/08/31(金) 12:15:45
>>570
そんなコーディングしか思いつかないのならいいんじゃない?
センスがいいとか悪いとか誰にも見せなきゃこまらないっしょ

0572デフォルトの名無しさん2007/08/31(金) 12:37:06
>>570
一つの関数しか呼ばれない処理をやたらと関数に括り出したくない、
という発想は必ずしも間違ってないと思う。(ただし、状況的に不適切な場合はあるよ)

ただ、570のような処理は別にgoto使わずに、かつ各場合分けに共通の処理を
関数に括り出さずに書けるだろう。
0573デフォルトの名無しさん2007/08/31(金) 12:50:44
goto使わない奴って、on error gotoも使ってないのかな?
gotoに賛成も反対する気も無いが、気になる
0574デフォルトの名無しさん2007/08/31(金) 13:31:50
>>572
こういうことでしょうか?
--------------------
If HOGE = True Then
  メイン処理
End If

終了処理
--------------------

メイン処理が長くなり、WithやForなどでさらにインデントが挟まるような場合は、
>>562のような書き方の方が、見通しがいいと思いました。
例えが悪かったですね。
コーディングしている最中に、「ああ、ここでGOTO使えれば早いのになぁ」と
思う場面が出てくることがあるんですが、いざこういう話をするときに思い出せないです。

>>573
GOTO絶対不可な先輩も、On Errorのときだけは使ってますね
0575デフォルトの名無しさん2007/08/31(金) 13:45:14
>573
On Error Gotoは意味合いが違うから除外
0576デフォルトの名無しさん2007/08/31(金) 13:55:56
除外らしいから今後はこうしよう
On Error Goto Label
Error 513
On Error Goto 0
0577デフォルトの名無しさん2007/08/31(金) 13:58:58
>>575
gotoの動作としてはまったくかわらんよ
ローカル内で考えると、goto HANDLEがErr.Raiseって感じだし
やっぱり、gotoを絶対使わないという信条の人なら
On Error Resume Nextを使う必要があるんじゃないのかね
0578デフォルトの名無しさん2007/08/31(金) 13:59:40
HANDLEじゃないLABELの間違いw
0579デフォルトの名無しさん2007/08/31(金) 15:04:06
>>568
は>>569見たいな状況
「上から下に読める」なんてドンだけフローチャートの世代なんだ

>>570(>>559)
>>564がぬるぽ

>>574
>>565がぬるぽみたいだ
「エラーでジャンプ」し尚且つErrオブジェクトで意味も参照できるからいいんじゃないかと
これは If cond Then A Else B 文で「condで A または B にジャンプ」という意味があるのと同じ

したがって >>576 はちょっとナンセンスな切り返しだ
ただVB6の言語仕様が昔ッからのを引きずっているのは確かで、
その状況で「GOTOを禁止する」ことが果たして万全なのかどうかは俺にはわからない
本嫁
0580デフォルトの名無しさん2007/08/31(金) 15:07:15
.NETだとtry-catchできるの?
0581デフォルトの名無しさん2007/08/31(金) 19:04:45
>>574
だから、教条主義的にgotoを禁止するのは馬鹿げてるけど
大概の処理はgoto無しで、かつgoto使った場合より可読的に書けるよ。

それと、なんか君は「コードを書く時」の目線ばかりを優先しているように見えるけど、
(どうしたらよりコンパクトに書けるか、みたいな)余計なお世話だろうがよくない兆候だよ。

「コードを読む時」目線で考えるべきだ。
つまり、他人にとって、あるいは一年後の自分にとって「読んで理解しやすいかどうか」を
(gotoならgotoの使用の是非の)判断の指針にすべきだ。


>>579
上から下に読み下せないコードはヒトにとって読みにくい、
という経験的事実がフローチャートとどう関係するんだろうねw

構造化プログラミングすら理解してないなら黙ってればいいのに。
ループ、分岐、関数、といった「構造」に抽象化するのは上から下に読み下すためだろう。

ループも分岐も、ループや分岐という概念を知らずそれを「ループ」や「分岐」として
認識できなければ、ただのgotoだ。

というか、日本語書けよ馬鹿。
05825592007/08/31(金) 20:25:54
いちおう、毎回「コードを読む時=後で他の人がメンテナンスする時」
を意識しているつもりではいるのですが。
(GOTO嫌いな人にとって感情的に読む気が失せる・・・のは無視します)

「大概の処理をGOTOを使った場合より可読的に書く」
イメージがなかなか沸かないです・・・。
0583デフォルトの名無しさん2007/09/01(土) 10:53:51
んーそうだなーじゃあちょい視点を変えて
飛び元と飛び先のロジックの関係を考慮しなくちゃならなくなるケースを考えてみるとか。
複数の場所から一つのラベルにGotoが貼られているとする。
仕様変更でラベル以降のロジックを修正しなきゃならなくたった場合、呼び元の全ての
ロジックへの影響を考慮しなくちゃいけない、とか。
0584デフォルトの名無しさん2007/09/01(土) 13:28:47
それは条件分岐でやる場合でも、関数を使う場合でも
同じことを考慮しなくちゃならないと思うけど
0585デフォルトの名無しさん2007/09/01(土) 17:41:41
>>581
まあ本当に構造化プログラミングを理解してる人間なんていないと思うんだが
もしかして、構造化=ソースの構造化、と間違えてる?
0586デフォルトの名無しさん2007/09/01(土) 21:56:28
なんでゲーム作る奴って、ターンとかロールなんていう言い方するんだろうね。
実際にプレイする小中学生とかが
ターンとかロールなんて言われても何の意味だかわからんだろ。
やたらと横文字使えばいいってもんじゃねーぜ。
だから、ゲーム作る奴はバカって言われるんだよ。
もう一度言ってあげようか?
バ・カだよ。バ・カ
0587デフォルトの名無しさん2007/09/01(土) 22:27:16
何言ってるかわからん
vb関係ないし
日本語でおk
ってか人間でおk
0588デフォルトの名無しさん2007/09/01(土) 22:52:04
そこはゲームなんて横文字を使うなと指摘するべき
0589デフォルトの名無しさん2007/09/02(日) 05:10:05
俺の場合、ゲームのきっかけが古いADVから入ったから小学生時代に
英単語覚えたな
昔のADVはコマンドをすべて、自分で考えて打ち込まなければならなかったしかも英語でw
もちろん小学生の頭じゃほとんど理解不能でクリアしたのはずっと後だったけど
0590デフォルトの名無しさん2007/09/03(月) 09:18:24
CreateObjectでInternetExplorerを操作しているのですが
このIEのユーザーエージェントを変更する方法は
ありますでしょうか?
0591デフォルトの名無しさん2007/09/03(月) 09:34:16
自己解決しました。
navigateの引数にありました。
0592デフォルトの名無しさん2007/09/03(月) 15:55:25
VB6からADODBを使って、MS SQLServer2000 上のテーブル/ストアドプロシジャ更新を行いたいのですが、
SQL文の区切り(?)に使われている GO がエラーとなってしまいます。

'現在試している方法
Dim hTextStream As TextStream
Dim hFso As New FileSystemObject
Set hTextStream = hFso.OpenTextFile("foo.sql")
Call MyConnect.Execute(hTextStream.ReadAll())

foo.sqlは、EnterprizeManagerで作成したテーブル、ストアドプロシジャの削除、登録のSQL文で、
当然ながら、クエリアナライザでは正常に動作します。

クエリアナライザで実行する場合と同じ結果を、VB6で得られないでしょうか。
0593デフォルトの名無しさん2007/09/03(月) 17:50:39
>>592
GOはSQLコマンドじゃないからです。

ここ参照
ttp://technet.microsoft.com/ja-jp/library/ms188037.aspx
0594デフォルトの名無しさん2007/09/03(月) 18:33:25
>>593
GOを無視し(というか、//に置き換え)てやってみたら、希望通りの動作になった様です。
GOってのはあっても無くても動作に変わりは無いのですかね?
とりあえず、簡単に試したところ正常に動いているようなので、これでいってみたいと思います。
ありがとうございました。
0595デフォルトの名無しさん2007/09/04(火) 02:52:37
>>594
    /\___/ヽ   ヽ
   /    ::::::::::::::::\ つ
  . |  ,,-‐‐   ‐‐-、 .:::| わ
  |  、_(o)_,:  _(o)_, :::|ぁぁ
.   |    ::<      .::|あぁ
   \  /( [三] )ヽ ::/ああ
    `ー/-‐‐ヽ‐‐´  ぁあ
0596デフォルトの名無しさん2007/09/06(木) 23:34:19
VB6.0を最近使い始めたものなんですが
配列を2つ作って一方がもう片方を参照するには
どうすればいいのでしょうか?

0597デフォルトの名無しさん2007/09/07(金) 00:06:46
>>596
VB6の配列は値型です(関数のByRefで渡した場合の仮引数は参照ですが)

どうしても、という場合はクラスでラップするか、関数の仮引数としてByRefで渡してあげてください
05985962007/09/07(金) 12:37:04
ありがとうがざいます
試してみます
0599デフォルトの名無しさん2007/09/07(金) 15:26:15
>>587
氏ね
屑野郎
0600[Fn]+[名無しさん]2007/09/08(土) 11:46:27
年寄りの手習いで,VB6始めようとしています。
すみませんが,VISTAに普通にインストール&使用は可能でしょうか。
動作可能にはなっていますが,特にインストールの必要なファイルなどは
あるのでしょうか?
0601デフォルトの名無しさん2007/09/08(土) 12:03:05
>>600
インストーラーのインストール手順に従っておけばおkです
詳細については
ttp://www.microsoft.com/japan/msdn/vbasic/support/vistasupport.aspx
のHPを見てください
0602デフォルトの名無しさん2007/09/08(土) 12:36:46
VB.NET質問スレ
http://pc11.2ch.net/test/read.cgi/tech/1189038267/37-38

ENDは使っちゃいけないのでしょうか?
0603[Fn]+[名無しさん]2007/09/08(土) 20:29:57
>>601
 ありがとうございます。
 インストールしていますが,問題ありのメッセージが2度ほど出てきます。
無視して続行していますが,大丈夫しょうか。
0604デフォルトの名無しさん2007/09/10(月) 16:19:20
みなさんは、画面設計時に、オプションボタン(ラジオボタン)と
ドロップダウンリストのどっちを使うか悩む事ってないですか?

どういう判断基準で、使い分けしてますか?

0605デフォルトの名無しさん2007/09/10(月) 18:37:30
見たマンマじゃない?
考えるな感じ取れ、だよ。

【ドロップダウン】
 ○ 省スペース
 × 選択肢の「見通し」が悪い。

ラジオボタンはこのちょうど反対。
0606デフォルトの名無しさん2007/09/11(火) 23:32:20
上手く伝えることが出来るか不安なのですが・・・。

ファイルの送受信(メッセンジャー等に付いている様な)を行うプログラムを作成したいと
考えているのですが、VB6.0にそのような機能はついているのでしょうか?
また、上に挙げた様な機能がなくともそのようなプログラムを作成する事は可能なのでしょうか?


もし参考になりそうな本等がありましたら教えていただけると幸いです。
0607デフォルトの名無しさん2007/09/11(火) 23:36:18
> VB6.0にそのような機能はついているのでしょうか?

ついてない。


> そのようなプログラムを作成する事は可能なのでしょうか?

可能。


> もし参考になりそうな本等がありましたら教えていただけると幸いです。

「○日でできるVB6.0」とか「VB6.0入門」とか、そういう系統。
0608デフォルトの名無しさん2007/09/13(木) 13:50:31
VB6.0とSQLSERVERで開発
数量、単価、金額、消費税、原価率・・・などなどの四則演算を行う場合、
各々のデータ型をどう定義したら良いのでしょう。

VBでSingle/Double
SQLSERVERでfloat/decimal
ネットとかでよく見かけるのは、これらの浮動小数点型なんですが、
これって誤差がつきものですよね?
システム上同じ数字を出す全箇所について、必ず同じ計算ロジックを通すという
コーディング制約を設けて、それを遵守しないと、絶対どこかで誤差が出ますよね?

さらに、VBはDouble(倍精度)、SQLはfloat(単精度)などの定義をしている
例をことさらよく見かけますが、こんなのはアリなんでしょうか?

「金額が関わるところに浮動小数点を使うのはあり得ない」と断言しているサイトも
どこかで見ました。
必ず固定小数点型、VBはCurrency・SQLはmoneyだろう、スピードは落ちると言っても、
最近の機械ならそれこそ誤差の範囲だ・・・という感じの紹介で。

私も、数字に誤差の出ない固定小数点がいいんじゃないかなー、と思っています。
でも、現実はどちらかといえばそうじゃないことの方が多い・・・・
一般的には、どう考えるものなんでしょうか。
0609デフォルトの名無しさん2007/09/13(木) 14:10:23
エクセルで作れば?
06106082007/09/13(木) 14:21:19
間違えてました、すみません。
decimalは概数型じゃないですね。
SQLSERVERでの単精度はreal、倍制度はfloat。
VBはDoubleでSQLはfloatなのは、データ型としては同じだから、
そこは問題ないんですね。


>>609
エクセルのセルに値を渡して、シート関数で計算させて
結果を読むってことでしょうか?
0611デフォルトの名無しさん2007/09/13(木) 14:48:13
言っておくが、二進法のSingle/Doubleだって誤差の無い計算は可能だし、
Currency/Decimalだって何進法でも起こる誤差を避けることは不可能。

ただ、十進法で有限小数となる値の中には、
二進法へ変換すると無限小数になるので正確に表現できない、
つまり有限桁しか扱えないコンピュータでは、それだけで打切り誤差が発生するものがある。
だから十進法中心に考える人間には、一見すると誤差が付き物に思えるだけ。
もちろん、金融では致命的な弱点となるので、Single/Doubleは脱落。

また十進法の浮動小数点数 (VBのDecimal)はどうかというと、
下手に計算すれば情報落ちが問題になりやすいし、
VB固有の事情としてDecimal型の値はVariantに入れるしかないという
不便さもあって、駄目ではないが要注意。

そんなわけでCurrencyに落ち着く。もちろん整数だけなら整数型がよい。

0612デフォルトの名無しさん2007/09/13(木) 14:52:17
>>608
全部浮動小数点でOK
最終的に、小数点以下の金額にならないように
1円まで切り上げるでしょ?
その時に元の金額(整数)を使って金額の誤差がないか
1円の増減がないかを再計算するのさ〜
経理、給与計算プログラムの常識だよ〜
0613デフォルトの名無しさん2007/09/13(木) 14:56:32
そして余った1円を自分の口座へ振り込むようにすれば完璧。
0614デフォルトの名無しさん2007/09/13(木) 15:02:09
どこのスーパーマンのネタかと
0615デフォルトの名無しさん2007/09/13(木) 16:38:19
>>611
軽くぐぐってみました。

一般的な企業の販売仕入や財務、給与などのシステムでは、
まず無理数の計算などは行われないし、丸めだけしかるべき関数を作れば、
やっぱりVB:Currency SQL:moneyで十分対応できますよね?


>>612
> 元の金額(整数)
この整数って、どの段階で出てるものでしょう・・・?
また、これを使って金額の誤差・増減の有無を、・・・再計算?
すみません、よくわかりません・・・
0616デフォルトの名無しさん2007/09/15(土) 11:51:10
Endで終了させても、タスクマネージャーのプロセスに残ってしまう時があるので、
これを確実に終了させるにはどうしたらいいのですか?
0617デフォルトの名無しさん2007/09/16(日) 01:35:49
>>616
それは変な話だな・・・
自分自身はEndでたいてい残らずに消えるはずですが。
むしろ自分以外のリソースやプロセスが残る可能性がある。
あ、でも>>616はどのプロセスが残ってるのかまでは書いてないのか。
どうなんでしょう?
一般論としては、UnloadやTerminateイベントでリソースの後始末をして
Endを使わないように、ということです。
Endを使わないとそれこそ残る、というならそれは潜在的なバグだ。
0618看護婦 2007/09/16(日) 19:50:07
 今晩は。VB6 アクセス でデータベース作ってますが、起動したら
「問題が発生したためVBを終了〜」
「アプリエラー "0x04246c88"の命令が"0x1da1adad"のメモリを参照しました。メモリが"written"になることはできませんでした。」
とのこと。
 これって何がダメなんですか?
 どなたかお願いします。
0619デフォルトの名無しさん2007/09/16(日) 19:53:50
VBでの正規表現について恥ずかしながら教えてください。
リンクアドレスの<a href=〜>タグのアドレス部分は下記で取得できたのですが、
str=Pattern"<a href=""([^>]*(\.jpg|\.gif|\.png))"" target=""_blank"">(.*)</a>"

単純に、http://abc.defg.net/hijk/lmn.jpg
とかの単純なjpgファイルへのアドレス文字列の正規表現が思いつきません。
教えてください。
0620デフォルトの名無しさん2007/09/16(日) 22:48:31
俺なら、https?://.*\.jp(e?g|e)くらいにしておいて、
あとはURLかどうか調べるAPIがあったはずだからそれに任せる。
06216192007/09/16(日) 23:28:29
おお、ちょっと調べてみます。
0622デフォルトの名無しさん2007/09/17(月) 16:10:45
>>618
いや〜それだけの情報だと
"0x04246c88"の命令が"0x1da1adad"のメモリを参照するのが
ダメなんじゃないかなあ〜としか。
F9やF8でダメな行を特定してみましょう。
あとここはささくれだった人が多いので、「エスパーw」みたいな
書き込みは華麗にスルーしてください。みんなイライラしています。
0623看護婦 2007/09/17(月) 17:13:39
 今晩は。プログラムの一部を書き換えたら解決したようです。
 
 >>662 お騒がせしてすいませんでした。
0624デフォルトの名無しさん2007/09/22(土) 07:33:11
2007年の第3木曜日の日付を20070918という感じで抜き出したいんですが、
自分で書いてたのが、loopしまくりで自分でワケわからなくなってしまいました。

なにか簡単な方法がありますかね?
0625デフォルトの名無しさん2007/09/22(土) 09:16:29
>>624
> 2007年の第3木曜日
ちょっとおかしいよな.適当に月指定があるもんだとしたぞ.
だめでも,下の関数使える.
しかもついでに,2007/9/18は第3火曜日だ.

Public Function XthWeekDay( _
    ByVal Year As Long, _
    ByVal Month As Long, _
    ByVal x As Long, _
    Optional ByVal week_day As VbDayOfWeek = VbDayOfWeek.vbSunday) As Date
    
    XthWeekDay = DateSerial(Year, Month, 1)
    While Weekday(XthWeekDay) <> week_day: XthWeekDay = XthWeekDay + 1: Wend
    XthWeekDay = XthWeekDay + 7 * (x - 1)
    
End Function

で, format$(form1.XthWeekDay(2007,9,3,vbTuesday),"yyyymmdd") みたいに.
0626デフォルトの名無しさん2007/09/23(日) 16:48:16
処理を実行している旨を画面に表示させておきたいのですが、
VBAでいうとApplication.Screenupdateみたいなのってありますでしょうか?

sub main()

  Label1.caption = "処理を実行中です"

  'この時点でフォームに実行中の表示をさせたいんです

call データベースに接続

  Label1.caption = "処理が完了しました"

End sub
0627デフォルトの名無しさん2007/09/23(日) 17:13:44
reflesh メソドとかのこと?
VBAよくしらんけど
06286262007/09/23(日) 17:23:41
>>627
うわ、出来ました。ずっと悩んでいたのでとても助かります。
ありがとうございました。
0629デフォルトの名無しさん2007/09/25(火) 18:32:59
まだPGと言うのも恥ずかしい新人です。
VB6.0で作られてるのをAccess2000のVBAで作ってみてるんですが互換性はあるんでしょうか。
wiki見る限りVB7から互換性はないとのことだし
できることならそのまま流用、自己解読のためにも互換性の有無を教えていただけるとありがたいです。
0630デフォルトの名無しさん2007/09/25(火) 18:34:40
無
0631デフォルトの名無しさん2007/09/25(火) 23:26:59
>629
VBの言語仕様自体は共通。
ただしフォーム等のオブジェクト構造はほぼ別物。
ほとんどの場合、コピペするだけじゃ動かないと思っておいたほうが良い。
06326292007/09/26(水) 17:54:23
>>631
言語が一緒、ということは片方がわかればもう片方もわかる、というわけでもないか
もう少しソースとにらめっこしてきます。ありがとうございます。
0633デフォルトの名無しさん2007/09/27(木) 13:16:16
こちらでいいのかわかりませんが質問させてもらいます。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Button1.Text() = "動作中"
Timer1.Interval = ComboBox1.Text
Timer1.Enabled = True
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
End
End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Button1.Text() = "時間です"
Beep()
Timer1.Enabled = False
End Sub
End Class

という、タイマーのプログラムを作ったのですが、
タイマーの動作中はButton1をクリックできないようにしたいのですが、
どのようにプログラムを変えればよいのでしょうか?
お教えください。よろしくおねがいします。
0634デフォルトの名無しさん2007/09/27(木) 14:16:30
>>633
Button1_Clickの時に、
Button1.Enabled = False
で良いのでは?

あと、Timer1_Tickで
Button1.Enabled = true
で戻しとく
0635デフォルトの名無しさん2007/09/27(木) 14:53:20
>>634
なるほど、有り難うございます。
ってことは、

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Button1.Text() = "動作中"
Timer1.Interval = ComboBox1.Text
Button1.Enabled = False
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
End
End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Button1.Text() = "時間です"
Button1.Enabled = true
Beep()
Timer1.Enabled = False
End Sub
End Class

で、よいのでしょうか・・?
初心者なものですみません・・・。
0636デフォルトの名無しさん2007/09/27(木) 15:07:45
>>635
それで動くかわかりません、環境が無いもので。。
しかし、コードを記述する場所はそれでいいんじゃないでしょうか
とりあえず、Button1.Enabled = False は使用不可にする意味ですので、
実現したい場所に記述して下さい。
ちなみに、.NETの質問はこちらに
ttp://pc11.2ch.net/test/read.cgi/tech/1189038267/l50
0637デフォルトの名無しさん2007/09/27(木) 15:16:32
>>636
わかりました。ありがとうございました。
スレ違いでしたか・・。すみませんでした。
0638デフォルトの名無しさん2007/09/28(金) 18:00:27
VCはなんとなく判るけどVBはまったく判ってないのですが質問です。
ttp://hpcgi1.nifty.com/MADIA/VBBBS/wwwlng.cgi?print+200512/05120059.txt
でVB6でpdfのページ数を求めるソースがあるのですが、

5 AcroPDF:AcroPDF1 を Form1 に貼り付ける
この意味が判りません。何をどうすればよいのでしょうか?
ここ以前まではできたと思います
(生成したクラスの名前をClass1からtagWndに変更するなどを含め)。

Adobe Reader 7.0はインストール済み、WindowsXPです。
よろしくおねがいします。
06396382007/09/28(金) 18:15:29
とりあえず今の状態で
実行→完全コンパイル後に開始
を行うと、変数「AcroPDF1」がハイライトされ、「コンパイルエラー:変数が定義されていません」
と表示されます
0640デフォルトの名無しさん2007/09/28(金) 19:28:58
VCで作れば?
0641デフォルトの名無しさん2007/09/28(金) 20:46:44
VC3000のど飴〜
0642デフォルトの名無しさん2007/09/28(金) 23:20:53
>>638
これ書いたの俺だけど,
とりあえず,
> 4 [プロジェクト]-[コンポーネント]
>   -[Adobe Acrobat 7.0 Browser Control Type Library 1.0]
>   にチェックを入れる
はちゃんとチェック入れた?


チェック入れているなら,VBのツールボックス(ボタンとかテキストボックスとかピクチャボックスがあるアレ)
にAcroPDFのツールが選択可能になるから,ソレをForm1のデザイナに貼り付ければおk


ってか動くかどうか確かめてみた
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4989.zip
動くね.(要AcrobatPDF 7)
0643デフォルトの名無しさん2007/09/29(土) 14:16:43
>>642
ありがとうございます。書いてあるとおりチェックは入れております。
AcroPDFのツールをForm1のフォームに貼り付けてみました。
ですが、メニューを押してもページ数が表示されるとかそういった事は起こりません。

まず「PDFファイルパスを入力してください」というウィンドウが出るので入力してOKを押します。
するとForm1というタイトルのあるウィンドウが出てきますが、この時「AcroPDFのツール」を
貼り付けた部分は透明になり、その下にある画面が表示されます。そしてメニュー(pGetPageCount)を押すと
ディスクアクセスは起こるようですが何の変化も起こりません。うpして頂いたzipを解凍してやっても同様です。

「(フリーの)Adobe Reader 7.0が必要」なのではなくて「(製品の)Adobe Acrobat 7」などが必要なのでしょうか?

まあそういった事で駄目なら他の方法を探しますorz
0644デフォルトの名無しさん2007/09/29(土) 20:02:34
API使って現在立ち上がってる他のウィンドウを一番手前に
表示するプログラム作らないといけないんですが

APIの使い方が分かりません
0645デフォルトの名無しさん2007/09/30(日) 00:21:42
ググレカス
0646デフォルトの名無しさん2007/09/30(日) 02:41:22
>>644
APIは初心者向けの内容じゃないから他スレで聞いた方がいいですハゲ。

自分自身のプロセス(exe)内だったらForm.ZOrderとかがあります。

他プロセスだったら、使うのはFindWindowとかSetForeGroundWindowだと思います。
あとはググレカス。

あと、最近のWindowsは他プロセスのウィンドウを手前にしようとかしても
点滅するだけで手前に来ないようになってます。よろしく。
0647デフォルトの名無しさん2007/09/30(日) 07:00:59
>>643
遅くなった

うーん,確実に俺の環境とは違うなぁ
とりあえず,動作検証用にSS貼り付けるから,こちらで確認できる正常動作を見てくれ:
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4993.zip


> 「(フリーの)Adobe Reader 7.0が必要」なのではなくて「(製品の)Adobe Acrobat 7」などが必要なのでしょうか? 
そんなことはないぉ
Adobe Reader 7.0(バージョン7.0.7)で確認しているぉ(^ω^

あと,Adobe PDF ReaderでActiveXコントロールとして表示されない,をググると…
ttp://www.google.co.jp/search?complete=1&hl=ja&q=Adobe+PDF+Reader+ActiveX%E3%80%80%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%81%AA%E3%81%84&lr=&aq=null

あとはよーわからん
0648デフォルトの名無しさん2007/09/30(日) 13:04:22
気色の悪い奴だなあ。。。
0649デフォルトの名無しさん2007/10/01(月) 08:14:46
>>647
何度もありがとうございます。原因を探してみます。
矢張り当方が根本的な部分で理解していない可能性もある訳ですしねorz
0650デフォルトの名無しさん2007/10/03(水) 10:10:43
VB6のSP6です。

あのう、IEのツール->インターネットオプションで出てくるような、タブコントロールの
乗ったダイアログで、かつそこでの設定変更をリアルタイム(というかイ
ンタラクティブ)で、元のウィンドウに反映されるようなのをダイアログ
を作りたいのですが、
(つまり、適用を押さなくてもラジオボタンとかを
変えただけで変更が反映されるような)

これはやはり
−フォームで自作する
−ラジオボタンの変更イベントをキャッチしてイベントドリブンで自分で作る
という感じで皆さんやっておられるのでしょうか?

なんかいいアクティブXとか標準のコンポーネントとかありますでしょうか。
なにとぞよろしこ。
0651デフォルトの名無しさん2007/10/03(水) 10:16:41
>>650
逆にあったら不便だろ
言わなくても分かってると思うから今後誰か見たときのためにかくけど,自分中心で考えたら世の中まわりゃせんよ.

VB6はそのへんの処理の抽象化があまり出来ない言語だからゴリゴリ作るしかほかない.
何かデザパタ参照するとちょっとは楽できるかもしれんが.
06526502007/10/03(水) 11:12:21
>>651
おせわになりましこ。結構ググりまくって自分の理解ぎりぎりのところで
文章書いているので変な日本語スンマソン。

>デザパタ

ググッテみたらアプリケーションウィザードでいろいろ作ってみるというのを
ハケーンしてワクテカしながらいろいろ作ってみたけど肝心のツール->オプション
が空で、実行したら「てめえでコードを記述すれ」と言われてガカーリシターヨ。
なんか、近いのご存じでっか?
■ このスレッドは過去ログ倉庫に格納されています