トップページ⇒tech
995コメント368KB

◆VB初心者質問スレ Part5

■ このスレッドは過去ログ倉庫に格納されています
0001引越しましたNGNG
前スレはこちら。
  Part1 = http://piza.2ch.net/test/read.cgi?bbs=tech&key=968328471&ls=50
  Part2 = http://piza2.2ch.net/test/read.cgi?bbs=tech&key=990793224&ls=50
  Part3 = http://pc.2ch.net/test/read.cgi/tech/1000523122/
  Part4 = http://pc.2ch.net/test/read.cgi/tech/1006922992/

Win32 API関連スレ
  http://pc.2ch.net/test/read.cgi/tech/1006783012/l50

心得
壱.質問する前に過去ログにも目を通してみる。
弐.質問する前に MSDN などで調てみる。
参.VBScript もこのスレでOK。
四.インストーラーなどの質問もOK。
0153144NGNG
>>151
ありがとうございます。
Accessに接続してます。いろいろやってみたいっすね。

>>152
やってみたら出来ました!
ちなみに、これってクエリーも釣れてしまうんですね。
うーむ。よく調べてみます。ありがとう。
0154困った名無しさんNGNG
教えてくんでスマソ。

仕事先での案件で、VB使うことになってインストールしたら、
F1キーで「ヘルプを表示できません」ってメッセージが出るんです。
MSDNは単独(プログラムメニューから)見ることができる。

今まで何も考えずにインストールしてて、ヘルプが表示されないなんて
事無かったよ。

因みに、w2k Server環境でVB6のエンタープライズ。
MSDNはカスタムでフルインストール。
自分の環境(w2k pro)で同じ構成で問題ないのになぁ。

突っ込まれる前に、googleと過去ログ(初心者質問スレ)は見てみました。
他の過去ログは何故か404で見ることができない。

あとMSDNも目を通した(w
0155141=145=149NGNG
>>150
ありがとうございます。無事表示できました。
しかし、ヘルプが表示されないのですが・・・ヘルプは存在しないということでしょうか?
だとしたらどうやって各メンバの意味をみなさん知っているのでしょう?
(まぁ、shdocvw.dllの1部は、説明がオブジェクトブラウザに書いてあるようですが・・・)
0156困った名無しさんNGNG
書き忘れ。

んで対応策とか細かくFAQとか有る場所があったら
教えてください。

解決策そのものズバリは特に歓迎(w
0157デフォルトの名無しさんNGNG
>>155
http://msdn.microsoft.com/workshop/graphics/IE4Arch.gif
関係ないけどアーキテクチャ

簡単なリファレンス
http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/webbrowser/reference/objects/internetexplorer.asp
0158155NGNG
>>157
いやいやありがとうございます。なかなか参考になります。がんばってみます。
0159144=153NGNG
>>152
なんだかデータベースに書き込み行おうとすると、
ロックされて書き込めないのですが、カタログ使うと、こうなる仕様ですか?
0160デフォルトの名無しさんNGNG
VBのディストリビューションウィザードでSetupを作成したんですが、
インストール対象がWindowsXPの場合、DLLやOCXが正常にインスト
できないようです。直接System32フォルダに放り込んでもダメです。
なにかいい方法があったら教えてください m(_ _)m
0161デフォルトの名無しさんNGNG
COM系なら、regsvr32(または同等機能)を実行してないとか。
0162お願いしますNGNG
REDIM を使って配列エリアを拡張した場合、使い終わったら
ERASE を使って解放してあげないと、いわゆるメモリリーク
となってしまうのでしょうか?
0163デフォルトの名無しさんNGNG
>>162
ならない
0164お願いしますNGNG
>> 163
ありがとうございます。
C言語の malloc 見たいに、解放してあげないといけないのかと
思ってました。
0165演算ベンチNGNG
ここに VB4.0 と VC6.0 の演算速度比較が載ってますが、
ttp://www.wombat.or.jp/tomoyashuttle/shtml/colum/vbspeed1.htm

バージョンが違うし、整数型だけだし、PCも旧式。>Pentium133,32MB

VB6.0のネイティブ・コンパイルで、実数型だと、どうなりますか?
0166デフォルトの名無しさんNGNG
VBのsendkeyで、windowskeyを押すことはできないのでしょうか?
ttp://www.asahi-net.or.jp/~yy6m-wd/kuma/tip/vb.htm#sendkey
などを見ても、winkeyは載ってない。。。
0167デフォルトの名無しさんNGNG
プログラムが横にながくなって見にくいです。
途中で改行させることってできますか?
初歩的な質問ですんません。
0168デフォルトの名無しさんNGNG
>166
たしかwinkeyだけはダメだったと思う。

>167
半角スペースと半角アンダーバーで改行できる。

0169167NGNG
>168
どもありがとうございます。
0170168NGNG
>166
Ctrl+EscでWindowsKeyと同じメニューが出せるけど、
こんなもん出してどうするの?
目的はホットキー?

0171デフォルトの名無しさんNGNG
>>167
文末を _にすれば次の行は前の行の続きとされる。
 if (ながーい条件とか) and _
   (ながーい条件とか) then

アンダーバーの前に必ずスペース空けること。
何行にもできるけど、限界はある。
っていうかヘルプ見てみ。サンプルとかで一杯でてくるから。
0172166NGNG
>>170
そうです。ホットキーです。
Powertoys for Windows XP を入れたら、
バーチャルデスクトップ機能としてWin+1〜4でデスクトップを入れ替えられるようになったので、
OS起動後にVBSでその辺の処理を自動処理したいと思って。
「Win+■」=「Ctrl+Esc+■」だったららくなんですけどね。。。
0173デフォルトの名無しさんNGNG
ExcelからVBA使って、IEを動かしてるのですが、
VBAを使ってIEを動かしてウェブサーバのBASIC認証を通ることは可能でしょうか?
0174167NGNG
もう一つ質問したいです。
text1.textに2つの数字を入力して、label1.captionにtext1.textの数字の左側の数字を出したいんですが、やりかたがわからないんです。
教えていただけないでしょうか?
0175デフォルトの名無しさんNGNG
>>174
数字二文字(="01")ならleft()、mid()
任意数値を区切り文字で入力ならsplit()を
HELPで当たるが良いと思われ。
0176デフォルトの名無しさんNGNG
>>160
ターゲットと同じOS、環境でインストール環境を作っては?
VBは普通そうすると思う。
0177デフォルトの名無しさんNGNG
1行に1つ数値が書き込まれたテキストファイルがあり、これをソートしたい。
数値は小数部分があるものもあり、また桁もそろっていません。(10.5とか-9849848.1514142など)
誤ったデータはないもとします。(ABCとか、121あ12など)
このテキストファイルは約1GB程あるとします。

もし、このデータをソーティングするとしたらどのようにしますか
0178デフォルトの名無しさんNGNG
>>177
少しずつ読み込んで、シェルソートとかしたら?
途中経過はテンポラリファイルに書き出すとかして。
 
前のスレあたりにも、同じような内容の質問があったような・・・
0179デフォルトの名無しさんNGNG
前スレを見てみましたが、結論は出てないようですね
0180デフォルトの名無しさんNGNG
>>179
アレはファイルにいったん書き出すのがヤダとかいうから
解決してないのでは?
0181177NGNG
少しずつ読み込んでソートしていったら、読み込んだ分がソートされてしまうのでは
ないのでしょうか?
結合するときにまたソーとするのですか?
0182デフォルトの名無しさんNGNG
>>181
シェル・ソートってそういうときのために
ある方法だったような・・・記憶が曖昧でスマソ

確か部分数列ごとにソートして収束させていく
というアルゴリズムだと思います。
0183182NGNG
やっぱ無理みたい
0184182NGNG
遅くても良いならランダムアクセスファイルにして、
レコード番号を配列代わりに使えばできなくはないけど
0185デフォルトの名無しさんNGNG
B-treeとして書き出していくとかどうよ?
一種の簡易DBになっちまうが。
0186160NGNG
>>176
レスありがとうございます! XPをサブマシンに導入して、
試してみます。ありがとうございました。
0187デフォルトの名無しさんNGNG
>>177
ヲレならDBにぶち込む。

貴方の問題は1GBのデータをソートする事なのか、
そのソートしたデータを使って何かの処理を行う事なのか?
後者なら先ずは動く事、早くするのはそれからの事。
0188デフォルトの名無しさんNGNG
>>181
マージソートの要領で結合しながらソートすればいいと思います。
0189まちゅ ◆VcvMACHU NGNG
たぶん、188さんと同じようなことかもしれないけど、
1GBのファイルを分割してバブルソートしてはどうかな?
たとえば10MBくらいのファイルを100個作って番号を振っておく。
まずファイル1と2を読み込んでソート。
20MBくらいならオンメモリでできるでしょう。
ソート後にファイル1と2に半分づつ書き戻す。
次は、ファイル2と3を読み込んでソート・・・てな具合にやれば出来そうな気が。
0190177NGNG
色々な考え方があるものですね。
アルゴリズムについてあまり知識がないので勉強になります。

私は>>184さんと>>185さんのやり方は、どういうものなのか
理解できませんでした。すいません。。。

>>187さんの方法はDBに一旦全部格納して、SQL文でソートさせて抽出しそれを
ファイルにまた書き出すということでしょうか。それが最も簡単だと思います。
ただもしも、DBに入れられる限界を超えてしまったとしたら、できなくなってしまいます。

>>188さんと>>189さんの方法ですと、少しずつに分けてソートすることが
私にもできそうな気がしてきました。まだ考え方がうまくまとまらないのですが
もっと勉強しようと思います。
0191デフォルトの名無しさんNGNG
単純に分割するのではなく、数値の範囲で分割すれば
再ソートする必要はなくなる。
スワップしまくりのDBより速く結果が出る。
0192デフォルトの名無しさんNGNG
>>165
>ここに VB4.0 と VC6.0 の演算速度比較が載ってますが、
>ttp://www.wombat.or.jp/tomoyashuttle/shtml/colum/vbspeed1.htm
>
>バージョンが違うし、整数型だけだし、PCも旧式。>Pentium133,32MB

VB4はP-CODEコンパイルしかないしね。

後、根本的に計測の仕方に違いすぎですね。
・OSがWin95
→計測タイミングでかなり揺らぎがでる。何度か計測した上での平均なのかどうか不明。
・VB側のa,b,AnsがInteger
→VCでintなら、VBではLong。
・VB側の時間計測が精度の低いTimer
→VC側をGetTickCountでやるならVBも同じに。timeGetTimeの方がいいけど。
・終了時間の取得がVCではまず変数に入れてから。
→VB側もt1を宣言して、一旦変数に入れてからに。後、t0、t1共に宣言して。

>VB6.0のネイティブ・コンパイルで、実数型だと、どうなりますか?
両方持ってて暇な人実験きぼんぬ。
0193デフォルトの名無しさんNGNG
でかいファイルのソート方法

(1)入力ファイルをワークファイル0にコピー
 (入力ファイルを残さないなら不要)
(2)ワークファイル1とワークファイル2を書き込みでオープン。
 (中身は消す)ワーク0は読み込みでオープン。
(3)X=1とする。
(4)ワーク0から一件読み込む
(5)前回のデータより小さいならX=X+1(X=3ならX=1)
(6)読み込んだデータをワークXに出力
(7)ワーク0の最後まで(4)から繰り返す
(8)ワーク2の件数が0なら終了。
(9)全てのワークをクローズして
  ワーク1ワーク2を読み込みでオープンしなおす。
  ワーク0は書き込みでオープン。
(10)ワーク1とワーク2から一件づつよみこむ。
(11)読み込んだデータで小さい方をワーク0に出力
  書き込んだ方は新しいデータを読み込む。
  もしワークの最後まで来たならデータを最大値(99999999とか)にしておく。
(12)ワーク0以外の全てのワークが空になるまで(11)から繰り返す。
(13)全てのワークをクローズして(2)から繰り返す。

これがファイルソートの基本中の基本のマージソート(2ファイル)。
ワークを増やせば効率がよくなる。
HDDに元データと同じくらいの余裕(これがなきゃ出力できんわな)と
数件のレコードを保存するメモリがあれば
どんな量でもソートできる。

ちなみにこれは改良の余地がかなりある。
(2)〜(7)までを分配フェーズ、(9)〜(12)を統合フェーズというが
はじめに大小関係が成り立っているデータの塊を
フィボナッチ数でワークに分配しておき
分配と統合を同時に行えるようにするポリフェーズソートとか。
興味があるならアルゴリズムの書籍を読め(古いやつな)。

ちなみにいまどきこんなソート誰もやらん。
DBにつっこんで終わり。
0194デフォルトの名無しさんNGNG
ラベルに縦方向センタリングスタイル(SS_CENTERIMAGE)をつけたいのですが、
hwndプロパティが無いので、SetWindowLongが使えません。
コントロールサイズそのままで、ラベルに縦方向センタリングをつける方法って
何かありませんか?

0195デフォルトの名無しさんNGNG
コレクションって内部でどういう実装になってるの?
ハッシュ? ツリー?

For Each 〜 Next でコレクションの中身を取り出すと、
ちゃんと入れた時と同じ順番で出てくるのが不思議なんだけど…。

ひょっとして、リスト構造?
0196PentiumIII 866MHzNGNG
VisaulBasic6Ent.
-------------------------
Option Explicit

Public Declare Function GetTickCount Lib "kernel32" () As Long

Sub Main()

Dim i As Long
Dim a As Integer, b As Integer
Dim Ans As Integer
Dim t0 As Long

  a = 16: b = 8
  t0 = GetTickCount
  For i = 0 To 10000000
    Ans = a + b
    Ans = a - b
    Ans = a * b
    Ans = a \ b
  Next i
  MsgBox ("Time: " & CStr(GetTickCount - t0))

End Sub
-------------------------
平均 220ms


=============================


Delphi6 Personal
-------------------------
program SpdDel;
uses
Windows;

{$APPTYPE CONSOLE}
var
I,A,B,Ans,T0,T1:Integer;
begin
  A:=16; B:=8;
  T0 := GetTickCount;
  for I:=0 to 100000000 do
  begin
    Ans := a + b;
    Ans := a - b;
    Ans := a * b;
    Ans := a div b;
  end;
  T1 := GetTickCount;
  write('Time:');
  write(T1-T0);
end.
-------------------------
平均 234ms
0197デフォルトの名無しさんNGNG
キーワード:"ドキュン"
文章(例):
ドキュンばっかり珍走団。ケモジャケモジャ。マリオと
オマリー。ドキュンちゃんと食パンマン。VBVBVBVBVBVB

上の文章からキーワードを含む文である、"ドキュンばっかり珍走団。",
"ドキュンちゃんと食パンマン。"を切り取りたいのですが、どうしたら
いいのでしょうか?
キーワードを含む文の長さは不定で複数あります。
0198デフォルトの名無しさんNGNG
へー、デルファイって、API宣言せずに使えちゃうんだ。
便利そう。 := はいただけないが。
0199デフォルトの名無しさんNGNG
正規表現で、
ドキュン[^。]*。
とか。
0200デフォルトの名無しさんNGNG
ユーザーがテキストボックスに数字を入れるようにしました。
それで2バイト文字は入力できないようにしたいんですが、どのようにやるんでしょうか?
マウス右クリック→貼り付け、[CTRL+V]の貼り付けもやれないようにしたいんですが、できるでしょうか?
0201でくNGNG
プログラムやる上でアルゴリズムは勉強した方がいいですか?
0202デフォルトの名無しさんNGNG
>200
2byte数字は1byte数字に変換するようにすると良いですよ。
2byte文字を弾くのは、1byte文字を弾くのと同じようにやればいいかと。
0203デフォルトの名無しさんNGNG
>>201

必要なときに必要なアルゴリズムを勉強すればいい。
何を作るかによるが、必要になることは少ない。
時間を持て余しているならUMLの勉強をお勧めする。
0204パンNGNG
スマートと言うか、皆さんのだったらどういった方法を取られるか聞かせて頂けますか?

今からやろうとしてるのが、帳票や伝票の枠内に数値を印字していきたいのですが、
キャラクター?を設定してズレを防ぎながら作っていくのは気が遠くなりそうなので、

フォーム上にTEXTを並べて微調整していこうとしたら、
A4の用紙だとフォームでは狭すぎて印刷が出来ませんでした。

エクセルやワードをかいして印字する方法や、
アクセスにはフォームエディタみたいなウィザードが用意してあると聞いたこともあります。

行間など環境が変わっても左右されにくいのは、どういった方法でしょうか。

地道な作業なので、確実な手段でして行きたいので、みなさんでしたらどういった手段をとられますか?
宜しくお願いします。
-------------------
OS WinMe
VB6.0 Pro
MS Office
スキル 夜鍋の1年間てーど
-------------------

0205197NGNG
>>199さん、レスありがとうございました。
早速、参考書片手にやっています。
試しに、Split関数でキーワードを含む文を***で埋めようとしてみたんですが、
"ドキュン[^。]*。"だと、"***ばっかり珍走団。"という風に
文全体で無く、キーワード部分しか埋めてくれません。
Splitじゃなくて他の関数を使わないと無理ですか?
0206コピペ厨房NGNG
>>204
> 今からやろうとしてるのが、帳票や伝票の枠内に数値を印字していきたいのですが、
> キャラクター?を設定してズレを防ぎながら作っていくのは気が遠くなりそうなので、

市販品を使ってよければ、ActiveReportとか使うと簡単にできますよ。
Excelを利用可能であれば、それを使うというのもあります。

0207デフォルトの名無しさんNGNG
>197
strIn = 例文
strOut = ""
strWork = Split(strIn, "。")
For Each strLine in strWork
 If InStr(strLine, "ドキュン") Then strOut = strOut & strLine & "。"
Next

199の正規表現を使うなら、コンポーネントを追加しないと。
0208デフォルトの名無しさんNGNG
>204
テキストを並べるのは、DOS時代のやり方。
VBなら印字位置を0.01ミリ単位で指定できるじゃん。
0209ごるぁNGNG
204はマルチ
0210デフォルトの名無しさんNGNG
はわわー
>>204
帳票、伝票等をお手軽に済ませたいなら
Excel、Accessを活用する事をお勧め。
0211VB超初心者厨房NGNG
ユーザーフォーム、ワークシート、モジュールなどを活用した
プログラムを作成したいのですが、超初心者でもできそうな
ものはないですか?
0212165NGNG
>192
レスどうも。
よく考えたら、Cの場合、ループ内で値が変化しないなら、
コンパイル時に定数を入れてしまう可能性とかもありますね。

>196
Delphi6も。ありがとうございます。

#VCのベンチもお願いします。>持ってる人
0213デフォルトの名無しさんNGNG
イントラネット嬢での話なのですが、winsockコントロール、あるいはそれに
相当するAPIを用いるC/Sのプログラムを作成し、サーバプログラムをNTserverに
配置、作成したクライアントプログラムを用いてサーバプログラムと通信する場合、
NT側のクライントライセンスの追加購入の必要はあるのでしょうか?
ちなみにクライアント側へは、ファイル共有等のネットワーククライアント関連
のインストールはしていません。

0214デフォルトの名無しさんNGNG
>196
Delphi最適化してると使われてないAnsがらみのコード削除しちゃうよ。
定数の代入すらやらないはず。

バブルソートでもやってみたら>ベンチマーク
0215デフォルトの名無しさんNGNG
>>213
>イントラネット嬢
ちと萌えるな
0216173NGNG
以下は、>>173の再掲なのですが
>ExcelからVBA使って、IEを動かしてるのですが、
>VBAを使ってIEを動かしてウェブサーバのBASIC認証を通ることは可能でしょうか?
回答がないところを見ると、便利なやり方はないけど、
perlでやるみたいに1つ1つサーバにhttpで話かければいけるのでしょうか?
#VBやりはじめなのではずしてる可能性大?
0217デフォルトの名無しさんNGNG
>216
Userプロパティ使えばいけると思うけど、VBAにはないの?

もしなければ、http://ユーザ名:パスワード@www.hoge.co.jp/
とかは通らない?
0218デフォルトの名無しさんNGNG
>214
Delphiはそこまで最適化?
そう言えば、昔のCは、使われてない変数に警告出してたな。
0219213NGNG
>>215
あはは…本当ですね。
気付かなんだ。会社で隠語で使えそう。
「オッパイ出してるイントラネット嬢」とか
「超難解イントラネット嬢の隠しバイト」とか。

関係ない話ですいません…質問は至ってマジメというか
業者にアホみたいなライセンス数見積もりで出されたので
ちょっと?って感じなんですよ。ご回答お待ちしております。
0220デフォルトの名無しさんNGNG
>>218
Delphiは知らんけど、弟分のBCBでもそんな感じに最適化される。
デバッグする時にそういう無意味な変数にbreak point張ると
何事も無かったかのように素通りしてくれるよ。
板違いネタスマソ。
0221デフォルトの名無しさんNGNG
>>219
そんなのMSに直接問い合わせれば?
ライセンス料って結構いいかげんというか
運用形態に拠って変わってこないかい?

NT Serverの事は良くしらんけど、
Oracleとかは馬鹿みたいな金額取られるよ>追加ライセンス
0222デフォルトの名無しさんNGNG
>>219
仕事なら221の言う通りMSに聞いて根拠にするのが一番だけど、
ソケット使うだけでライセンス発生するなら
IISでサイト開いてるところは万単位のライセンスが必要になると思うぞ(藁

そのC/Sシステムが何をやっているかによって変わってくる。
0223196NGNG
>214
適当にやってみたけど
-------------------------
Private Declare Function GetTickCount Lib "kernel32" () As Long

Private Const SAMPLE = 1000

Private Sub Command1_Click()
  Dim I As Long
  Dim J As Long
  Dim sTmp As String
  Dim lTime As Long
  
  Dim A(SAMPLE)
  
  For I = 0 To SAMPLE
    A(I) = List1.List(I)
  Next I
  
  lTime = GetTickCount
  For I = 0 To SAMPLE - 1
    For J = SAMPLE To I + 1 Step -1
      If A(J) < A(J - 1) Then
        sTmp = A(J)
        A(J) = A(J - 1)
        A(J - 1) = sTmp
      End If
  Next J, I
  Caption = CStr(SAMPLE) & "Samples Time:" & CStr(GetTickCount - lTime) & "msec"
  
  List2.Clear
  For I = 0 To SAMPLE
    List2.AddItem A(I)
  Next I
  
End Sub

Private Sub Form_Load()
  Dim I As Long
  For I = 0 To SAMPLE
    List1.AddItem Format$(Rnd, "0.000000")
  Next I
End Sub
------------------------------------------------
こんなコードで
VBは330msec, Delは100msec位だった。
0224デフォルトの名無しさんNGNG
>>223
Delのコードは?

>Dim A(SAMPLE)
Variant型かい!Singleにしましょう。速さ全然違うから。

>Caption = CStr(SAMPLE) & "Samples Time:" & CStr(GetTickCount - lTime) & "msec"
終了時間もまず一旦変数に入れてから後処理してね。
022550のVB爺NGNG
VB6(SP5)インストールしたら、今まで何ら問題なかったExcel VBA UserForm
上のDataGridが座標が(0,0)で表示されるようになった。UserFormのInitialize
でDataGrid.Visible=Falseにしておくと、この症状が出るようなんだけど、何か解決
方法はないだろうか。
0226でくNGNG
VBプログラマーになる上で、何が出来たら一人前といえますか?
プロパティーや関数、メソッドなどは全て覚えなければいけませんか?
0227197NGNG
>>207さん
アドバイスのお陰で出来ました!
ありがとうございました。
0228196NGNG
>>223
ソースとバイナリをここにUPから適当に遊んでくれぃ。

http://r1.ugfree.to/~angriff/596.lzh

しかし、Delのexeはでかいよぉ(w
0229VBerNGNG
ウィンドウに対してAlt+PrintScreenを押すとイメージがクリップボードに入りますが、
これをVBから他ウィンドウへ対して実行したい時は、
どのメッセージを送ればよろしいでしょうか?

Spyを使って調べながら・・・・

ret = PostMessage(hWnd, WM_SYSKEYDOWN, &H12, &H60310001)
ret = PostMessage(hWnd, WM_SYSKEYUP, &H2C, &HE0540001)
ret = PostMessage(hWnd, WM_KEYUP, &H12, &HC0380001)

を送ってみましたが、上手くクリップボードへ入ってくれませんでした・・・・。
0230デフォルトの名無しさんNGNG
>>229
keybd_eventでどうぞ。
0231デフォルトの名無しさんNGNG
この様な回転の為のサブプロシージャを書いた後、
Private Sub rotateZ(p() As point3D, s As Integer, e As Integer, _
rz As Single)
以下・・・。

その後Callステートメントで呼び出す時、どう書けばいいんですか?
Call rotateZ・・・この後カッコを付けて、p() As・・・と全部書けばいいんですか?
0232あじゃぱNGNG
VBのよい参考書があれば教えてください.
0233デフォルトの名無しさんNGNG
MSDN>232
0234デフォルトの名無しさんNGNG
>>233
基本ではあるが良いとはお世辞にも以下略。
0235デフォルトの名無しさんNGNG
>>226
全部覚える必要はないよ。使わないものも多いから。
でも、AccessやExcelとの連携やSQL操作の仕事が一番多いかな。

>>231
いちおう対応する変数は全部必要。型宣言は不要だけど。
0236デフォルトの名無しさんNGNG
>>231
ネタ…?

Dim buff_p() As point3D
Dim s, e, rz As Integer

<初期化、計算処理>

Call rotateZ(buff_p, s, e, rz)
0237デフォルトの名無しさんNGNG
>>236
えーっと。サブプロシージャを見つけて、
使おうとしたのですが、どうすればよいのか分かんなかったのです。
説明するのに頭の部分だけで良かったのかどうか分からないのですが、
やってみます。ありがとうございます。
0238デフォルトの名無しさんNGNG
>>236
ネタ…?
それじゃ、s と eがバリアントだけど。
0239デフォルトの名無しさんNGNG
>>236
rzはSingleだし。

それに、呼び出し側で同じ変数名使うかな。
面倒くさい時は使うか…。

0240デフォルトの名無しさんNGNG
>>237
人に聞く前にまずやってみて、ばんばんエラーを出すほうが
覚えていくもんだよ。
0241デフォルトの名無しさんNGNG
>>226
>VBプログラマーになる上で、何が出来たら一人前といえますか?

自分で考えること。
自分で調べること。
自分で実験すること。

>プロパティーや関数、メソッドなどは全て覚えなければいけませんか?
そんなの全部覚えてるやつはおらん。
(長いことやってれば、どのコントロールにどんな感じのプロパティやメソッドが
あるのか知ってるし、似たようなコントロールなら予測もできるけど)

・はじめてのコントロールを使うときは、まずヘルプでそのコントロールの
プロパティ、メソッド、イベントに一通り目を通す。
・使ったことのない関数を使うときも、ヘルプで使い方を調べる。
さらに、その関数を使った小さな実験プログラムを作って自分の目で
動作確認をする。

VBに限らずプログラミングの基本中の基本。
0242デフォルトの名無しさんNGNG
フォームのBoaderStyleを「可変」に設定しておいて、フォームを小さく
していくと、あるところでListBoxなどが「プロシージャの呼び出し、また
は引数が不正です」なるエラーを出てしまいます。タイトルバーしか表示
されないというところまでフォームを小さくするためには、どうしたらいい
のでしょうか。
0243デフォルトの名無しさんNGNG
>242
そんなこと、今まで誰もやってないと思われ。
ListBoxを不可にするとか、不可視にするとかは?
0244デフォルトの名無しさんNGNG
その動作は、「高速ダウンローダー2001」をおもいだしすな、ぁ。
0245242NGNG
>>243さん、レスありがとうございます!
242で書くべきでしたが、フォームのリサイズの際にListBox
のサイズも変更されるように、次のような記述をしています。

List1.Move 120, 120, Me.ScaleWidth - 240, Me.ScaleHeight - 240

これで、List1のHeightが240に達すると先のエラーを吐いて
しまうようです。ご指摘の通り、不可視にすればエラーを回避
できました。次の記述を加えてみました。

If List1.Height < 250 Then
List1.Visible = False

一応の解決を見ました。ありがとうございました! ところで、

> そんなこと、今まで誰もやってないと思われ。

これはどういう意味なのでしょうか。もしかして、他にもっと
いい方法があるのでしょうか。ご指導いただけると助かります。
重ね重ねよろしくお願いします!
0246デフォルトの名無しさんNGNG
>>242
もしかして、Form_Resize で、そのリストボックスの高さとか幅を、
フォームサイズに合わせてない?
高さや幅の値が<0になってエラーになってるだけと思うが。

ちゃんとチェックしてマイナスにしないようにするのが良いが、
手抜きとしてはこんなんもアリ(笑

Private Sub Form_Resize

 On Error Resume Next '//手抜き

 List1.Height = Me.ScaleHeight - List1.Top

End Sub
0247デフォルトの名無しさんNGNG
>>240
お返事ありがとうございます。
昨日は睡魔に負けてしまいました。
わからないことがまだ沢山あるので、その時はお願いします。
0248名無しさんですNGNG
枠無しにフォームのサイズを変更してるアプリって
ありますよね?例えば付箋関係なんかが良くやって
ますが、あれって自力で枠周辺を監視して処理して
いるのでしょうか?だとしたら具体的にどういった処理
が必要になるのでしょうか?
0249VB使いNGNG
>>248
サブクラス化+メッセージ監視で出来るよ。
サンプルはWebに山ほどある。
0250248NGNG
>>249
サブクラス化しなきゃできないですかね〜。
当方開発環境がwin98なのでサブクラス化すると
ステップ実行したりエラー出たら落ちたりするんで
できればサブクラス化はしたくないのです…。
NT系だとサブクラス化しても問題無いと聞きますが。
0251VB使いNGNG
>>250
まあ、サブクラス化はめんどくさいからな。
俺も完成寸前にしか動作させない。

んじゃこれ使ってみれ。
1.フォーム作ってフォームのコードに貼り付ける。
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
ReleaseCapture
SendMessage Form1.hwnd, &hA1, 11, 0
End Sub
2.実行してフォームをドラッグする。

あとはMSDNでWM_NCLBUTTONDOWNとか見れ。
0252250NGNG
早速試しました。なるほど、とりあえず右方向だけですが
サイズ変更できました。あとは外周マウス座標をなんとか
すればイケそうですね。MSDNでちとイロイロ調べてみます。
サンクスでした。
■ このスレッドは過去ログ倉庫に格納されています