1 :
デフォルトの名無しさん :
01/09/15 12:05
////////////////////////// 終了 //////////////////////////
3 :
デフォルトの名無しさん :01/09/15 20:05
IEとかで表示したHTML内のハイパーリンクを ドラッグドロップして、そのリンク情報を取得するには、 どーやればいいんでしょうか? Iriaとかにアイテム追加をするみたく・・・
4 :
デフォルトの名無しさん :01/09/15 23:35
Private Sub Form_Load() Me.OLEDropMode = 1 End Sub Private Sub Form_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single) MsgBox Data.GetData(vbCFText) End Sub あとは適当に応用をきかせて。
PC名の取得はどうするのでしょうか。 SQLサーバに接続した際、クライアントのPC名を記録したいのですが VBでのPC名の取得方法がわかりません。
>>4 引数にvbCFTextですか・・・
全然、勉強不足でした。ありがとうございます。
ListViewで日付の項目をソートしたいのですが上手くいきません。 単純な文字列比較のようなので、 2001/10/21 2001/9/10 のように、9月が10月の後になってしまいます。 9月を09のように0を頭につければもちろん正しくソードできるのですが、 それをしないで正しく実時間の順にソートする方法はありますでしょうか。
はじめまして! 先ほどは違うスレに書き込んでしまって すっかり鬱な疑心暗鬼です。 ちょっと質問なんですけど、 下記のVBのプログラムの結果が同じにならないのは どうしてなのかご教授願えますか? 質問内容 Fix関数でDoubleとVariantで同じ値が 入っているのに、Fixすると結果が違ってしまう。 環境 VB6 + SP6 Win2000 よろしくお願いします。 '********* ここからプログラム Dim a As Variant Dim b As Variant Dim c As Variant Dim t As Variant Dim d As Double Dim e As Double Dim f As Double Dim tt As Double Dim g As Variant Dim h As Variant Dim i As Variant Dim ttt As Variant a = 24600 d = 24600 g = 24600 b = 24000 e = 24000 h = 24000 'VariantでDoubleの時と同じ結果を出すための苦肉の策 c = a * 1000 / b * 1000 / 10 t = Fix((c + 5) / 10) / 10 'Doubleでの正しい結果が出る f = d / e * 100 tt = Fix(f + 0.5) 'Variantでは正しい結果が出ない i = g / h * 100 ttt = Fix(i + 0.5) MsgBox "ただしい計算結果 " & Str(t) & vbCrLf & _ "ただしい計算結果 " & Str(tt) & vbCrLf & _ "誤ってる計算結果 " & Str(ttt) '********* ここまで
10 :
デフォルトの名無しさん :01/09/16 14:57
VBからエクスプローラを制御することは可能ですか? コマンドの送受信をしたいのですが。
11 :
デフォルトの名無しさん :01/09/16 15:06
>8 エクスプローラでさえ0を代入してます。 無理と思って差し支えないでしょう。
12 :
デフォルトの名無しさん :01/09/16 15:10
>>10 コマンドって何でしょう?キー操作のことですか?
送信はSendkeys(藁
受信はフックしてやってください
VB の ListView にはソートイベントってないの? 2つのアイテムを比較するときに発生するイベント。
14 :
デフォルトの名無しさん :01/09/16 15:21
>>14 >>9 であれば、その ListView.ColumnClick イベントで、
日付を日付として比較するように書いてやればよいのでは?
17 :
デフォルトの名無しさん :01/09/16 16:32
DirListBoxで取ったディレクトリパスにあるフォルダ名をリストとして吐き出したいんですが、どうしたらよいでしょうか?
18 :
デフォルトの名無しさん :01/09/16 18:18
>>17 リストボックスに追加すりゃいーの?
Dim i As Integer
i = 0
Do Until i = Dir1.ListCount
List1.AddItem Dir1.List(i)
i = i + 1
Loop
19 :
8のソート君です :01/09/16 18:45
いまさら気づいたんですが、 VBのテキストボックスって65536文字(だっけ?)くらいしか 入れられないんでしょうか。 もっと増やしたいのですがアドバイスください。 お願いします
22 :
デフォルトの名無しさん :01/09/16 19:48
>>21 そうです
とりあえずリッチテキストボックス使いましょう
>>18 ファイルに吐き出すとか変数に入れるとかして色々やるつもりですが、
充分に応用できそうな感じですね。
ありがとうございました。
>>22 リッチ何とかって書体がいろいろあったりするやつだっけ、
ありがとう。解決した。
25 :
デフォルトの名無しさん :01/09/16 22:35
Open filename For Output As #1 hoge = "ほげ" & "ほげ2" Write #1, hoge Close #1 とかやってみたんですけど、これだと出力結果が "ほげほげ2" となりますよね。 この両端のダブルクォーテーションが要らないんですが、どうしたら良いでしょうか?
27 :
デフォルトの名無しさん :01/09/16 22:56
>>25 'ファイルを書き込む関数
Public Function WriteFile(strFileName As String, strText As String)
Dim intFree As Integer
intFree = FreeFile()
Open strFileName For Binary As #intFree
Put #intFree, , strText
Close #intFree
End Function
>>26 さんので出来ました、ありがとうございます!
>>27 スマソ、、理解できなかった自分は逝ってよしでしょか、、、。
29 :
デフォルトの名無しさん :01/09/17 15:32
固定ピッチフォントだけ列挙したいんですが、どうしたらいいでしょうか。 (プロポーショナルフォントは排除する) 今はループで回してPrinter.Fontsからフォント拾って列挙してるだけです。
30 :
デフォルトの名無しさん :01/09/17 18:00
VBでウインドウの中にネット上のHTMLを表示したいのですが? (Flash Getとかで、広告出してる感じのやつ) どうすれば出来るんでしょうか? おしえてん@
>>30 Webブラウザコントロールではダメかい?
32 :
デフォルトの名無しさん :01/09/17 18:50
>>25 WriteのところをPrintにしてみそ。
前のスレで質問したことですが、 乱数を連続で取得すると値が近いと、、。 そこでこんなアドバイスをいただき、 連続で取得すると近くなります。 WINAPIのSleepで1でも値を取ると、近似値がぐっと減りますよ。 嬉しいのですが、よくわかりません(;´_`;) サンプルコードを書いてもらえませんか? ドキュソですんません。
34 :
デフォルトの名無しさん :01/09/18 07:59
>>34 > VBでメモリ解放とか、簡単に出来るのでしょうか
VBではメモリ管理をVBのランタイム(仮想マシンとも言います)が
実権を握って管理しているのでできません。
javaだと意図的にgc (garbage collect; メモリ内の不要部分(ゴミ)
を集めて破棄すること)できたのですが、VBだと知っている限り
そのようなものはなかったと思います。
> ・・VC++だと簡単とか言っとりますが・・・よぉ分かりません。(
VC++だと簡単というのではなくて、VC++だとプログラムを書く側が
メモリ管理の実験を握ることになるので、VBに比べてメモリ管理を
行なう部分のソースを書かなければならないばかりか、メモリを確保
する部分はあるのに何らかの条件で解放する部分が実行されなかった
りすると、メモリリーク(確保したメモリが解放されずに残ってしま
うこと)が発生してしまうことにもつながります。
要は「義務と権利は表裏一体」ということで、メモリ管理の権利を握り
たければ、メモリ管理の面倒な部分も引き受けるという義務が同時に
発生するわけです。
ただし、VC++だとメモリ管理の部分について詳細まで書くことが出来る
ので、VBよりも遙かにメモリの利用効率の高い、かつ高速なアプリケー
ションが作れます。
>
ttp://www.page.sannet.ne.jp/kamishima この厨房ソフト最高すぎ(w
真・メモリ最適化ツールに迫るって、マジで(w
オカルトアプリ厨房…
40 :
回答、よろしくお願いします。 :01/09/18 14:29
ただいまVBで簡単なカードゲームを作っているんですが、 PictureBox の複数選択移動の処理に困っています。 何か言い方法はないでしょうか? GUIでファイル関係を操作するときみたいに、ドラッグ範囲指定 ドラッグ&ドロップで移動するっていうのが理想なんですが 回答の方ヨロシクおねがいします。
41 :
デフォルトの名無しさん :01/09/18 17:34
>>29 リストボックス等に列挙するのはキツイですが、
コモンダイアログならできます。
CommonDialog1.Flags = cdlCFBoth Or cdlCFFixedPitchOnly
CommonDialog1.ShowFont
って漢字で。
一応無理やりプログラムで偽装しました。 しかしドラッグした時のアイコンは単一なんですよね・・・ APIかなにかで複数選択にはできないのでしょうか?
43 :
デフォルトの名無しさん :01/09/18 18:53
ウィンドウズの時計合わせって、どうやれば作れますか? 時刻の変更と、NTPサーバーへの接続と・・
あ、で・・Dateステートメントがあるのか・・・ 自己解決してしまった・・・(滝汗 鬱だ氏のう・・・ ・・・・でもNTPサーバーの接続ってば・・・
VBでNTのサービスを作成する事はできますか? サービスの実行ファイルとしてVBで作成したEXEを指定して動かしてみたんですけど 処理中のままで動作しません。 やはりVC++でなければダメ
VB6.0、帳票ツールはCR8で開発するつもりなの。 VB側でデザイン環境呼び出そうとしたら VBのメニューのプロジェクトには「Crystal Report 8の追加」って表示されなくて、 コンポーネントのデザイナの欄にも「Crystal Report8」と表示されてなーい。 なんで? インストールしたCR8はプロフェッショナルエディション。 デベロッパーエディションじゃなきゃだめなのかなー? ちょっと困ってます。何か知っている人いますか?
47 :
デフォルトの名無しさん :01/09/18 22:25
VBで、ボタンとかPictureBoxのコントロールを 実行時に新しく生成ってできるんでしょうか? できるととっても便利なような気がするんですが、 方法がわかりません # イベントハンドラを与える方法が無いとかの理由でムリなのかしら…
49 :
デフォルトの名無しさん :01/09/18 23:32
Option Explicit Private Kotae ' ランダムで変化する答え Private Sub cmdAnswer_Click() ' 答え合わせ Dim Atai ' 入力された値を受け取る器 Static Kaisu ' 何回かかったかを覚える Atai = Val(txtAnswer.Text)' テキストボックスから値を取得 Kaisu = Kaisu + 1 '入力された値と答えを比較 If Atai > Kotae Then lblQuestion.Caption = "まだまだ大きいよ" ' 大きい場合 If Atai - Kotae < 3 Then lblQuestion.Caption = "少し大きいよ" ' 差が10以下になったら End If If Atai < Kotae Then lblQuestion.Caption = "まだまだ小さいよ" ' 小さい場合 If Kotae - Atai < 3 Then lblQuestion.Caption = "少し小さいよ" ' 差が10以下になったら End If If Atai = Kotae Then If Kaisu = 1 Then lblQuestion.Caption = "当たりだよ!!" & vbCrLf & Kaisu & "回であたったよ" & "こりゃ参ったよ" ElseIf Kaisu < 3 Then lblQuestion.Caption = "当たりだよ!!" & vbCrLf & Kaisu & "回であたったよ" & "あんたすごいねー" ElseIf Kaisu < 5 Then lblQuestion.Caption = "当たりだよ!!" & vbCrLf & Kaisu & "回であたったよ" & "まあまあだね" Else lblQuestion.Caption = "当たりだよ!!" & vbCrLf & Kaisu & "回であたったよ" & "はやくあてなきゃ" End If Kotae = Int((10 * Rnd) + 1) ' 1から10までの乱数整数を発生させます txtAnswer.Text = "" ' テキストボックスの初期化 Kaisu = 0 ' 回数の初期化 End If End Sub Private Sub Form_Load() Randomize ' Rnd関数の初期化 Kotae = Int((10 * Rnd) + 1) ' 1から10までの乱数整数を発生させます txtAnswer.Text = "" ' テキストボックスの初期化 lblQuestion.Caption = "私の考えてる数字(1〜10)を当ててごらん?" End Sub 数当てゲームなんですが、どうして If Atai - Kotae < 3 Then lblQuestion.Caption = "少し大きいよ" ' 差が10以下になったら If Kotae - Atai < 3 Then lblQuestion.Caption = "少し小さいよ" ' 差が10以下になったら で、差が10以下になったらなのに"3"が出てくるのかよくわかりませんです。 どなたかアドバイスよろしくです。
>>45 NT/2000リソースキットのsrvanyを使うと良い。
サービス周りの部分だけやってくれる。
>48 あ、ほんとだ!!コントロール配列使うとは気づかなんだ… 知らないって恐いっすな。感謝っす〜
>>49 > If Kotae - Atai < 3 Then lblQuestion.Caption = "少し小さいよ" ' 差が10以下になったら
> で、差が10以下になったらなのに"3"が出てくるのかよくわかりませんです。
いや、うん、コメントが間違ってるだけのような気も…
「コメントで書かれている事はしばしば嘘っぱちである」
ということを心得よう
53 :
デフォルトの名無しさん :01/09/19 00:09
> If Kotae - Atai < 3 Then lblQuestion.Caption = "少し小さいよ" ' 差が10以下になったら > で、差が10以下になったらなのに"3"が出てくるのかよくわかりませんです。 いや、コメントが間違ってるだけのように見える 「コメントで書かれている事はしばしば嘘っぱちである」 ということを心得よう
あ、すんません、おもいっきし連続書き込み # しかもびみょ〜に直してるあたりが赤っ恥
VBまたは、VBAで、ノーツのDBをつついたりすることってできるんですか?
56 :
デフォルトの名無しさん :01/09/19 09:31
コメントが間違ってただけなんですね。サンクスです。
57 :
デフォルトの名無しさん :01/09/19 21:04
始めてカキコします。 VBで作ったソフトをOLEオブジェクトとして別のソフトで 使用したいのですが、どうすればいいですか?
58 :
デフォルトの名無しさん :01/09/19 21:27
あげ
59 :
デフォルトの名無しさん :01/09/20 00:24
Private Sub Timer1_Timer() Sleep (1) MyValue1 = Int((Rnd * 43) + 1) Label1.Caption = MyValue1 End Sub sleepの使い方ってこんなんでよろしか?
VB で atan2() 使いたいんですけど、なにかよい手はありますか? (Atn() しか用意されてない。。。)
62 :
デフォルトの名無しさん :01/09/20 10:44
エクセルVBAで結合したセルの幅の取り方が分かりません、お願いします。 これだと、結合前の幅になってしまいます↓ Dim oRange As Range Set oRange = Sheet1.Range("A1") MsgBox (oRange.Width)
63 :
デフォルトの名無しさん :01/09/20 14:04
VBでエクセルファイルを出力したいのですが、 それってできますか? エクセルファイルを読み込むことはできたんですけど。 よろしくお願いします。
>>63 できるよ。
xl.ActiveWorkbook.Close True, savefile
xl.DisplayAlerts = False
こんな感じ。
>>62 Sheet1.Range("A1", "A2").Width
試してないけどこれじゃあ行かんの?
66 :
デフォルトの名無しさん :01/09/20 15:27
>>67 ???
67 名前:63 :01/09/20 16:14
>>64 なるほど。
ありがとうございました。
ってこと?
あ!! すみません。間違えました。 64さん、ありがとうございました。 ところで、 lim = filename.worksheets("sheet1").Range("A1").end(filename.worksheets("sheet1").xlToRight).Column これで、limに エクセルの1行目の文字の入っている行数を入れたいのですが うまくいきません。 何がいけないのでしょうか? よろしくお願いします。
70 :
デフォルトの名無しさん :01/09/21 16:31
VBで作ったソフトを配布するときにインストーラー形式にしたいんですが、 ちゃんとプロジェクトを解析して使われているocxや必要DLLをパッケージに含んでくれる インストーラー作成ソフトって何がありますか? VB付属のディストリビューション ウィザードとインストールシールド以外で、 できればフリーのモノがいいのですが・・・。
>>69 lim = filename.worksheets("sheet1").Range("A1").end(xlToRight).Column
だよ。
xlToRightはプロパティーでもメソッドでもなく定数。
>>62 ついでに今VBで試したけど
>>64 のやりかたででてきたよ。
VBAのマクロでも今やってみた。
普段使わんから使い方がようわからんかったけど結果は同じやった。
ようするに結合しても結合前の範囲を指定せないかん訳だな。
A1とA2を結合しているならA1とA2を指定すると言うこと。
>>70 >ちゃんとプロジェクトを解析して…
ディストリビューション ウィザードとインストールシールドで
いいと思われ
73 :
デフォルトの名無しさん :01/09/24 14:47
age
74 :
デフォルトの名無しさん :01/09/24 15:01
VBのまったくの初心者にお勧めの解説本って どういった物が良いのでしょうか?
76 :
デフォルトの名無しさん :01/09/24 21:56
MSのActiveServerPagesを1週間前から始めた超初心者です。 なんとなく簡単なプログラムを書くことはできはじめたのですが、 目標としてASPを使って、いろいろなグラフ(円グラフとか 棒グラフ)描画をやってホームページに出したいのですが、 それはASPで可能なんでしょうか?それとも何か別の言語 とかでやった方がいのでしょうか? 教えて下さい。 スレ違いならごめんなさいですけど、その場合どこで 訊いたらいいでしょうか?
77 :
デフォルトの名無しさん :01/09/25 00:19
VBで、InetコントロールのOpenURLメソッドで取得したHTMLデータ をシーケンシャルファイルに保存すると、2バイト文字が化けて しまう場合があります。これを回避する方法がありましたら、ご教授 ください! よろしくお願いします!!!
78 :
デフォルトの名無しさん :01/09/25 00:46
あるテキストファイルから1行づつデータを取得して 別々のテキストボックスへ格納したいのですが コードの記述がわかりません。 3行のテキスト文章を3つのテキストボックスに行別に格納するための 方法を教えてください よろしくお願いします。
>>78 これで動くかな?
Open ファイルネーム For Input As #ファイルナンバー
For i=0 to 2
Line Input #ファイルナンバー, 中身
Text1(i).text = 中身
Next i
Close #ファイルナンバー
Text1(0),Text1(1),Text1(2)をフォームに貼り付けて
コントロール配列にすれば動くと思う。
ファイルが2行しかないとかそういったときのエラー処理は
適当に考えて頂戴。
>>74 とりあえず何でもいいからサンプル付の本を買ってきて流れをつかんだら
あとはMSDNライブラリーで事は足りると思う。
>>76 簡単な棒グラフは1×1のGIF画像でも用意してテーブルを使うのが
良くある手段。でも円グラフはさすがに無理か。
昔パールでGIFファイルをヘッダーから全て書き出すことをやったけど
<IMG src="graph.cgi">って感じで呼び出して
ヘッダーからたらたらと書き出す。
とてもサーバーに負荷がかかりそう。
ここで聞くよりWebProgのほうが良いんじゃない?
[OSのVer]2000 [VBのVer]5.0 以下に示すのは0040でのDB接続コードですが。 これをActiveXDLL化する場合、べたに書いて、DLLWIZARDを使用し コンパイルするだけで接続できるのでしょうかでしょうか? また、足りない部分があったらご指摘お願いします。 (サービス名、ユーザー名なども、記入済として。) よろしくお願いします。 *********************** OraSession : Variant; // Oracle Session OraDatabase : Variant; // Oracle Database procedure TMaiForm.ConnectBtnClick(Sender: TObject); var StrSrv : String; UserPass : String; begin StrSrv := 'hogehoge'; // Net8 サービス名 UserPass := 'hogeUser/hogePass'; // ユーザー名/パスワード try // OLE オートメーションオブジェクトのインスタンスを作成 OraSession := CreateOleObject('OracleInProcServer.XOraSession'); // oo4oインプロセス接続 OraDatabase := OraSession.DBOpenDatabase[StrSrv, UserPass, 0]; except on E:EOleError do begin ShowMessage('データベースの接続に失敗しました。'); end; end; end; よろしくお願いします!!
83 :
デフォルトの名無しさん :01/09/25 10:51
質問 VisualBasicで作成したアプリケーションを常に一番前に表示させるために ZOrderメソッドを使いたいんだけどどこに配置すればいいですか?
84 :
デフォルトの名無しさん :01/09/25 11:19
VB6にてSetWindowLongを用いたメッセージフックを行っています。 Form1のPrivateモジュール内で lpOrg = SetWindowLong(Me.hwnd, GWL_WNDPROC, AddressOf WindowProc) WindowProcは標準モジュール関数として作成し、 その中でメッセージを判断する事までは出来ましたが、 これって他アプリに対しても同じ様な事ができるのでしょうか? 単純にSetWindowLongに別のアプリのウィンドウハンドルを渡せば・・・・、と思ったんですが、 ウィンドウProc(lpOrg変数)に0が帰ってきてしまいます。
プロセスが違うと無理
86 :
デフォルトの名無しさん :01/09/25 14:34
Range(1, 1).NumberFormat = "#,##0;-#,##0" これで数字に3桁ごとにカンマを入れたいんですけど、ウマくいきません。 どうしてでしょうか?
VB初心者のプログラマーです。 Visual Basic 6.0 SP5でFTPを利用したアプリケーションを開発し始めたのですが、 FTPのBinaryモードとASCモードを切替えるプロパティがMSDNを探しまわっても 見当たりません。 デフォルトではBinaryのようなのですが、ASCに切替える方法はあるのでしょうか? どうかお知恵をおかし下さい。 お願いいたします。
88 :
デフォルトの名無しさん :01/09/25 18:49
フォームの表示位置を設定したいんだけど。。
90 :
デフォルトの名無しさん :01/09/25 20:10
らるちーみたいに、 二つのフォームを結合させるのは、どーやるんでしょうか?
with me .top = 100 .left = 200 end with ってな感じでできちゃった。 自分で解決したのでsage
92 :
デフォルトの名無しさん :01/09/25 20:28
textBoxに入力した桁数はどうやって取得するのですか? 例えば ┌───┐ |ABCD | └───┘ と入力した時には、「4」という値を取得したいのですが…。 お願いします。
・・・ちと、いー加減だったか。(汗 MsgBox Len(Text1) 文字数の取得でいーんだよね? バイト数やったらLenB・・・ いちおー、基本中の基本やから・・・
95 :
デフォルトの名無しさん :01/09/25 20:47
ありがとうございます!! 基本なんですがこれにちょっとはまってました。 助かりました。
96 :
デフォルトの名無しさん :01/09/25 20:53
拡張子lzhに対応するスクリプトエンジンはありませんと 言うわれたんですけどどうすればいいんですか
98 :
デフォルトの名無しさん :01/09/25 21:04
>>97 ダウンロードしたゲームを開こうとしたときです
>>98 そのゲームが、ドコにあるのかが分からんと、どーにも。
・・・つか、開発関係の質問に該当するんでしょか?
あの、初心者の人はVB6は我慢して、VB.netをやったほうがいいと 思うんだけど。(マジレス ADOとかも大きく変わるよ。RecordSet亡くなるし。
>>100 VB.netをはじめるなら
C#とかの方が
後から仕様追加して無い分
仕様が素直だと思うが
どっちが取っつきやすいかは人によるが
VBでブラウザを作っています。 が、IEなどにあるブックマーク一覧表の作成でつまっています。 FileListBoxを作ってそこに表示させるようにしてみましたが、 C:\WINDOWS\Favoritesからデータを拾ってくるように指定する 方法がわかりません。 もしかしたらFileListBoxよりもっとスマートな方法があるのかもしれません。 ご存知の方、どうかご教授ください。
>>102 >FileListBoxを作ってそこに表示させるようにしてみましたが
の時点で
>C:\WINDOWS\Favoritesからデータを拾ってくるように指定
できてるんじゃないか?
だいたいFileListBoxじゃ、お気に入りの階層構造はどうすんのよ。
それにお気に入りはC:\WINDOWS\Favoritesって決まってるわけじゃないしな。
そのまま続けたら高速ダウンローダ2000が出来ちゃうよ。
レスありがとうございます。 >>C:\WINDOWS\Favoritesからデータを拾ってくるように指定 >できてるんじゃないか? プログラムのソースがあるディレクトリを自動で指定してしまってるようなので その変更方法がわからなく困っています。 >だいたいFileListBoxじゃ、お気に入りの階層構造はどうすんのよ。 確かにそうなのですが、ではどうすればいいのか、私にはわからないのです。 ドーナツのソースを拾って調べてみようと思ったらあれ、VC++なんですね…(困)
>>104 そんなレベルの話してたのか・・・。
File1.Path = "c:\windows\Favorites"
ってやれば、お気に入りが表示されるよ。
でも
>>103 に書いたように階層構造の問題もあれば、
お気に入り場所だってc:\windows\Favoritesって決まってるわけじゃないし。
はっきり言うけど、こんな事聞いてるレベルでブラウザを作ろうなんて、
無謀すぎると思うぞ。
ましてやドーナツ級のものなんて無理だろ。
106 :
デフォルトの名無しさん :01/09/26 20:36
メールヘッダーのFrom:から、メールアドレスだけを抜き出す処理って、どうやるんでしょうか? 文字列から"@"を検索して、Doステートメントとかで、"<"や"("がヒットするまで抜き出すんでしょうか。 ・・・・・もっと違うやり方って、あります?
107 :
デフォルトの名無しさん :01/09/27 10:15
ACCESS2000 VB6.0 DAO使用 (テーブル) ・日付(DATE型)主キー ・曜日(数値) ・時間区分(数値)主キー ・内容(文字列) というようなテーブルで、 特定の年月(例えば2001年9月など)を指定してレコードを検索するのには どういうふうに書けばいいでしょうか?
質問です。 環境はVB6SP5、WIN2000SERVER、SQLSERVER2000です。 常駐型プログラムを作成したのですが、それをサービスに追加し、ログオンしなくても プログラムが実行できるようにしたいのですが、 上記の環境で実現するには、リソースキットを導入するしかないのでしょうが。 既出でしたら申し訳ありません。
109 :
えこえこあざらし :01/09/27 11:58
>>106 (使用出来る環境なら)正規表現を用いて取り出す手もある。
111 :
デフォルトの名無しさん :01/09/27 15:09
例えばテキストボックスがA,Bの2つあるフォームがあるとします。 BからAへフォーカスが移った時に 「フォーカスがBから来ました。」 という情報はどのように取得するのでしょうか? TabIndex(?)の情報を使えば良いような気がするのですが 具体的には分からないので、どなたかよろしくお願い致します。
113 :
デフォルトの名無しさん :01/09/27 15:52
WM_SETFOCUS ってどのように使うのですか? Text1.text = WM_SETFOCUS としても何も表示されませんでした…。
>>111 すべてのコントロールのGetFocus()イベントで現在のコントロールを何かの変数に保存しておいて
BのGetFocus()イベントでその変数を調べればいいんじゃない?
115 :
デフォルトの名無しさん :01/09/27 15:56
やっぱり変数を使うしか方法は無いのでしょうか…。
>>116 読んでもわからないバカなんです。申し訳ない。
VBでコンソールに出力するには、どうしたら良いのでしょう? printfとかcoutみたいなことがしたいのだけど。 あと、終了コードはどうやって返せば良いのでしょう?
119 :
デフォルトの名無しさん :01/09/28 01:51
age
dirオブジェクトとfileオブジェクトを使っています。 dirオブジェクトで選択したフォルダの、以下に入っているフォルダを取得して、 それから全てのファイル名称を全部取得したいと思ってます。 If File1.ListCount <> 0 Then For i = 1 To File1.ListCount File1.ListIndex = i - 1 Text1.Text = Text1.Text & File1.FileName & vbCrLf Next End If 選択したフォルダ内のファイルはこれで表示させることができますが、 そのフォルダ以下に入っているフォルダ内のファイルの取得方法がわかりません。 誰か詳しい人教えてもらえると助かります。よろしくお願いします。
122 :
デフォルトの名無しさん :01/09/28 13:01
123 :
デフォルトの名無しさん :01/09/28 14:44
例えば、(100,5)で宣言した配列に エクセルから Range で指定した100行1列分 を 配列の4列目に入れるって可能ですか? 今のところ、Range で入れたい配列と完璧に同じ大きさだけ とってこないと配列に入れられないのですが。 よろしくお願いします。
解決しました
WIN32API.txtの最新版って公開されてる? 最新版ってのがあるのかも知らないんだけど。。。 手元にあるVisualStudio6についてきたやつは 更新日が1998/7/14ってので古すぎて使いたいAPIが無くって むかつくんですけどぉ・・・
>>121 まさしくこれです。VBではできないと思ってたので助かりました。
終了コードもExitProcessでいけました。
監視端末とかこれでつくろうっと。
128 :
デフォルトの名無しさん :01/09/29 09:44
>>125 ループで解決しました。
どうもすみません・・・。
129 :
デフォルトの名無しさん :01/09/29 21:35
frxファイルって、どーゆー時に生成されるんですか? 新規フォームにデフォルトで付いてくるアイコンを削除したら、 frxファイルが生成された気がするんですが・・・・ どうやりゃ削除できますか?
>>129 frxはアイコンとかPictureBoxに貼り付けた絵とかを保存してるファイルだとオモタ。
選択してDeleteキー押すとか?
どうやりゃ削除って、右クリックして削除選ぶとか?
ゴミ箱にドラッグ&ドロップするとか?
つーかなんで消す必要があるかわからない。
131 :
デフォルトの名無しさん :01/09/30 19:22
自フォームにフォーカスがセットされていない無い状態で、 キーが押下された事を取得するには、どうしたらいいのでしょうか?
132 :
デフォルトの名無しさん :01/09/30 21:18
質問です。 初めてVBでちょっとしたプログラムをしてみて、 ディストリビューションウィザードでパッケージにしてみました。 すると大した機能も付けていない(と思う)んですがDLLの総量が3MBにもなっていたのです。 それくらいで普通なのでしょうか? よろしくお願いします。
もう、やめようよ......。既存のVB消えるんだからさあ。
134 :
デフォルトの名無しさん :01/09/30 21:56
俺VBと一緒に逝くよ。他の言語はハードル高すぎ… たかすぎ〜 たかすぎぃい〜 かいぃはぁつぅ〜
>>131 通常の方法では無理。システムフックを使うしかないと思う。
>>132 どのコントロールを使っているかに拠る(Projectをエディタで開けば分かる)
ので、一概には言えないが2-3MB程度なら普通かな。
>>133 多分.NETのことを言っているのだと思うけど、コード体系自体はそう変わらない
わけだし、.NETがすぐに浸透するとは思えない。
未だにVB5やVB4を使っているところだってあるわけだし。
オブジェクトは変わるけどコードの書き方は基本的に同じだから
意味がないわけではないと思う。
136 :
デフォルトの名無しさん :01/10/01 01:00
非マルチラインのテキストボックスコントロール上で リターンキーを押したときにビープ音が鳴らないように設定しても MaxLengthを設定すると鳴ってしまいます。 この場合でもならないようにするにはどうすればいいでしょうか
まったく度素人状態から学ぶのであればやめたほうがいいとおもうんだけどねえ。 俺: COBOL->VBA->VBS->VB->JavaScript->(XML)->VC++ VBから逃れるのは大変だよ!って、使わない訳ではない。 いまも上の言語はすべて使っている。
138 :
デフォルトの名無しさん :01/10/01 01:27
初心者より手前のレベルの入門者です。 リッチテキストボックスで とある単語だけ強調表示(太字&フォントサイズ+1)したいのですが どんなキーワードで捜せば「当たり」がありますか? お暇な方、よろしくお願いします。
141 :
デフォルトの名無しさん :01/10/01 13:57
テキストボックスの行間の幅を変更するにはどうすればいいのでしょうか。
>>140 ん? こゆこと?
・・・フォントは使い方忘れた。
Dim i As Integer
Dim temp As String
RichTextBox1.Text = "名無しさん"
temp = "しさ"
With RichTextBox1
i = InStr(.Text, temp) '探す
If i > 0 Then
.SelStart = i - 1 '「し」から
.SelLength = Len(temp) '「さ」まで
.SelBold = True '太字に設定
.SelStart = 0 'フォーカスを先頭に戻す
End If
End With
>132 ランタイム入りだとそれくらいのサイズになるよ
145 :
デフォルトの名無しさん :01/10/01 15:10
どんなVBランタイムセットでも、これは確実に入ってるってのはどれでしょうか? "ASYCFILT.DLL""COMCAT.DLL""MSVBVM60.DLL""OLEAUT32.DLL""OLEPRO32.DLL" "STDOLE2.TLB""VB6JP.DLL""VB6STKIT.DLL" これくらいが基本ですかね。
146 :
デフォルトの名無しさん :01/10/01 16:21
作曲のソフトを作りたいんですけど ドとかレの音を出す方法ってどうやればいいのでしょう
VB4で開発したアプリをVB6で修正するにはどうすればよいでしょうか?
>>137 逆に貴方のようにCOBOLから入った人は理解しづらかったかもね(^^;
Message(=イベント)という概念やオブジェクト、クラスという概念は
COBOLにはないからね。上記の概念を(厳密ではないけど)簡単に
把握したいならVBは選択肢の一つになりえるよ。
言語つーのは適材適所だから、逃れる必要もないし、それは貴方の立派な
財産だと思うのですが。
>>140 ちなみにRichText.Find()ってメソッドあるけどバグ有ります。
どういう挙動をするかは色々やってみてね。142さんの方法がベター。
>>147 まずVB4-16か32かはっきりさせろ。でないとアドバイスのしようがない。
とりあえずvb4のプロジェクトはVB6でも読めたはずだから、変換する事。
あとはUnicode(全角半角も2バイト)とS-JISに気をつけること。
それと一部のコントロールは使えない。
>>137 VBSとJavaScriptってのが痛。
151 :
デフォルトの名無しさん :01/10/01 17:39
>>149 前半と後半の口調が違くて怖い。ブルブル・・・
まるで893のようだ
152 :
デフォルトの名無しさん :01/10/01 17:43
VBでキー入力をロックするにはどうすればよいのでしょうか? APIの BlockInput を使うとマウス入力までロックしてしまいます。 用途としては、Ctrl+Alt+DeでVBアプリを終了させられてしまうのをを封じたいのです。 OSはWin2Kです。 キー入力をロックした上に、VBアプリのみがキー入力を認識できればもっとうれしいのですが・・・ メッセージフックという技を使えばできるのでしょうか?
>>154 試しましたが、win2kでは使えないようです・・・
156 :
デフォルトの名無しさん :01/10/01 22:20
VBというか、エクセルVBAの質問で恐縮なんですが ワークシートにコントロールを複数配置したいのですが うまくいかなくて困ってます。 スピンボタンのlinkedcellの値がF2のものをコピーしても linkedcellの値がまたF2のものができてしまいます。 ここを相対参照にする方法ってないんでしょうか? コードも継承されないみたいだし...
>>146 実際に使ったことはないけど、midiOut〜っていうAPIを使うか、
DirectMusicでやるのが簡単そうだと思う。
自前で計算したいならMODとかについて調べるといいと思うよ。
159 :
デフォルトの名無しさん :01/10/02 08:51
>>158 システムが使うDLLを書き換えるのは怖いですが試してみます。
レスありがとうございました。
>>154 言い忘れましたが、レスありがとうございました。
Ctrl+Alt+Del はしょうがないとして、 Alt + Tab によるアプリの切り替えを防止する方法ってありますか?
161 :
デフォルトの名無しさん :01/10/02 15:39
階層フレキシブルグリッド(MSHFlexGrid)でデータを表示しているのですが 偶数行はこの色、奇数行はこの色 のように簡単に見やすく色分けする事は出来るでしょうか。
162 :
デフォルトの名無しさん :01/10/02 16:08
初心者な質問で申し訳ないんですが 文字を回転させて表示することは可能なのでしょうか どなたかお願いします。
やろうとしてることはとても初心者向けではなひ。
>Ctrl+Alt+Del はしょうがないとして、 >Alt + Tab によるアプリの切り替えを防止する方法ってありますか? Ctrl+Alt+Delを無効にするコードはMSDNに載っています。 絶対に使うな!って書いてありますけど(!?藁
166 :
デフォルトの名無しさん :01/10/02 18:37
>164 レスありがとうございます 難しそうですが挑戦してみます。
167 :
名無しさんの野望 :01/10/02 21:17
subject.txtからdatファイル名を抜き出す方法を考えています。 例. 999973261.dat<>こんなしぇんむ〜は嫌だ!! パート4 (123) 1000141155.dat<>QOH & PB ACCESS 7 (572) subject.txtを読み込む ↓ 行の左から14文字取り出す ↓ 14文字目に"<"がある項目から"<"を削除する。 ↓ 配列にファイル名を入れ,次の行へ ↓ 繰り返し という方法を考えていますが,1行ずつテキストを 変数に読みこむという処理はどうすればよいでしょうか。 また,テキストとして読み込むよりバイナリとして 読み込んだほうが,やはり処理は早いのでしょうか。
>>164 レスありがとうです。
検索はかなりしましたが、日本語ページしか見てませんでした。
海外の方がレベルが高いんですかー。今度は海外も見てみます。
169 :
デフォルトの名無しさん :01/10/02 23:55
windows付属のスクリーンキーボードみたいに常に前面に 表示させたいのですがどうすればいいのでしょうか?
CreateWindowEx の拡張スタイル WS_EX_TOPMOST を使うか、 SetWindowPos の HWND_TOPMOST を使う。
!!!VB厨房が徘徊しています!!! !!!!!!放置開始!!!!!!
>>169 SetWindowPos()にHWND_TOPMOSTを指定してやればOK。
ていうかこの手のは検索すれば死ぬほど出てくるが?
>>167 ていうかInStr()使ったほう(".dat"を検索)が早くないか?
>1行ずつテキストを変数に読みこむ
それ以外にどういう方法があんの?Line Inputとかヘルプ見た?
>また,テキストとして読み込むよりバイナリとして
いいところに気が付いたけど、この程度の処理ならロジックが複雑に
なる分と相殺かな。
バイナリで読む利点はメモリにおいて読めることなんで
(ファイルI/Oのオーバーヘッドが減る)
この例のように、行先頭のみ、一行の長さが可変という処理なら
テキストで読んだほうが簡単。
誰かわかんないですか?
>>174 今VB使ってないから、
PC内蔵のスピーカ外せ、としか言えない。
>>136 TextBoxのKeyPressイベントで、Len(TextBox.Text) >= TextBox.MaxLength が True の場合に、KeyAscii=0にするとか。
やってないのでわからないが、理論上はできるはず。
あとはMaxLengthを2増やし、Len(TextBox.Text) >= TextBox.MaxLength - 2が(以下略)
>>176 ありがとうございます。ためしてみます。
>>178 VBでどうやるのか知らないけど、APIでならGetFontして
LOGFONTに細工してSetFontでしょ。
もしも、InputManを使っておられる方がいらしたら質問です。 テキストボックスのプロパティで、 フォーマットを全角のみにした場合でも、半角スペースのみだと 変換されずにそのまま通ってしまいませんか? 回避策を思い付かないので、教えていただければ幸いです。
181 :
デフォルトの名無しさん :01/10/04 10:15
VBでエクセルの複数行を結合させると、 文字が一番下の行に表示されてしまうのですが、 一番上の行に表示させることはできるでしょうか? よろしくお願いします。
182 :
デフォルトの名無しさん :01/10/04 10:17
>>181 Excel の[セルのプロパティ]、垂直揃えを見てごらんよ。
183 :
デフォルトの名無しさん :01/10/04 11:16
上げてすみません。 あるディレクトリ下のファイル数を一発で取得する方法で簡単なものがあった ら教えて頂けないでしょうか?FindFirstFile系のAIPを使用してカウントする とファイル数が1000位までならあっという間なんですが、Cドライブ全てな んかをカウントするととても耐えられない時間がかかります。 それと、ファイルの実際の使用サイズを取得する方法もお願いします。 よろしくお願いします。
184 :
デフォルトの名無しさん :01/10/04 11:20
、> .|
>________ .|
 ̄ .|./_ _\ | | ______
| / ヽ/ ヽ | | /
. | | ・ | ・ | V⌒i
_ |.\ 人__ノ 6 | < うるせー馬鹿
>>183 \ ̄ ○ / |
. \ 厂 \
/ _____/  ̄ ̄ ̄ ̄ ̄
 ̄ ̄, -/へ/\/`- 、
/./ ./o i. \
185 :
デフォルトの名無しさん :01/10/04 14:36
質問です。イベントログを取得しようとし、以下のような方法で、コードを記述したのですが、 イベントログには ソース (○○○○) 内のイベント ID (9999) に関する説明が見つかりません。次の挿入文字列が含まれています と記述されています。これを避けるためにはどのようにしたらよいのか、どなたか詳しい方、 ご教授願えないでしょうか。。。 Appオブジェクトを使う方法ではなく、APIを使用する方法を希望します。 Option Explicit Declare Function RegisterEventSource Lib "advapi32.dll" Alias _ "RegisterEventSourceA" ( ByVal lpUNCServerName As String, _ ByVal lpSourceName As String) As Long Declare Function DeregisterEventSource Lib "advapi32.dll" ( _ ByVal hEventLog As Long) As Long Declare Function ReportEvent Lib "advapi32.dll" Alias "ReportEventA" ( _ ByVal hEventLog As Long, ByVal wType As Integer, _ ByVal wCategory As Integer, ByVal dwEventID As Long, _ ByVal lpUserSid As Any, ByVal wNumStrings As Integer, _ ByVal dwDataSize As Long, plpStrings As Long, lpRawData As Any) As Boolean Declare Function GetLastError Lib "kernel32" () As Long Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" ( _ hpvDest As Any,hpvSource As Any, ByVal cbCopy As Long) Declare Function GlobalAlloc Lib "kernel32" (ByVal wFlags As Long, _ ByVal dwBytes As Long) As Long Declare Function GlobalFree Lib "kernel32" ( ByVal hMem As Long) As Long Public Const EVENTLOG_SUCCESS = 0 Public Const EVENTLOG_ERROR_TYPE = 1 Public Const EVENTLOG_WARNING_TYPE = 2 Public Const EVENTLOG_INFORMATION_TYPE = 4 Public Const EVENTLOG_AUDIT_SUCCESS = 8 Public Const EVENTLOG_AUDIT_FAILURE = 10 Public Sub LogNTEvent(sString As String, iLogType As Integer, _ iEventID As Long) Dim bRC As Boolean Dim iNumStrings As Integer Dim hEventLog As Long Dim hMsgs As Long Dim cbStringSize As Long hEventLog = RegisterEventSource("", App.Title) cbStringSize = Len(sString) + 1 hMsgs = GlobalAlloc(&H40, cbStringSize) CopyMemory ByVal hMsgs, ByVal sString, cbStringSize iNumStrings = 1 If ReportEvent(hEventLog, iLogType, 0, iEventID, 0&, iNumStrings, cbStringSize, hMsgs,hMsgs) = 0 Then MsgBox GetLastError() End If Call GlobalFree(hMsgs) DeregisterEventSource (hEventLog) End Sub Sub Main() Call LogNTEvent("Information from " & App.EXEName, EVENTLOG_INFORMATION_TYPE, 1001) Call LogNTEvent("Warning from " & App.EXEName, EVENTLOG_WARNING_TYPE, 1002) Call LogNTEvent("Error from " & App.EXEName, EVENTLOG_ERROR_TYPE, 1003) End Sub
環境は、VB6SP4、NTです。
187 :
デフォルトの名無しさん :01/10/05 01:07
age
>>183 動作速度はともかくとして、簡単に取得するなら
FileSystemObject 使うのもありかも。
標準のリストボックスが二つあって、それぞれの内容をドラッグ&ドロップで 移動できるサンプルコードがあったら教えていただけないでしょうか?
190 :
デフォルトの名無しさん :01/10/05 09:17
あげ
できました。
>>188 ありがとうございます。
でもFileSystemObjectの方が遅かったので・・・。結局全フォルダ
オブジェクト下のファイル数を地道に数えて行くんですよね?
たとえばC:\windowsと指定したらそのディレクトリにぶら下がって
いる全てのディレクトリ下のファイル数も一辺に取得したいんです。
193 :
デフォルトの名無しさん :01/10/05 13:14
すいません。アホVB初心者です。 VBの標準exeで改行コードLFをCRLFに変換したいんですが 何か良い方法はないでしょうか。
194 :
デフォルトの名無しさん :01/10/05 13:27
改行の前に vbCr を付ける、じゃダメか?
195 :
デフォルトの名無しさん :01/10/05 15:28
>>193 strExpression = Replace(strExpression, vbLf, vbCrLf)
これではだめでしょうか?
個人的には vbNewLine 使うトコだけど。
vbCrLfとvbNewLineの違いって何? どう使い分けたらいいのか分からない…
>>196 vbNewLine : 一応プラットホームに依存しない(事になってる)コードを書ける。
まあ気休めだけどね。
UNIX 系、Mac、Win 全部に対応しようと思ったら結局自分で書くしかないね。
198 :
デフォルトの名無しさん :01/10/05 17:45
Form1 -------------------------- Private Sub Command1_Click() Set Form2 = New Form2 Form2.Show End Sub -------------------------- Form1のCommand1をクリックすると、Form2が新しく表示されますが いっぱいクリックすると、いっぱいForm2が現れます。 それぞれのForm2はどうやって識別するのでしょうか。 オブジェクト名は「Form2」ではないみたいなのですが…。
199 :
デフォルトの名無しさん :01/10/05 18:41
185よろしくお願い致します。
>>195 それじゃお金もらえない。
処理済のテキストをもっぺん通したらどうなるか考えてみれ。
>>198 フォームの数分変数を用意すればいいんじゃねーの?
>>198 Form2ってのは暗黙のForm2オブジェクトのインスタンスを
示すから、Set Form2...てのはそもそも間違い。
ヘタすると循環参照になる恐れもあるし、リソースがどんどん減っていく
のが分かると思う。
203 :
デフォルトの名無しさん :01/10/06 00:58
ボタンを押した時に、指定したWAVファイルを鳴らしたいのですが どうしたらよろしいのでしょうか? ご教授お願いいたしまっす!
VB6.0で開発してる者なんですが、mid関数を使って、文字列を2つに分けたいのですが 2つに分けた2つ目の文字列が文字化けしてしまいます。対処策を教えてください。
>>204 2バイト文字が真っ二つになっている。
+1か-1をしてみれ。
デフォルトの名無しさん,レスありがとう! でも、それをやっても化けちゃうんだなぁ! どうしよう?
>>204 つか、Mid 関数って文字単位じゃなかったっけ?
どんな文字列食わせてるの?
最初から化けてるに一票
209 :
デフォルトの名無しさん :01/10/06 18:47
再帰処理でスタック不足のエラーを捕まえるにはどうしたらいいのでしょう? on Error goto ErrHandle call SomeFunc '再帰関数を呼ぶ ErrHandle: MsgBox("計算に失敗しました") こんな感じではエラーを捕まえてくれずに落ちちゃう・・ #再帰が浅いデータで計算するとうまく動いているから再帰関数自体は問題ないとおもう
>>207 VB4,5,6は文字列はデフォでUnicodeだから漢字ANK混在でも
途中で切れる事は無いはず。
>>209 再帰を呼び出す回数を制限するカウンタを導入したら?
public sub MyFunc(Byval CallCnt as Integer)
__if CallCnt < 100 then
____Call MyFunc(CallCnt + 1)
__end if
end sub
>>210 でもさ、API から受け取る等して、Shift-JIS コードが
まぎれこんでた場合は、どうなるんだろうね。
212 :
デフォルトの名無しさん :01/10/07 03:43
VBはじめて4日です。 データベースをやりたくてはじめたのですが、 ADOやらDAOやらRDOやらで、どれを勉強して良いかわかりません。 とりあえず、新しいということでADOを勉強しようと思っているのですが、 他の2つより劣っている部分ってあるのですか?
初めてならDAOが良いんじゃないの? 情報も多いし。
215 :
デフォルトの名無しさん :01/10/07 04:10
すいません WebBrowserコントロールのフォントサイズの変更ってどうやるんですか? それらしいプロパティを見つけられんのですけど・・・
お聞きしたいんですけど、統計解析をSAS(Statistical Analysis System)を用いて行う ことはけっこう高度なものなのでしょうか?数学使うんでしょうか? (数学)苦手なもので・・。えっと大学の授業でそういう情報処理の科目 があるんですけど、数学苦手でまだプログラミングのことが分からない 初心者には無理ですかね?無理なものをとってもしょうがないと思いまして。 誰かおしえてください!
217 :
デフォルトの名無しさん :01/10/07 04:23
>>216 「無理」って言ってほしいように感じるけど?
>>213 DAOの方が簡単なんですか?
つーか、違いが今ひとつ分かりません・・・。
だおー
220 :
デフォルトの名無しさん :01/10/07 05:25
アド?エーディーオー?どっち?
222 :
デフォルトの名無しさん :01/10/07 10:52
ExcelVBAについて質問です。 フォーム上にテキストボックスを貼り付けました。 VBのテキストボックス上で右クリックするとメニューが出ると思うのですが、ExcelVBAの場合それが出ません。 これは仕様なのでしょうか? それとも簡単に出す方法がほかにあるのでしょうか。
>>218 adoの方が新しいんだから、adoやっとけ。
別にどちらが難しいとかいうことはない。同じ。
リストビューの選択項目を削除する方法を教えて!
コモンダイアログを配置しようとすると「ライセンスが無い」といわれるのは何故?
>>210 何だ、Cと一緒で自分でスタックの量を見積もらなくてはいけないのか・・
どうもありがとう
説明下手ですみませんが、お教え下さい。 VB6で作りたいのです。 VB6で作成した物を常駐させて置いて、 適当なアプリを起動しようとした時に、 そのアプリが起動する前に、 作成しておいた適当な画像なりフォームなりを 割り込ませて表示する方法ってありますでしょうか? アプリが起動する前にというのが出来ない場合には、 同時でも構いませんので、 何かいい方法はありませんでしょうか? どうかご教授下さい。
229 :
デフォルトの名無しさん :01/10/08 22:43
既にでている質問だったら、本当にすいません。 VB6でエクスプローラーとかからドラッグ&ドロップしてファイルリストボックスにファイル名をリストアップしたいのですが、 Private Sub File1_OLEDragDrop(Data As DataObject,(中略) File1.filename = Data.Files(1) End Sub だと、一つしかファイル名が表示できません。 D&Dしたファイルのファイル名をどんどん追加したのですが、どなたか教えて頂けませんでしょうか?? 宜しく御願いしますm(__)m
>>223-224 ありがとうございます。結局、
>>224 さんの言われるように
「新しいから」と言う理由でADOを始めてみました。
ADOはスタンドアロン環境ではダメって訳じゃないんですよね?
で、やってて分からないことなのですが、
DBに接続したデータグリッドコントロールをクリックして、
クリック位置の「行」のデータを取得して
別に用意した行数分のテキストボックスに表示したいのですが、
クリック位置の行のデータの取得方法ってどうしたら良いのでしょう。
よろしくお願いします。
231 :
デフォルトの名無しさん :01/10/08 23:29
DLL 卍????Sってエラー何?
232 :
デフォルトの名無しさん :01/10/08 23:37
>>229 リストボックスに代入してから、ファイルリストに追加するとか・・・
なんや姑息な手段しか思い浮かばんな。
ってゆーか、なんでファイルリストボックスに追加したいんよ?
なんの作業をしたいの? リストボックスじゃダメなん?
>>233 どうもありがとうございます。
おっしゃるとおり、リストボックスだとフルパスがどんどん追加されますね。
なんでファイルリストだと追加ができないんですか、ほんと初心者なもので。。
ちなみに、やろうとしている作業は動画リストを作ってRealPlayerで再生させようという物です。
>>234 Private Sub Form_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim ddfile As Variant
Dim i, ii As Integer
Dim temp As String
For Each ddfile In Data.Files
List1.AddItem ddfile
Next
List2.Clear
For i = 0 To List1.ListCount - 1
ii = 0
Do
temp = Right(List1.List(i), ii)
ii = ii + 1
Loop Until Left(Right(List1.List(i), ii), 1) = "\"
List2.AddItem temp
Next
End Sub
ちょと作てみた。かなりドキュソだが動くでしょ。ま。
List2のアイテムをクリックしたときに、List1の同じ番号のアイテムを開くとか。
そーやりゃー、なんとか、たぶん。
リストファイルとして保存とか・・するん?
236 :
デフォルトの名無しさん :01/10/09 12:52
質問です。 実行時に現在処理中の関数の名前を取得したいのですが、 良い方法はあるでしょうか。 用途はエラーハンドリング時に表示させたいんです。 お願いします。
237 :
デフォルトの名無しさん :01/10/09 13:01
関数呼ぶ前に関数名をグローバル変数に格納するか、関数中で関数名をグローバル変数に格納するとか。
238 :
デフォルトの名無しさん :01/10/09 13:39
Microsoft Rich Textbox Control 6.0 (SP4)で、 ワードラップをしない方法はありませんでしょうか?
>>235 またまたありがとうございます。多謝、多謝。
List2にファイル名がでました。これのほうがスッキリしてますね。
保存は.iniでなんとかリストファイルを作成できそうです。
これでお気に入りの動画を再生することができそうです、むふむふ。
240 :
デフォルトの名無しさん :01/10/09 14:05
>>237 それはどういう事でしょうか。
Function FuncA As result_type
funcname = FuncA
End Function
こういう事ですか?
沢山数があるので、できれば特定の関数名は書かずに
済ませたいんですが、無理でしょうか。
241 :
デフォルトの名無しさん :01/10/09 14:10
Delphi でメソッド名をメソッドポインタから引っ張ってくるような事をしたいのかな? そういう関数名とかは 実行時型情報(RTTI)というんだ VBのIDEはそれをどこかに持っているのは確かだけどさ・・・・
242 :
デフォルトの名無しさん :01/10/09 15:55
正直質問・・・。 よくある毎日かわる壁紙とかってどうやってんの? やっぱりVBとかなの? ふつーはどうやって作るもんなの?
>>242 別にVB以外でも、たいてーの言語なら作れると思われ。
で、なにさ? それを作りたいの?
>>243 その気になりゃWSHでもbatファイルでもできる。
つーか俺ならそうする。
PVかなんかのおまけでDVDにいれるんだってさ。 作れっていわれてるんだけど 一般的にこーゆーのってどーやってつくられてるの? ASPならちょっとできんだけどWSHなら楽かな? おれならコレをこーやって作るっていうのきぼん
すいません。返答貰ったのにREができなくて。
何をしたいかと言うと、ftpで送られてきたファイルの中に
lf改行コードのファイルがあるかもしれないので、crlfに
してくれと言われたのです。
Open "c:\FTP\ftp.log" For Input As #1
Do While Not EOF(1)
strDum = Split(LineData, vbLf) < ---LFコードで区切る
Text1.Text = Join(strDum, vbCrLf) < ---CRLFコードでつなげる
Loop
Close #1
こんな感じで書いてみたんですが、型が一致しませんと怒られました。
どなたかお知恵を貸してください。
>>193 ,197
返答ありがとうございます。
ヘルプで探してみましたが、どうやらできないみたいですね。 あるとデバッグに便利なのに・・。 回答してくださった方、ありがとうございます。
Text1.Text = Join(strDum, vbCrLf) は strJoin = Join(strDum, vbCrLf) の間違いです。 strDumとstrJoinは共に配列で宣言してるstring変数です。
249 :
デフォルトの名無しさん :01/10/09 20:55
Modを使ってAがBの倍数であるかどうかを判定しているのですが、 Aが小数の場合は自動的に丸められてしまってうまく比較ができません。 この場合はどのようにしたら良いでしょうか
251 :
デフォルトの名無しさん :01/10/09 22:58
VB6.0のコモンダイアログから ページ設定(プリンタの設定じゃないです)を 呼び出すにはどうすればいいですか? メモ帳なんかだと印刷プレビューとか出ていて いい感じなんで、あれを使いたいんですよ。
例えば 4.2 Mod 2 という計算に、0以外が返って欲しいのですがそうなってくれません。 掛け算でもそういったことが分かるものなのでしょうか。 すでに算数になってしまって、申し訳ないですがよろしくお願いします。
253 :
例えばこう。 :01/10/10 01:12
D = A \ B 'まずAとBの商を求め.. IF A = (B * D) THEN 'それを掛けて元に戻れば割り切れるってわけ。
なるほど。ありがとうございました!!
255 :
デフォルトの名無しさん :01/10/10 10:35
>>212 Accessヤレ。中身はほとんどVBだ
A \ B だと、AやBが小数の場合うまくいかないよ int(A / B) がいいね
257 :
デフォルトの名無しさん :01/10/10 14:30
>>230 Clickイベント中でクリック対象行の座標(Rowプロパティ)を求め、欲しい列を
Colプロパティで指定して、データをTextプロパティから取得すればOK。
258 :
Surface :01/10/10 15:25
>>246 Joinの戻り値は、Variant型です。(多分)
259 :
デフォルトの名無しさん :01/10/10 16:10
ラベルで左右は揃えられますが(右・左揃え) 上下は揃えられないのでしょうか?(上・下・真中寄せ等)
260 :
デフォルトの名無しさん :01/10/10 16:11
SetWindowLong で BS_TOP スタイルをセットすれば可能。
261 :
デフォルトの名無しさん :01/10/10 16:22
262 :
デフォルトの名無しさん :01/10/10 17:33
最近、VBの勉強を始めたのですが、アプリケーションウィザードを使用しようとすると『ActiveX コンポーネントはオブジェクトを作成できません。』と出てしまいます。 また、『プロジェクト』から『コンポーネント』を選択して『Microsoft Common Dialog Control 6.0』などを選択すると『書き込みできません』と出て使用できません。 インストールで間違えたのでしょうか?でも、必要なものは一通りいれたつもりなのですが・・・。 一度、OSごとフォーマットしてインストールしなおしたのですが、治りませんでした。 思い当たることがあったら教えてください、よろしくお願いします。 OSはWindows2000SP2でソフトはVisualStudio6.0Professional Editionです。
>>262 Windows2000とVisualStudioを
MSにオンライン登録すれば使えるようになるよ(藁
264 :
デフォルトの名無しさん :01/10/10 18:05
265 :
デフォルトの名無しさん :01/10/10 18:30
>>263 Windows2000はオンライン登録してないです。ちなみにプリインストールでした。
VisualStudioはオンライン登録してあります。
でも、動かないんですけど・・・。
>>264 そ〜ゆ〜こと言わないで、教えてくださいよ〜。
267 :
デフォルトの名無しさん :01/10/10 19:21
改行コードが<LF>だけのテキストファイルの改行コードを <CR><LF>に変えたいのですがどうやったら良いでしょうか。
vim :set fileformat=dos :w! c:\DQN.TXT
269 :
デフォルトの名無しさん :01/10/10 19:25
>>267 各行の最後に Chr$(13) を追加するのはどうだ?
ファイルの読み書きが分からなかったら、
Open, Input#, Close関数 を参照すること。
270 :
デフォルトの名無しさん :01/10/10 19:38
>>269 バイト単位だから ChrB$ だったな。ごめん。
271 :
デフォルトの名無しさん :01/10/10 19:44
ひさびさにBASICをVBで使ってみたけど、昔のコマンド(関数とか制御式とか) とほとんど一緒なんですね。 「Mid$ってVBでも使えるのかな〜?」ってヘルプ見たら、そのまんまの書式 で結構感激(笑 CでWinプログラム組むの面倒くさくなってきたよ。まずいな。
272 :
デフォルトの名無しさん :01/10/10 20:06
>>271 VBと同じ感覚でC言語でアプリケーションが作れる環境がもしあるとすれば、その需要は多い。
いつも思うんだが、VBの文字列操作関係の関数にわざわざ$をつける意味ってあるノカー?
274 :
デフォルトの名無しさん :01/10/10 20:20
ない。古い伝統。
変数の場合は"str"とかつけなくても区別できるからいいんだけどな…
余計なこと(大事なことなんだけどさ(^^; )考えなくていいポイントが 多いよね、VBって。VCでMFC使う時は、結局ちゃんと知識得ていない と使えないし、CのSDKはコツコツと根元から作り上げなくてはいけない。 総合すると、WINアプリの概念をちゃんと理解して、それなりにモノにするには、 C(SDK)→VB→C++(MFC) と間にVBを挟むのも悪くないんじゃないかな。 なんか、「ランタイム様。面倒なこと全部やってくれてありがとうございます」 っていう心境だわ(笑)。機能のディティールにこだわりだすと、やっぱりVCに戻る んだろうけど、そうバカにするものでもないわな。 ただ、VBしか使わないWINプログラミングっていうのは、もったいないと思うけど。
>>276 ってゆーか、その前にC++Builderが既にあるだろ。
>>273 結果が空の時に$を付けるのと付けないのでは挙動がちがう。
例えばDir()はバリアント型のNullを返すがDir$()は""(空文字列)
を返す。
279 :
デフォルトの名無しさん :01/10/11 02:50
>>274 んじゃ、10万回ループとかで$ありとなしの実行時間を比較して
ごらん。278が言ってることが体感できるから。
これ以外にも$は”文字列を返す”ってのを明示する意味もあるよ。
>>248 strDumは配列でいいけどstrJoinは配列である必要はない。
>>277 VBだろうがVCだろうが質のよいコードを書こうと思えば
プラットフォームに関する知識を深めるのは当然。
それさえもできてない人間がVBを馬鹿にする。
>>277 >間にVBを挟むのも悪くないんじゃないかな
俺はVBでAPIや各種構造体の使い方を覚えて
SDK->MFCと行ったけど。
いきなりMFCはある意味危険だし、いきなりSDKもある意味きつい(笑)
今思うとSDKやれたのはVBで培った土台があったからだと思う。
そういう意味ではVBってSDKの入り口という感じがする。
ちょっと背伸びしてサブクラス化やAPIを使うこともできるし。
281 :
デフォルトの名無しさん :01/10/11 10:10
SDKはCを、MFCはC++を、Winとは関係なしに先に勉強しないと辛いけど、 VBはBASICとWinを同時進行できるのが、いいかもね。
いわばVBは、補助輪付自転車といえよう。
補助輪付きに慣れきってしまって、無しでは走れない奴が多いのも事実。
すいません。ちょっと聞きたいんですけど。 OpenAsTextStreamってワイルドカード指定できるんですか? Open for〜だとワイルドカード指定できなかったんで。
>>284 なぜに今から開こうとするファイル名がワイルドカード?
FileName = Dir$("*.TXT")で取ってくればよかろうに。
>>285 フォルダ内にあるファイル全てが対象って事なんで。
そのフォルダにはtxt以外のファイルも多々存在するのです。
VBでADOを使うサンプルまたは講座などのあるHPを教えてください。 ASPのじゃ、やだよ。
289 :
デフォルトの名無しさん :01/10/11 20:26
階層フレキシブルグリッド(MSHFlexGrid)に ↓のように表示させていますが 名称1 |名称2 --------+--------- AAAA|aaaa BBBB|bbbb CCCC|cccc これを ↓のように表示させる事は可能なのでしょうか? (エクセルで2つのセルを1つにするようなイメージです) 名称 ------------------ AAAA|aaaa BBBB|bbbb CCCC|cccc 可能な場合、どのようにすれば良いのでしょうか??
>>289 "名"を右寄せに、"称"を左寄せにする。
291 :
ななしさん :01/10/12 00:27
どちらにも垂直のスクロールバーがあるテキストボックスが二つあった時、 片方のスクロールバーを動かすと、もう一方もスクロールするように出来ますか?
292 :
デフォルトの名無しさん :01/10/12 00:35
VBで初めて簡単なソフト作ってvectorに申請したら載せてもらえました。 ちょっと恥ずかしい。
293 :
デフォルトの名無しさん :01/10/12 06:34
ちょっとお尋ねしたいんですが。 今、AVIファイルを再生させてるんですが、 その下に、フレーム数表示(あるいは時間表示)させようと思っとります。 どのようにすれば可能でしょうか? 環境はWindows2000。 VisualStudio6.0 EnterpriseEditionです。 よろしくお願いします。
294 :
デフォルトの名無しさん :01/10/12 07:31
VBからOutlookExpressを添付ファイルを付けて立ち上げたいのですが、 どうすればいいのですか? 今現在は、立ち上げる所まではAPIで出来たのですが、添付ファイルの 付け方が分からない状態です。 ShellExecute Me.hWnd, "open", "mailto:メールアドレス", vbNullString, vbNullString, SW_SHOW 他の方法でもかまわないです。 よろしくお願いします。
>>291 片方のテキストボックスをサブクラス化してEM_SCROLLかWM_VSCROLLを
取ってくれば?
>>293 そこまでやるんだったら最初っからmci関連のAPI使うしかなかろう。
>>290 それだと
名|称
と、間に「|」が入ります。
他に方法は無いでしょうか。。
>289 名称1=名称2ならMergeCellsつかえるような気が・・・
299 :
デフォルトの名無しさん :01/10/12 16:18
>>294 MAPISession
MAPIMessage
300 :
デフォルトの名無しさん :01/10/12 16:55
MSFlexgridで、Ctrlキーを押しながらの複数選択はどうすればいいでしょうか? 選択箇所の色を変えて、あとから色が変わったところを探すのが普通でしょうか?
301 :
デフォルトの名無しさん :01/10/12 18:01
皆様のお知恵を貸してください。 VBで、「N88−BASIC」でいうところの READ、DATA、(RESOTRE) のようなデータ設定を行う方法は存在するのでしょうか? ちなみに、当方の実現したいことは、2次元以上の配列への 一括データセットです。 HELP見ても同等機能を発見できず、だったので・・・。
>>301 static final String[][]={{"","",""},{"","",""},・・・
>>297 「項目」そのもののセルではなく、
「項目名」の部分、ヘッダーと申しましょうか
その部分だけを2つのセルを1つにしたいのです。。
304 :
デフォルトの名無しさん :01/10/13 05:48
>>301 配列の要素をひとつひとつ打つべし。
N88の既存プログラムのVB化でデータが膨大にあるときなら、
N88のソースからデータを読みとって配列にセットするsubでも書けばよい。
305 :
デフォルトの名無しさん :01/10/13 14:51
Sendkeysで右クリックは実現可能でしょうか? Sendkeysでキーコード渡せると良いのですが・・・TOT
>301 俺もその機能探した... 結局、ちと違うがArray関数使う形になったケド... もっとヨイ方法無いかなぁ
>305です説明足りなかったので追加 Sendkeysにしたい理由なんですが、 mouse_eventつかってやると位置情報が必要なので駄目なんです。 AppActivate "かりゅ〜しゃ", True for i = 0 to 10 '<-繰り返したいので '右クリック Sendkeys "{up}{~}{down}" next i としたいのです。keycode=93が右クリックなんですがどうにかならないですかね。
>>307 MSDNを読め。mouse_event
309 :
デフォルトの名無しさん :01/10/13 21:24
オーディオデバイス・・つーか、WAVEとかが、 使われているか否か(音が出ているか)を取得するには、どうしたらいいですか?
>>309 MCI。
漏れはmciSendString以外使ったことがないから分からないが。
>>310 微妙にずれてるような…
それだとmciキューが空かどうかしかわからんのではないか。
312 :
名無しさん :01/10/14 00:57
リッチテキストボックスでなぜか水平スクロールバーが 出てこないんですが…。なぜ?垂直は出て来るんですが。 もちろんスクロールバーの設定は両方にしてます。
313 :
デフォルトの名無しさん :01/10/14 02:11
なんだかリッチテキストボックスの質問が多い Me.Font = RichTextBox1.Font RichTextBox1.RightMargin = Me.TextWidth(RichTextBox.Text) でいけますが何か?
314 :
デフォルトの名無しさん :01/10/14 17:14
最小化ボタンのあるサイズ変更不可のFormを作るには どうすればいいんでしょうか?
315 :
VB初心者 :01/10/14 17:21
VBでアプリケーション作りたいのですが、 VB経験0です。 参考になる書籍を教えてください。 あ、ちなみにJAVA,Perl,Cのプログラミング経験はあります。
317 :
デフォルトの名無しさん :01/10/14 17:43
俺、msdnの中の「プログラミングの基礎」の項をプリントアウトして、 他は直接CD閲覧してやってる。特に本は買ってないけど。 他の言語使えるなら、これとネットの入門講座見とけばいいんじゃない? 物足りなくなったり、紐解くのめんどくさくなったら、リファレンス張りの 分厚い本でも座右に置いとけ。
318 :
デフォルトの名無しさん :01/10/14 17:55
>>314 FormのBorderStyleプロパティを"1 - 固定(実線)"にして
MinButtonプロパティを"True"にする
320 :
デフォルトの名無しさん :01/10/14 23:08
とても初歩的なことで申し訳ないのですが、 テキストボックスに数字以外を入れられたらはねたいのですが、 整数型などデータ型を取る関数を教えて下さい。
321 :
デフォルトの名無しさん :01/10/14 23:41
とっても初心者向けのサイトってないですか?
322 :
デフォルトの名無しさん :01/10/15 00:14
>>320 型は関係ないよ。なんなら文字も全部数字だと思っても
間違いじゃぁない。scanfやったことないならやってみなよ。
キーボードで「6」を押しても、コンピュータはポインタ
っていう暗号みたいな形で受け取るんだよ。だから先ずは
アスキーコードとscanfだ。で、はねたいって言うと更に
手続きがいるよ。
コントロールにキーボード押がされるとウィンドウに
メッセージが行くからそれを捉えて条件判定
しなョ。仮想キーコードだったかアスキーだったかは忘れたけど。
WM_CHARで色んなことが分かるョ
>>322 さん
なるほど、ありがとうございます。
>>323 さん
今、MSDNライブラリなんぞを見ましたが、当方初心者ゆえ、
scanf、WM_CHAR共に理解出来ませんでした・・・。
理解したいんだけどなぁ・・・。もっかいよく見てみます。
VB6のコード入力画面ってマウスのホイールは利かないもんですか?
少なくともscanfが分からなければ、
すぐ理解するようにしないと困った
ちゃんになってしまいますヨ・
>>324
327 :
デフォルトの名無しさん :01/10/15 00:57
まだはじめたばかりなのですが、頭が悪いせいか 独学だとうまく進みません。 みなさんのお勧めのサイトなどありましたら 教えていただけないでしょうか。
>>327 >まだはじめたばかりなのですが、
これを踏まえると、もう諦らめた方が良いという結論になるな。
>>299 MAPISession
MAPIMessage
この2つを使ってみたのですが、OutLookExpressが見えない形での操作しかできませんでした。
OutLookExpressが見える形で操作できないのでしょうか?
>>325 どこでもホイール使えばスクロールするよ。
>>325 今度は「VBでどこでもホイールと同じことはできないんですか?」とか聞かれそう…
332 :
デフォルトの名無しさん :01/10/15 21:44
なんかkeydownイベントを認識しねぇ。 っつーか認識するときとしないときがあって原因不明。 (゚Д゚)ゴルァァァァァァ
333 :
デフォルトの名無しさん :01/10/15 21:48
VB6というのを友達から焼いてもらったんですが、 これってインストールすると何メガくらいですか?
334 :
デフォルトの名無しさん :01/10/15 22:10
俺のプログラム・・・ 上キーと下キーをエディットで押すと、 メッセージボックスが出るようにしたが、 所詮認識しないので、まぁ、MFCでも ないといまのところ無理だ。そういうこと にしといてほっといた。かなり前だ。 しかし、今日&キーを押したら、ポーンとか いって「上キーが押されました」とかでてきた。 しばらく無視してたらコンドは)キー押しとき ポーン、下キーが押されました。 どうやら仮想キーとアスキーだな。 こんな可愛いバグに俺は微笑む。
335 :
デフォルトの名無しさん :01/10/15 22:21
厨房な質問ですまん 1.ExcelVBAとVisualBasicの細かい違いは? 「Excelがないと動かない」以外に・・・ 2.VisualBasic.netへの移行は進むのでしょうか? 色んなサイトを見てると「関係ねえよ」ていう感じですけど・・・
どうなんだろな
337 :
デフォルトの名無しさん :01/10/15 22:33
>>335 >2.VisualBasic.netへの移行は進むのでしょうか?
間違いなく進む。
嘘だと思うんならβ2で遊んでみ。
いま僕が嬉しいのはマイエディタで括弧で囲まれたところの 色を変えることが出来たことです。これは実装なんですか? 文字の検出には仮想キーやアスキーコードのことを考えなく てはいけないのですが、条件判定のところでやたら定数式 が必要とかいうエラーが出たのが困りました。でもなんか わかりました。char...=')'とか言う記述を止めx026等を 使いましたら、うまく行きました。 条件判定のルーチンのほうは、ほぼばっちりだったので満足です。 あぁ、これで少しは目が疲れなくてすむ。括弧を抜かしたりする ミスも大幅に減少するでしょう。
Dim ReturnValue, I ReturnValue = Shell("calc.exe", 1) ' 電卓を実行します。 AppActivate ReturnValue ' 電卓をアクティブにします。 For I = 1 To 20 ' ループ カウンタを設定します。 SendKeys I & "{+}", True ' 電卓にキー コードを転送して、 Next I ' I の値に 1 を加算します。 SendKeys "=", True ' 和を求めます。 SendKeys "%{F4}", True ' Alt + F4 キーを転送して電卓を終了します。 ヘルプのコレ↑をそのままformに貼り付けて実行ファイルつくって 動作させるとproject1って残骸が、ctrl+alt+delのタスクリストに 残ってるんですけどこれは何故?
>335 >「Excelがないと動かない」以外 ↑が一番違う。要するに実行ファイルを作れるかどうか。 細かいところでは、オブジェクトの構造がちょっと違う。 言語的には同じ。
>>330-331 VBだけホイールでスクロールしないんですよ。
その他のアプリはだいたいスクロールするのに。
認識させる為になにかしないといけないのかな?
VC++のSpinBoxをVBではTextBoxとUpDownコントロールを組み合わせてやりますよね。 やってみたら大体はうまくいったのですが、唯一つ、VC++のSpinBoxと 違ってTextBox内でカーソルキーの上下を押しても数値がUp or Downしてくれません。 最近このことで悩んでいるのですが、どなたか上手いやり方をご存知でしょうか。 要はVC++のSpinBoxコントロールとまったく同じことをやりたいのですが、、、
>341 ホイールマウスのドライバの設定を色々いじくりまわしてみる事をオススメしよう
>>342 Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyUp Then
Text1 = Text1 + 1
ElseIf KeyCode = vbKeyDown Then
Text1 = Text1 - 1
End If
End Sub
こぅゆぅの?
う・・・四行で済むじゃん・・ウツダシノウ
>303 亀レスすまんけど MergeCol、MergeRow組み合わせてもだめなの?
また厨房な意見ですまん VisualBasicとExcelVBAがたいして変わらないのなら 何故マイクロソフトはVisualBasicをOFFICEに標準装備しないのだ? 単に商売戦略上の問題だろうけど・・・・ 中身が一緒だったらそう言いたくなるよ・・・ 実行ファイル作るだけのためにVisualBasicを買うんかい!
>>347 それがゲイツたんハァハァだというのだ! なぜこんな事が分からん!!
>>344 確かにそれで数字は変わるのですが、
VC++の場合はカーソルキーを押すとスピンボタンを実際に押してくれる
(ボタンが押される様子というグラフィカルな効果だけでなく、
それから引き起こされる処理もやってくれる)んですよね。
つまり、TextBox内でカーソルキーを押したときに、VBのUpDownコントロールに
マウスで矢印を押したというイベントを投げられれば一番いいのですが、
そんなことってVBだとできないのでしょうかやっぱり。
>>346 「長さ1」「長さ2」を「長さ」に変更する
↓
MSHFlexGrid1.MergeCells = 1
MSHFlexGrid1.MergeRows(0) = True
で2つのセルが1つに結合されましたが
今度は中央寄せにしたいのですが出来ません…。
MSHFlexGrid1.ColAlignment(2) = 4
↑だと、データの部分を中央寄せに出来ます。
MSHFlexGrid1.ColAlignmentHeader(2) = 4
↑ヘッダー部分を中央寄せに設定してるつもりですが
中央に寄ってくれません。
どうすればよろしいでしょうか。。
どーも。初心者です。 ある文字列からダブルクォーテイションを検索したいんですが MID(xxxx,""")でエラー どーしたらいいのでしょうか?
"""" にしてみて
>>351 ひとつが範囲始め、2番目がエスケープ指定、3番目が検索に使われて
4つめは範囲終わり。だったと思う。(回答への自信:66.66%)
>352 ありがとう ためしてみる
>350 (念のため)RowとRowSel、ColとColSelでセル指定して CellAlignmentつかえば真ん中いく。 つーか、階層フレックスってバグの山だったけど修正されたの?
>>354 MSHFlexGrid1.Col = 2
MSHFlexGrid1.Row = 0
MSHFlexGrid1.CellAlignment = 4
で、中央揃えになりました!
ありがとうございました。
356 :
デフォルトの名無しさん :01/10/16 19:51
過去ログしっかり探せばあるのかもしれませんが、ざっとみただけだと見つからなかったので質問です。 デスクトップのパスを取得するにはどうしたらいいのでしょうか? ユーザーごとにかわるので、どうやって追っていけばいいのでしょうか?
357 :
デフォルトの名無しさん :01/10/16 23:11
ToolTipTextを右クリックで呼び出したいんですが、 ToolTipTextを表示させるのってどうすればいいいんでしょうか?
360 :
Kei@男 :01/10/17 15:49
>351 A=Instr(文字列,chr(&h22)) で、何番めに(")が入っているかが分かります。 無い場合、A=0
トーシローな質問で申し訳ないのですが……。 リストボックスのダブルクリックイベントで、選択された項目の ItemDataをどうやって判別するか分かりません……。 選択された項目自体は、「List1.Text」で参照できますよね? でも、ItemDataは引数を指定しないといけないみたいなんですが、 その引数に何を指定していいのか分からないんです。 なにとぞ、「この素人が」と思わずに、ご教授お願いいたします。
>>362 他の方法があるのだろうと思いながら
何が選択されてるのかわかれば良いんだ!とか思って
For i=0 To List1.Listcount -1 ってループで
List1.Selected(i)=true なのを探して
この時のiを返すようにしてるの・・・
とりあえず動いてるんだけど、もっと良い方法があるっぽい。
364 :
デフォルトの名無しさん :01/10/17 20:01
Set Label1.DataSource = RecordSet label1.DataField = "数値" として、ラベル1にRecordSetの数値フィールドを入れています。 この数値を加工したい(500を加えて1000で割りたい)のですが Label1選択 → プロパティ → DataFormat → の中に 標準 数値 通貨 : : ユーザー設定 があり、「ユーザー設定」で出来ると思うのですが 形式文字列の指定の仕方が分からないので教えてください。 よろしくお願いします。
>>362 List1.ListIndexでいいんでねーの。
366 :
VB超初心者 :01/10/18 00:14
VBはじめたばかりの人間です。 今、本にある問題のプログラムを作ろうとしているのですが。 以下のような問題です。 数値Nを入力し1からNまでの和を求めよ。 ただしN<=0で終了する。 出力はNの値と和である。 です。皆様方ならどのようなプログラムを作りますか? この初心者に教えてください。お願いします。
367 :
やさしい人 :01/10/18 00:21
dim j as integer dim n as integer dim k as integer n=text1.text k=0 if n <=0 then{ for j=1 to n k=k + j next j }
if n > 1 then
なんか他の言語もまじっていたようなので、画面にテキストボックスを2つ貼り付ける ボタンを貼り付ける。 Private Sub Command1_Click() Dim i As Integer Dim j As Integer j = 0 If Text1.Text > 0 Then For i = 1 To Text1.Text j = i + j Next i End If Text2.Text = j End Sub
Private Function Sum(ByVal N As Long) As Long If N <= 0 Then Sum = 0 Else Sum = N + Sum(N - 1) End If End Function
Private Function Sum(ByVal N As Long) As Long If N>0 Then Sum=N*(N+1)%2 Else Sum=0 End If End Function
%でなくて\だった
皆様有難うございます。少しずつVBが分かってきました。 といいながらも別の問題も上手くつくれないのです。 中心角が115度の扇形の面積と弧の長さを求めよ。 ただし角の単位はラジアンとする。 です。 どうしようもなく阿呆かもしれませんが どのようなプログラムをつくればいいのでしょうか?
>>373 それプログラム作るほどの意味があるのか?
375 :
デフォルトの名無しさん :01/10/18 16:10
>>373 その前に、お前は本当にそのような技術が必要なのか小一時間問い詰めたい。(以下略)
中心角が115゚で単位がrad?
プログラミングを単なる計算機に使おうとしてる人初めて見た(w
380 :
デフォルトの名無しさん :01/10/18 19:36
フローティングウインドウにしたくてSetWindowPosでHWND_TOPMOSTを セットしたんですが、これだプログラムを切り替えてもそのフォームが 最前面に表示されたままになってとてもウザイです。 プログラムが切り替わったら消えるようなフローティングウインドウはどうすれば よいのでしょう?
>>380 WM_ACTIVATEを引っかけて、非アクティブになったら該当フォームを隠す。
アクティブになったら出す。
382 :
デフォルトの名無しさん :01/10/19 02:27
板違いでごめん・・・ VBAスレなかったもんで・・・ Excel97以降のDDEExecuteって仕様かわっちまったんでせうか? 95で作ったマクロ動かそうとしたらうごかねぇ・・・(;´Д`) だれか参考になるHPでいいんでおせーてくだされ・・・
>381 WM_ACTIVATEを引っ掛けるってことはサブクラス化ってことか・・・ どうもありがとうございます。
384 :
デフォルトの名無しさん :01/10/19 09:34
スプレッドで、見出し行をドラッグしたり、「SHIFT」を押しながらの、 クリックで、複数行を選択した場合、最初にマウスを下ろした場所一行だけを、 アクティブにしたいのですが、うまくいきません。 まず、スプレッド自体で行選択モードにした場合は、却下されました。 それから、選択範囲内で一番上の行(または一番下の行)をアクティブにするのも却下されました。 よって、現在はマウスダウンしたときの行を保持して、 マウスアップしたとき選択範囲が複数行であれば、最初にマウスダウンしたときの行をアクティブにするという方法を考えています。 マウスダウンした時の行の保持は何ですればよいでしょうか? よろしくお願いします。
>>384 マウスポインタの座標をスプレッドの行の高さで除算すると出るよ。
あとは、現在の先頭の行を足しとけばOK
>385 ありがとうございます、やってみます
387 :
デフォルトの名無しさん :01/10/19 13:46
えとですね、ボタンを押したら交互に処理が変わるように したいです。どうしたらいんでしょう? ボタン1つ作って、1回目押したらテキストボックスに"AAAA" って表示して次押したら"BBBB"でその次押したらまた"AAAA" (以後繰り返す)みたいな感じ。おしえてちょ。
388 :
デフォルトの名無しさん :01/10/19 13:49
クラスのPublicメソッドにユーザー定義型の変数を 引数にしたいんですけど、なんか難しいこと言われて 怒られます。出来ないんでしょうか?
389 :
デフォルトの名無しさん :01/10/19 13:50
>>387 ほらよ
Option Explicit
Private Static Sub Command1_Click()
Dim Flag As Boolean
Flag = Not Flag
IIf(Flag, Text1, Text2).Text = IIf(Flag, "AAAA", "BBBB")
End Sub
390 :
デフォルトの名無しさん :01/10/19 13:50
392 :
デフォルトの名無しさん :01/10/19 14:01
>>391 ユーザー定義型がどうしても使いたいんだYO!
クラスって1ファイル1クラスでしょ?
数が多いとちょっとなぁ〜。
初めまして。P介Pと申します。 現在VB6で開発最中なのですが、THREED32.OCXをインストールして SSPanel等を画面に貼り付けて使用しようとすると、 、「このコンポーネントのライセンス情報が見つかりません。デザイン環境でこの機能を使うために必要なライセンスがありません。」 というメッセージが表示されてしまいます。 THREED32.OCXを一度削除して新たに入れ直したり、 ネットで色々と解決法を探したのですが、うまく行きませんでした。 どなたかこの解決法がありましたら是非教えて下さい。 お願い致します。
394 :
デフォルトの名無しさん :01/10/19 14:07
>>393 VB6のSSはライセンスを購入してね。
396 :
デフォルトの名無しさん :01/10/19 16:21
>>394 どうゆことなのでしょうか?
もし良かったら教えて下さい。。。
フリーのVB6ランタイムでは駄目なのでしょうか?
でも、私以外のマシンではエラーが出てません。
何故私のマシンだけ駄目なのでしょうか?(T_T
どなたか分かる方がいましたらお願い致します。
開発環境:Win2000 VB6(SP4)
>>397 THREED32.OCXを消すときに、regsvr32とかで、レジスト削除した?
>>387 こんな感じ?
Private Sub Command1_Click()
Static flag As Boolean
flag = Not flag
If flag Then
MsgBox "aaa"
Else
MsgBox "bbb"
End If
End Sub
>>398 はい。削除しました。。。
で、先程解決しましたので報告致します。
他のTHREED32.OCXがインストールされて正常に動いているマシンから、
vbctrls.regファイルをコピーして実行すると、今まで出ていた
「ライセンス〜」のメッセージが表示されなくなり、
きちんとコンポーネントを貼り付けできるようになりました。
お騒がせ致しました。
ちょっとでも考えてくれた方、本当にありがとうございました。
401 :
デフォルトの名無しさん :01/10/19 18:04
402 :
デフォルトの名無しさん :01/10/19 18:05
403 :
デフォルトの名無しさん :01/10/19 21:34
お聞きしたいことがあります。 会社でLAN環境で使っているパソコンがあるのですが、関係ない部署からのアクセスが多く 困っています。とりあえず、相手が自分の共有フォルダーを開けたら、自分のディスプレイ にメッセージを表示させることとかって可能なのでしょうか? また、相手ディスプレイにメッセージを表示とかってできるのでしょうか? お手数ですが、お時間がありましたらお教えください。 ちなみに私のパソコンはwin98seです。相手は98か2000だと思います。 宜しくお願いします。
>>403 共有しないという選択肢はないのか?
あるいは、ネットワークをかえちまうとか...
405 :
デフォルトの名無しさん :01/10/19 23:15
>>404 禿げしく同感
アクセス権を設定すればいいんじゃないの?
406 :
デフォルトの名無しさん :01/10/19 23:28
これまでVBしかやったことないんだけど、 他の言語やり始めるなら何やれば入りやすいですか。
てゆか、オモキリスレ違いだね。 よそ逝きます。メンゴ。
408 :
403です :01/10/19 23:51
回答ありがとうございます。
いや、ただ単にVBでそういうことってできるのかなー?と思ったので。
>>404 共有しないというのは仕事上できません。
>>405 アクセス権設定しています。
開いてパス要求された状態の時にメッセージが出せて誰かが自分の共有ファイル開いていることがわかったら
いいな、と思ったので。
ネットウォッチャーじゃフォルダ開いただけじゃでないじゃないですか。
うーん、作れないかな〜?
409 :
デフォルトの名無しさん :01/10/20 01:08
VBが標準で使えるクラスの一覧と、そのクラスが持つ メソッド、変数、定数の一覧が見たいんですけど (Javaで言うならJavaDocで生成されたHtmlみたいなもの) そういうのってどこかで見れるものなんですか?
410 :
デフォルトの名無しさん :01/10/20 11:05
MSFlexGridで質問なんすけど、 セル内の内容が数字で始まると右寄せになるんですけど 左寄せにする方法あります? 頭に数字以外いれるのは無しで・・・
411 :
デフォルトの名無しさん :01/10/20 14:29
FixedAlignment ってのヘルプで見て見れ。
412 :
デフォルトの名無しさん :01/10/20 15:44
ADOを使ってORACLEにアクセスしてるプログラムで 件数が2500件超えるとワトソンが出てしまう・・・ どんな原因が考えられますか?
413 :
デフォルトの名無しさん :01/10/20 17:16
RichTextBoxで直接RTFのコードを入力して 指定キーワードに着色したいんですけど、 うまく置換できません。選択して色変えてると遅くてたまりません。 どうすればいいですか?というかこういう処理をするときは どうするものなんですか?
>>413 そんなにおせーの?どんな検索してんの?
415 :
◆40RVTnT6 :01/10/20 19:20
417 :
デフォルトの名無しさん :01/10/20 21:33
>>411 ありがとございます!!!!!
出来ました。感謝感謝感謝。
これで先へ進める!!!!
>409 定数はAPIビュアーぢゃないかな
>406 MacOSXでObjective-Cをやれ VBをOO的に正しく進化させたら Objective-C + InterfaceBuilder+ProjectBuildeになる(藁
420 :
デフォルトの名無しさん :01/10/21 18:39
ListViewの、現在選択されている場所を数値で返してほしいんですが、 どうすればいいんでしょうか。 普通のListBoxでいう、ListIndexプロパティみたいなものが欲しいんですが。
うーん、登録アイテム数でループ回してSelectedプロパティがTrueなところ探したらできました。 まあこれでも動くんですが、なんかもっと効率のいい方法はないんでしょうか。
422 :
デフォルトの名無しさん :01/10/21 20:03
VBをやろうと思って、VB6.0proを買おうと思うんですけど、 もうすぐver7.0が出るって事はないですよね?初心者な質問でスマソ。 あと、初学者にわかりやすい入門書があったら出版社名だけでもいい ので教えてください。教えて君ですみません
>>420 VB素人なんではずしてるかもしれないけど、ListViewにLVM_GETNEXTITEMメッセージを
送って問い合わせることはできないのですか。
すいません。見つけました。 VB.NET(日本語版)2002年第一四半期発売ですね。
426 :
デフォルトの名無しさん :01/10/21 23:39
VBAネタかつ、超初心者で申し訳ないんですが Excelでワークシートを追加するときに同名のシートがあれば 削除したいのですが、このワークシートの有無を確認するのは どうすればいいのでしょうか?
あー、もうどうだっていいよ。
日本語名使えるんだから、 Function ワークシートが存在する?() As Bool って関数作れや。>M$
Range(Cells(1, 9), Cells(105, 11)).Select: Selection.ClearContents Call 実験題目などの表示実験3: '-----既表示のものを消去と実験題目などの表示----- ' -----プログラム本体------------------------------------------------- Dim x As String: Dim i As Integer: '-----変数型の宣言----- i = 0: Epc = 10 ^ (-6): Pi = 3.14592654: '-----初期値の設定----- ' -----初期値x0およびx1を入力・表示----- Cells(3, 9).Select: xL = InputBox("初期値x0の値を入力せよ。"): ActiveCell.FormulaR1C1 = xL Cells(3, 10).Select: xU = InputBox("初期値x1の値を入力せよ。"): ActiveCell.FormulaR1C1 = xU Range(Cells(3, 9), Cells(3, 10)).Select: Selection.NumberFormatLocal = "0.00_" xs = xL: 関数fx xs, fxs, Pi: yL = fxs: xs = xU: 関数fx xs, fxs, Pi: yU = fxs ' -----変数x値と関数f(x)値の取得(計算)の繰り返し、途中経過の出力(セルへの表示)----- Do: i = i + 1: xs0 = xs: Cells(4 + i, 9).Select: ActiveCell.FormulaR1C1 = i 変数x xL, xU, yL, yU, xs: Cells(4 + i, 10).Select: ActiveCell.FormulaR1C1 = xs 関数fx xs, fxs, Pi: Cells(4 + i, 11).Select: ActiveCell.FormulaR1C1 = fxs Range(Cells(4 + i, 10), Cells(4 + i, 11)).Select: Selection.NumberFormatLocal = "0.000000_" If fxs * yL < 0 Then xU = xs: yU = fxs Else xL = xs: yL = fxs End If Loop Until Abs(xs - xs0) = Epc Or Abs(xs - xs0) < Epc Or i = 100 xs = Round(xs, 6): x = CStr(i) + "回の繰り返し計算により、x=" + CStr(xs) + "が得られました。" Cells(5 + 1, 9).Select: ActiveCell.FormulaR1C1 = x ・・・・・・・・・ ↑のようにプログラミングしたのですが、 「実行時エラー'1004'RangeクラスのNumberFormatLocalプロパティを設定できません 」 というのが出てきます。理由がわからないので誰か教えて下さい。お願いします。
プログラム以前の問題かもしれなのですがご指導ください。 VB5でWinsock.ocxを使ったチャットソフトを組もうとしたのですが クライアント側から接続要求してもサーバ側のイベントが発生しません。 サーバ側−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− Private Sub Form_Load() Winsock1.LocalPort = 2000 Winsock1.Listen End Sub '接続要求アリ Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long) If Winsock1.State <> sckClosed Then Winsock1.Close text3.text="接続しました。" Winsock1.Accept requestID End Sub クライアント側−−−−−−−−−−−−−−−−−−−−−−−−−−− Private Sub Command1_Click() Winsock1.Close Winsock1.RemoteHost = "127.0.0.1" Winsock1.RemotePort = 2000 Winsock1.Connect End Sub 上記のようなコードです。必要な設定などありましたらご指導お願いします。 (PC間はPciのUSBリンクケーブルで直接つないでいます。)
431 :
デフォルトの名無しさん :01/10/22 13:18
モードレスで開いたフォームが、今開いているかどうかを 調べる方法がわからないのですが、どうすればいいでしょうか?
>>429 まず先に、その汚ねぇソースを何とかしろや。
スプレッドのシート印刷での用紙サイズの指定方法を探しています。 用紙の方向はPrintOrientationで指定できるのですが、 用紙のサイズをどこで指定したらよいのかわかりません。 教えてちゃんですみませんが、よろしくおねがいします。
434 :
デフォルトの名無しさん :01/10/22 15:35
テキストボックスのスクロールバーの色を 変えることはできませんかね?
>>434 何で変える必要があるん?
ドキュソなUIにでもするの?(藁
...画面のプロパティいぢればなんとかなるよ、一応。
436 :
デフォルトの名無しさん :01/10/22 17:59
>>435 そうです(藁
友人の子供用にかわいく見せる物をプレゼントするのに
やりたいもので(汗
画面のプロパティならいけますか。ありがとうございました。
スクロール バーだけは色変更できないよー(´Д`;)
438 :
デフォルトの名無しさん :01/10/22 22:43
十進プログラムで振り子運動のプログラムってどうつくるかわかります?
440 :
デフォルトの名無しさん :01/10/23 08:25
リストボックスのアイテムを右クリックで選択するには、 どうしたらいいのでしょうか?
441 :
デフォルトの名無しさん :01/10/23 09:52
他のフォームが開いているかどうかわかる方法ありませんか?
443 :
デフォルトの名無しさん :01/10/23 10:40
>>442 ありがとうございますです。
このAPIへの引数がいまいちわからないのですが
例えば、フォームのオブジェクト名が"formMaster"だった場合
どうなるのでしょう?
hWnd = FindWindowEx(0, 0, vbNullString, "frmMaster")
でいいですか?
>>438 変位を X としよう
力は F=a*Xで働くとする(aは負数)
速度 Vは 力を積分しよう V=V+a*X*dt
変位 Xは 速度を積分しよう X=X+V*dt
dtを0.001 くらいにして、これをループさせてみよう
自己レスです。 できました。ありがとうございました。 hWnd = FindWindowEx(0, Me.hwnd, vbNullString, "マスタメンテ")
446 :
デフォルトの名無しさん :01/10/23 11:09
透明なテキストボックスできますでしょうか? 後ろが透けて見えるものです。 multilineで。
>>446 サブクラス化するかowner drawすれ。
448 :
デフォルトの名無しさん :01/10/23 11:39
VB5でoo4oでOracleに接続して、DBグリッドコントロールにデータを表示させたいのですが、 データの表示のさせ方をご存知の方がいましたらご教授願えないでしょうか。 書籍とI-NETを調べてみたのですが、これ、という答えが見つからなくて。
449 :
デフォルトの名無しさん :01/10/23 12:49
>>447 ふむふむ。そのキーワードで検索してがんばってみます。
ありがとうございました〜。
すいません。質問です。 getFilesizeでファイルサイズを取得したいんですが FileSizeLowに-1が返ってきます。 CreateFileの引数はちゃんと渡してるはずなんですが。
451 :
デフォルトの名無しさん :01/10/23 18:08
質問です。 APIのStretchBltを使っているんですが、拡大表示すると何も表示されません 一昨日までは正しく表示されたのに 何故でしょうか?
452 :
デフォルトの名無しさん :01/10/24 12:26
ららら・ら〜♪ ららら・ら〜♪
>>450 質問する前に hFile != NULL を確認しとけ。
GetFileSize の後に GetLastError() も調べとけ。
>>451 何か変えましたか? (画像、OS、ウィルスを入れたとか)
Cで作成したDLLに2次元配列を持って行きたいんですが、 どうすればよいのでしょうか? やっぱポインタになってしまうの?
455 :
デフォルトの名無しさん :01/10/24 16:30
どなたかVB6.0でのINETコントロールについて教えていただけないでしょうか。 現在webの決まった場所を巡回して内容をファイルに落とすプログラムを作っています。 ところが、そこはcookieを使用しないと、cgiに、はじかれてしまう事がわかりました。 色々な所を探した結果、INETコントロールはcookie対応というところまでは分かったのですが、 MSDNにはサーバー側のリファレンスしかありません。クライアント側ではcookieに対応していない のでしょうか?もし対応しているならどのようにセットしたら良いのでしょうか。 よろしくお願いします。
>>453 要らないアプリを一気にアンインストールして
c:\Windows\Tempフォルダにあったでかいファイル(ACE解凍時にできたもの)を削除したくらいです。
それと何故かWinAmpをつけながらやるとしっかり表示されました。
BitBltと、サイズ変更しないStretchBlt(←意味なし)は表示されるんですが…。
457 :
デフォルトの名無しさん :01/10/24 19:21
UNIXのkillをしたいんですけどどうすればいいのでしょうか? プロセスIDは <job> <REFERENCE object="WbemScripting.SWbemLocator"/> <script Language="vbscript"> set objService = getobject("winmgmts:") for each Process in objService.InstancesOf("Win32_process") WScript.echo Process.Name & vbTab & Process.processid Next </script> </job> とわかったんですが、このプロセスを消したいんです。 よろしくお願いします。
>>456 画面と画像は何色でしょう?
コードもお願いします。
>458 画面は16Bitで画像は24Bitです。 だからでしょうか? Sub DrawEnemy(n As Integer, s As Integer, P As Integer, PX As Integer, PY As Integer) Dim EneNO As Integer, Size As Integer, Pause As Integer, PosX As Integer, PosY As Integer NO = n Size = s Pause = P PosX = PX PosY = PY StretchBlt Form1.Picture1.hdc, Ene(NO).LeftPos + PosX, Ene(NO).TopPos + PosY, Ene(NO).XSize * Size, Ene(NO).YSize * Size, Form1.Mons.hdc, 32, 32 * Pause, 32, 32, vbSrcPaint StretchBlt Form1.Picture1.hdc, Ene(NO).LeftPos + PosX, Ene(NO).TopPos + PosY, Ene(NO).XSize * Size, Ene(NO).YSize * Size, Form1.Mons.hdc, 0, 32 * Pause, 32, 32, vbSrcAnd End Sub ↑こんなのです ゲーム中で敵キャラを拡大するだけなんですけど
良く分からないけど、GetDeviceCaps の RASTERCAPS の RC_SCALING か?
>> 459 ビットマップをSelectObjectで選択して、 CreateCompatibleDC を呼ぶ方法を使うのかも。 (MSDN の「Scaling an Image」を検索) 詳しいことは分からないけど。
463 :
デフォルトの名無しさん :01/10/25 10:33
SQL文でORDER BY句を指定し、データを順に読み、その都度更新を行いたい のですが、Editの部分で『読み取り専用の結果セットです』とエラーが出て しまいます。(SQLserverをODBC-RDOで読んでいます。) これを回避する方法を御存知の方、教えてください。 よろしくお願いします。
初めましてm(_ _)m WindowsNT4.0の環境下でVisualBasic5を用いて、FDDに挿入されたディスクが2DDか2HDかと言う判別をしたいのですが・・・やり方をご存じの方はおられないでしょうか? 最初は容量で判断しようと思ったのですが、当たり前なんですけども・・・フォーマット前の物もあるのでそれはダメでした。 公開されているAPIは一応一通り読んでみたのですが、該当する機能は見つかりませんでした。(T^T) 一部のフォーマッタでは実現している機能なので技術的に不可能ではないと思うのですが、どうなのでしょうか? 皆様よろしくお願いします。
467 :
デフォルトの名無しさん :01/10/26 11:55
VBのツールバーのようなフォームになったり、メニューになったり する奴はどうやったら実現できますか?
ダイアログバーをドッキング可能にしておく。
469 :
デフォルトの名無しさん :01/10/26 17:10
VB6で、midステートメントを使って文字の置換ができるようなのですが、 元の文字よりも長くなるような置換をするにはどうすれば良いのでしょうか? Midを使って書くと、 a=aabbcc Mid(a,3,2)="ddd" で a="aadddcc" になるようにしたいです。
>>469 それってReplace関数では解決しない?
なら、
Left$(a,2) + "ddd" + Right$(a,2)
では?
471 :
デフォルトの名無しさん :01/10/26 20:07
VBAの質問してもよいでしょうか? Accessで終了する際のイベントを拾いたんですが、 以下のような感じでとれるのかなと思いきや、できませんでした。 Public WithEvents theApp As Application Private Sub theApp_Quit() MsgBox "hoge" End Sub 誰か良い方法伝授していただけないでしょうか? 環境は ACCESS 2000、 Windows 2000 です。 よろしくおねがいします。
472 :
デフォルトの名無しさん :01/10/26 20:14
Applicationオブジェクトの Quitメソッドを使うべし
473 :
デフォルトの名無しさん :01/10/27 17:31
BMPをJPGに変換するフリーのOCXありませんでしょうか? 個人的に使うものなので配布ライセンスなどはいりません。 よろしくです。
>>473 DLLならVectorに転がってるの見たなぁ。
明熊なんとか、っての。
475 :
デフォルトの名無しさん :01/10/27 18:02
>>474 ありました。これ使ってみマース
どうもでしたー
>>430 > Winsock1.RemoteHost = "127.0.0.1"
これが原因ってことは…。んなわけないか
VBのプログラム上で、自分自身のEXEファイルが置かれているパスを返してくれるような関数、及びコード記述キボン
App.Path
479 :
デフォルトの名無しさん :01/10/29 09:25
ADOを使用してVBでPL/SQLをつかいたいのですが できるでしょうか?
>>479 PL/SQLでコーディングしたいという意味?
それとも、PL/SQLでコーディングしたストアド
を走らせたいという意味?
前者なら不可(もしかしたら可かもしれんがオレは知らん。
後者なら可。GOOGLE辺りでサンプルコードを探せばいくらでも
出てくる。
481 :
デフォルトの名無しさん :01/10/29 15:56
480さんありがと 後者でやってみます
482 :
デフォルトの名無しさん :01/10/29 16:29
' FormのLoadイベント Private Sub Form_Load() ' MSCommコントロールの初期設定 mscPort.CommPort = 1 '通信ポートの選択 mscPort.Settings = "9600,n,8,1" '通信条件の設定 mscPort.Handshaking = comRTS 'ハンドシェイクの設定 mscPort.RTSEnable = True 'Request To Send (RTS) ラインを有効にする 'ハードウェアによるハンドシェイク mscPort.SThreshold = 1 ' 送信時スレッショルドの設定 ' 1バイトごとにOnCommイベント発生 mscPort.RThreshold = 1 ' 受信時スレッショルドの設定 ' 送信バッファがからになったらOnCommイベント発生 End Sub これって制御系プログラムの設定らしいのだけど mscPort.SThreshold = 1 からの意味がまったくわかりません!? ほんとにわかりません。教えてください。
>>482 何故MSCommコントロールのリファレンスを読まないのですか?
484 :
◆LqTeQmv2 :01/10/29 16:59
tes
485 :
◆tjFCOGEI :01/10/29 16:59
\
486 :
デフォルトの名無しさん :01/10/29 20:20
MSアクセスへの接続方法で一番速い組み合わせはなんですか? ドライバ、プロバイダ等あげていただければ助かります。 ちなみに参考書などで速いと書かれているADO接続よりも、 実験の結果はDAOの方が速かったです。 わけわかりません。。お願いします。
>ちなみに参考書などで速いと書かれているADO接続よりも、 >実験の結果はDAOの方が速かったです。 実験の失敗です。ADOが最速。 パラメータの全組合わせ結果ではADOが最速となる。
ローカルにMDBがあるという前提ならDAOだったはず ソース探してみるわ
489 :
デフォルトの名無しさん :01/10/30 21:50
ストーブが恋しいのでage
490 :
デフォルトの名無しさん :01/10/31 11:26
>>490 さん
ドーモです。
488さんの言うローカルでVB以外にもASPでも平行してアプリを制作しています。
それぞれDAOとADOを使い分ける方法が良いみたいですね。
しかし、プログラムごとに接続が違うのはどうも管理しにくいですね。
接続以外にも開発や保守面など全体的に見直した方がいいかもしれません。。
492 :
デフォルトの名無しさん :01/11/01 13:24
oracle + ADO で画像の格納をしたいのですけど 画像自体のバイナリデータをVBの変数に格納する方法はありませんか?
493 :
超初心者の名無しさん :01/11/01 13:41
あの…ここが初心者質問スレということらしいので 質問させてもらいたいのですが、VBのソフトが ネットで落とせると聞いたのですが、本当に 落とせるのですか??? どなたか優しい方教えてください。
>>493 VB 製のフリーソフトならいっぱいあるよ〜〜 (w
496 :
超初心者の名無しさん :01/11/01 14:03
>>494 さん
>>495 さん
あの、学校で来週、C++のテストがあるので勉強を
しようと思ったのですが、家のパソコンにソフトが
入ってなかったので…。
プログラムは学校の教授のHPから落とせるのですが
ソフトがなかったら、開かないですよね??
ちなみに、WinMXってなんでしょうか??
何も分からなくて、本当にごめんなさい。
何故に C++ のテストで VB ?
498 :
超初心者の名無しさん :01/11/01 14:39
>>497 さん
すみません。間違えましたっ。
VC++でした。
私、本当におバカで・・・。
こないだCDがどこか行ってしまったので、 WinMXでVSSを落とそうとしたけど、誰も持ってなかった。 と思ってたら、MSDNでVS6.0を全部送ってきやがった。
500 :
デフォルトの名無しさん :01/11/02 20:41
テキストボックスに読み込める容量って何KBまでですか? 70KBぐらいだとは思ったんですが・・・その限界が知りたいです。
501 :
デフォルトの名無しさん :01/11/02 20:55
VBのForm座標系ってひょっとして腐ってませんか?
502 :
デフォルトの名無しさん :01/11/02 21:12
twip関連だべ
504 :
デフォルトの名無しさん :01/11/02 23:18
twipの利点はなんですか? いちいちScaleModeをピクセルにすんのが面倒なんですけど。
>>504 >twipの利点はなんですか?
wysiwyg
507 :
デフォルトの名無しさん :01/11/03 10:18
VB + Oracleで組むようになったのですが Oracleとのやり取りがサパーリです。 楽にOracleとやり取りできるクラスモジュールがないでしょうか?
509 :
デフォルトの名無しさん :01/11/03 16:42
設定ファイルの内容によって、表示するコントロール数を変化させていのですが、 動的にフォーム上にTextBoxやCommandButtonをつくる方法がわかりません。 最初からつくって置いとくのはなんだかなと思いましたので、お願いいたします。
>>509 コントロール配列でボタンとかを用意して、Load command1(command1.count)
とかやってほこほこ増やすんじゃ駄目?
>>500 Unicode扱いで64KBじゃなかったっけ?
Windows2000だと64KB制限は無かったような気がするけど。
513 :
デフォルトの名無しさん :01/11/04 23:25
スタートアップにアプリを登録させるにはどうしたらいいのでしょうか? やはり、WindowsのVersionを検出して、その結果によって、 スタートアップフォルダを指定すればいいのでしょうか?
>>513 フォルダなら、SHGetSpecialFolderLocation/Path()
で取れるけど、ショートカットを作るのは面倒だよ。
515 :
デフォルトの名無しさん :01/11/05 11:26
実行可能ファイルが格納されたパスを、その実行可能プログラムの実行時にそのプログラムで取得しようとして、 以下のようにコーディングすると、フォームが参照して開くフォルダのパスが取得されてしまい、 実行可能ファイル自体のパスを取得できないことがあります。 Private Sub Form_Load() MyPath = CurDir$ End Sub 実行可能ファイル自体のパスを確実に取得するにはどうすればよいのでしょうか?
>>515 意味不明。
Formファイルを別のフォルダに置いてるって事?
exeにコンパイルしたら起動直後にApp.Pathで確実に取得できるけど。
517 :
デフォルトの名無しさん :01/11/05 13:05
VBで作ったプログラムを走らせると時計が遅れるという現象が出ます。 原因と対策をご存知のかたいらっしゃますでしょうか?。 OSはWin-98とWin-MEで、6時間動かすと30分くらい遅れます。Win画面 右下の表示も遅れるのですが、パソコンを再起動すると元の正確な時間 に戻ります(つまりハードは遅れていない)。
>>517 間違ってTimeステートメントを使っちゃってるとかゆー、オチじゃあるめーな?
その走らせるプログラムって、どんな作業するソフトさ?
私が作ったプログラムじゃないんで良く分かりません(実は私はビルダーなんで BVも良く分からないんですが)、日付と時間は取って来てます。シリアルで他の 計測器と接続してデータロガーするプログラムです。 Timeステートメントを使うと時計が遅れるんですか?。
>>518 タスクトレイの時計も遅れているんだからこれはMSDOS時代からの仕様だぞ
RTCとは別に割り込みで時刻を管理している
原因はVBアプリで使ってるOCXに行儀の悪いやつがいて、割り込みを邪魔してるのだろう
521 :
デフォルトの名無しさん :01/11/05 16:18
エクスプローラ上でマウスの右クリックしたらでるような メニューを作りたいのですけど、 これはどうやったらよいのでしょうか?
>>513 レジストリに登録すれば良し。
スタートメニューのスタートアップには表示されないけど。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
ここね。
良くウイルスが住み着く(笑
レジストリの操作はAPIを使おう…。
523 :
デフォルトの名無しさん :01/11/06 01:18
リストBOXにフォルダ名表示させて右クリックした時に [削除]とか[リネーム]とかエクスプロラみたいにメニュー表示したいんすけど 一個ずつイベント取得しないと無理ッスか?
524 :
デフォルトの名無しさん :01/11/06 03:13
osのプロダクトキーの取得方法があれば、教えて頂きたい。
525 :
デフォルトの名無しさん :01/11/06 04:28
ヤツパみつかんね。
見つけました。しんど。
>>523 (右クリック使うなら)LBItemFromPtとか使って項目を取得したあと、
ポップアップメニュー呼び出せば、いいだけじゃ?
なにが問題なん? もっと簡略化したいと?
VB.NETでVBAはどうなるの?
530 :
デフォルトの名無しさん :01/11/06 16:10
以下のコードによって、プログラムが格納されたフォルダのパスを取得しようとすると、 フォームが開くフォルダのパスが取得されてしまいます。 Sub Form_Load() MyPath = CurDir$ End Sub プログラムが格納されたフォルダのパスをいつでも取得するにはどのようなコーディングがよいのでしょうか?
>>529 VBは切り捨てられたが、VBA(Office)まで切り捨てはしないだろう。
VBScriptとしてそのまま残るんじゃないか?
もともとマクロでしか使えないような代物だしな。<VB
>>530 App.Path
あー、激しくデジャヴ
533 :
デフォルトの名無しさん :01/11/06 17:07
>>532 ありがとうございます。
試してみます。
534 :
デフォルトの名無しさん :01/11/06 20:05
VBに限ったことではないのですが、複数ソーティングの考え方が知りたいです。 たとえば以下のようなテキストファイルがあったとします。 100 60 123 15 111 20 123 10 これを左の列についてソートし、123のように同じデータがあるときはさらに右の 列についてソートし、結果として以下のようなデータにしたいのです。 100 60 111 20 123 10 123 15
また、こういったデータのソートをする際にデータは当然変数に保持したほうが 高速になるかと思いますが、たとえば100MBとかものすごく大きなデータの場合は どのようにするのが妥当でしょうか。 途中までロードしても全体のソートにはならないし、ファイルをすこしづつ読んで 別途テンポラリファイルに書き出していると非常におそいのです。
>たとえば100MBとかものすごく大きなデータの場合は その位のレベルだったら素直にデータベースにいれて かき回したほうが早いと思うぞ。
すみません。Part3の存在に気が付かず、Part2に書いてしまいました。 以下転載です。 迷惑じゃなかったらメールでください。お願いします。 ******* すいませんだれかVB増強作戦がまとまったパック(バリューパックだったか?) もってませんか?さっきHDDのパーティションきりなおしたら、まちがえてけして しまった! 本家は消滅。 昔ミラーサイトがあったようなけどGoogleで検索してもみつからず・・・
Access2000 で作ったMDBファイルを MS製品アプリがなにもはいってない、OSがNTのマシンにいれておくとき、 クライアントをVB6で作って、DBはオラクルみたいに、上のmdbにあたっち することは可能でしょうか? クライアント数は10です
DBに入れたりDOSコマンドを使ったんじゃ勉強になりません。。。
>>540 勉強だったらbogosortなんてのは?
>>540 とりあえず、自分の思った通りにやってみたら。
まずは、そこからでしょ。
ソートで検索すれば?
542さん、本当にありがとうございます。 残念ながらまだ届いていないのですが… もしご迷惑でなかったら再送していただけるでしょうか。すみません。
>>545 送信エラーも出ていないのでもう少し待ってみては?
AirH"で1.8Mのメール送るのは結構時間かかるのよ(苦笑)
だめなら今夜家帰ってから再送予定。
>>538 > クライアントをVB6で作って、DBはオラクルみたいに、上のmdbにあたっち
> することは可能でしょうか?
可能、というかネットワーク上のファイルにアクセスするだけで実行は
各クライアント上のJetが行うのだからネットワーク分遅いだけ。
ADO使っているんだろうから接続文字列にネットワークパス入れてテストしてみれ
> クライアント数は10です
素直にMSDE使えば?
多分ACCESSをネットワークで運用するよりは幸せになれる筈。
Accessでコーディングするには、 dim db as database dim rs as recorset set db = currentdb set rs = db.openrecordset("Table1",dbopendynaset) とできます。 VBからAccessmdbにアタッチするには、\\test\a.mdb の場所をVBにおしてやり、その中のtable1 をコーディングしなければなりません。 a.mdb を VBに教えてやるにはどうすればいいでしょうか?
548ですが、VBでDAOを使ってAccess2000mdb操作したいのです
はじましてです。VB初心者です。 現在、日記帳を作成しています。Labelに日にち、TextBoxに日記、 を入れようと思います。保存データを 2001/11/8 今日は○○○○○○でした。 (改行) 2001/11/9 今日は△△△△△△でした。 (改行) ・ ・ ・ という風にしました。これをLabelとTextBoxに読み込むには どうしたらいいのでしょうか?○日のデータは○日に、という 感じにしたいところが、よくわかりません。
↑ ちなみに表示画面に進むボタンと戻るボタンを作って、次の日 と、前の日の表示が出来るようにしてあります。
552 :
デフォルトの名無しさん :01/11/08 16:20
変数を日本語で書いてる参考書を買って来たんですがこれは駄目ですか?
おしえてぇ〜age
このスレは質問者数と回答者数のバランスが崩れて崩壊しています。
はじめまして。よろしくお願いします。 VBで、sendkeys を使ったプログラムを書いていますが、 「半角/全角」を操作する方法がわかりません。sendkeys では無理でしょうか。 キーボードの「Alt+半角/全角」 以外で、任意に半角/全角の切り替えをする方法を 教えて下さい。お願いします。
557 :
デフォルトの名無しさん :01/11/08 16:52
>>550 まずそのデータ構造やめといたほうがいい。
別に日記に改行入れないならいいけど。
ま、適当にInStrで改行コードを検索して配列にでもぶち込んでみましょう。
こーいうのは自分で考えないとダメです。
558 :
デフォルトの名無しさん :01/11/08 16:53
>>549 こういったこと?
Private Sub Form_Load()
Dim db As Database
Dim rs As Recordset
Set db = OpenDatabase("\\fooserver\d\db\test.mdb")
Set rs = db.OpenRecordset("select * from 得意先 where 得意先CD='00200'", dbOpenDynaset, dbReadOnly)
Text1.Text = rs.Fields("得意先CD").Value
Text2.Text = rs.Fields("得意先名").Value
rs.Close
db.Close
End Sub
一つ回答しないと、一つ質問できないようなシステムにできんもんかのぉ
↑は俺 しかもsage忘れ
561 :
デフォルトの名無しさん :01/11/08 16:55
ズレた...もういいや(藁
>>553 CSVか固定長テキストで1日1行に保存しとけばよかったのに・・・
データってTXTファイルだよね?
fileNo = FreeFile
Open openfile For Input As fileNo
Do Until EOF(fileNo)
Line Input #fileNo, tmpString
if tmpstring = 表示したい日 then
Label.caption = tmpstring
Line Input #fileNo, tmpString
TextBox.Text = tmpstring
Exit Do
End IF
Loop
Close fileNo
こんなんでどうだろうか。
日記の中身が複数行ならtmpstringが""になるまでループを回す。
でも行数が多いと効率悪いね。それにずれてたりしたらやだね。
>>550 楽してDB使え。
Jet(ACCESSと同じDBエンジン)なら標準で使える。
あくまでテキストなら CSV(タブ区切りでも良いが)にすると
split関数で簡単に日付部と日記本文とに分けられる。
データ構造は例えばこんなの
2001/11/06,ユーザーのHDDがあぼ〜ん
2001/11/07,漸く仕様が出始める、月末納期ってマジですか(T_T)
2001/11/08,現実逃避にVBスレを見る。ちょっとコメント。
レス中に一気にレスがついてた・・・ しかも半角スペースは出せないんだった・・・ 質問の内容からして解答を理解してもらえるのかが不安だ。
しかも大文字小文字がバラバラ 鬱
568 :
デフォルトの名無しさん :01/11/08 17:22
ところで、VBのエディタのフォントをOsakaにすると イイ(・∀・)! よ。
569 :
デフォルトの名無しさん :01/11/08 22:57
Accessの表形式のFormをVBで実現するのは無理でしょうか? ちなみに、VB5(SP3) DBGridは全然ダメでした。2段表示とかもできないし
>569 素直にサードパーティのOCXを使った方が幸せになれると思われ。 標準のコントロールを使って自前でグリッド作るという手もあるが...
542 さんへ 無事受信、マージできました。 このたびはいろいろとありがとうございます。 お手数をかけて申し訳ありませんでした。
572 :
デフォルトの名無しさん :01/11/09 06:29
はじめまして。
ええと。VBで、データベース内検索を作りたいんですけど、
半角と全角と大文字と小文字(a、A、a、A)を同一視って出来ないっすか?
>>568 Win環境でOsaka使えるようになたの?
VB増強作戦Googleキャッシュ、WebArchive探しても無いっすね 本とか出てるんでしょうか?
Labelが1〜9まであるのですが(コントロール配列ではない) それぞれのcaptionの中身をfor文か何かで一気に見たいのですが どうすればよいのでしょうか?
>>571 よかった(^^ゞ
結構需要あるんかなぁ>VB増強作戦の補完
WinMX辺りではこういったのは引っかからない?
>>572 StrConv関数を使用すると幸せになれるかも。
577 :
デフォルトの名無しさん :01/11/09 09:48
>>574 検索対象に含めたいコントロールのTAGプロパティに"1"をセット(まぁ別に何でも良い)
でこんな風に
Private Sub Command1_Click()
Dim ctl As Control
For Each ctl In Form1.Controls
If ctl.Tag = "1" Then
Debug.Print ctl & Now
End If
Next
End Sub
>Debug.Print ctl & Now あ、Nowいらねー。
557さん>返答ありがとうございます。いろいろ考えたんですけど混乱してしまって。 564さん>返答ありがとうございます。鬱にならないで下さい。うれしかったです。 565さん>返答ありがとうございます。DB,Jetを使ったことがないもので・・・。(恥 問題は、なんとか解決しました。一応VBの練習のためにカレンダーと 合わせて作成していたのでとても勉強になりました。 みなさんアドバイスありがとうございました。
>>579 VB勉強するなら一緒にJetとかDBも勉強した方がいいよ。
他にも色々な方法があるけど
どういう状況ではどういう方法がベストかという事を選べるようになってね。
564さん>わかりました。頑張ります!
582 :
デフォルトの名無しさん :01/11/09 11:13
質問です。 If 式1 Or 式2 then というようなコードを書きたいのですが 式1がTrueなら式2はエラーになるようになっています。 具体例としては 式1:レコードセットがEOFになっている または 式2:あるフィールドがある値になっている 時に分岐させたいのです。 Cとかだったら1式が真なら2式は評価されなかったと思うのですが VBでやると2つとも評価されてしまいます。 これを防ぐ手は有りませんか?
583 :
デフォルトの名無しさん :01/11/09 11:20
VBの開発環境というか画面なんですけど、あれってバラバラにならない ものですか? メニューバーと各ツール用のブラウザやは分離できるんですけど、メニ ューバーとコードを入力する画面がどうしても分離できません。 コード入力画面もひとつのパレットのように扱いたいのです。 暇を見つけては設定とかを覗いてるんですが、実現できません。 つまらない質問ですが、ご存知の方おられましたらお教えください。
>580 最終目標はVBがダメだということに気づくことですか?w >582 無理です。仕様です。 諦めて処理の軽いものから評価しましょう。
>>583 「ツール」→「オプション」→「詳細設定」の"SDI開発環境"をチェック
>>584 ありがとうございます。
やっぱりそうなんですか。
同じ処理させたいならGoto文なんかで飛ばすしかないようですね。
>>584 >最終目標はVBがダメだということに気づくことですか?w
って書こうと思ったけど止めたのに・・・書いてるとこ見てた?(藁
業務アプリのフロントエンドとかだったら
Excelとかとの連携も楽だし、VBでもいいんじゃないかな。
というか他の使い道は自分はしないもので・・・
>>581 趣味ならDBつかって家計簿とかも素敵やん。
漏れは最初勉強がてら作ってみた。
作るより使いつづける(毎日つける)方が面倒で難しかった。
>>585 出来ました。ありがとうございます。
狭い画面で使用しているもので、これでスッキリしました。
本当にありがとうございます。
590 :
デフォルトの名無しさん :01/11/09 15:11
>>570 え?何処かそういうOCXだしてるんですか?
もし知ってたら、メーカ教えてください
558 thank you
どうやら WINMX 上にもないみたいです。 貴重なファイル、ありがとうございました。
>>593 わざわざ探してくれたのね(^^ゞスマン
>>574 >>577 の方法でもいいけど、Nameプロパティ使った方がスマートかも。
Private Sub Command1_Click()
Dim ctl As Control
For Each ctl In Form1.Controls
If ctl.Name Like "Label[1-9]" Then
Debug.Print ctl.Caption
End If
Next
End Sub
VBで、しかも適切にエラー処理をしているにもかかわらず エラーが出て、異常終了してしまいます。 しかもアプリケーションログを書きこんでいますっていうダイアログが でてきてしまいます。 これって一体どういう時に起こるものなのですかねぇ。 ちなみにウインドウのフック、アンフックをつかってCallWindowProcで イベントを拾っています。
597 :
デフォルトの名無しさん :01/11/12 13:28
新スレ立てるバカが多いのであげ。
598 :
デフォルトの名無しさん :01/11/12 13:31
VBのexeで返り値を返すことってできますか? できるとしたらその方法は?
599 :
デフォルトの名無しさん :01/11/12 14:36
ACCESS 2.0です。以前は97を使っていたのでてこずっています。 レポート上のテキストボックス"項番1"〜"項番18"まで、RECORDSETから値の代入を 行いたいのですが、下のような文では上手くいきません。 Do Until Myset.eof a = a + 1 Reports![送品案内状]!([項番]&a) = Myset!項番 Myset.MoveNext Loop ([項番]&a)の内容を"項番1"〜"項番18"まで変化させたいのですが。 どなたか御教授願います。
600 :
デフォルトの名無しさん :01/11/12 15:00
コードが長くて恐縮ですが、これを実行して生成されるf1.tmp〜fn.tmpとfiles.tmpは、 Shell関数で呼び出して実行するjoinfls.exeで読み取るはずですが、 読み取られません。 joinfils.exe自体は実行されてるのに、このコードを実行中は読み取られないのです。 f1.tmp〜fn.tmpとfiles.tmpの生成後にExplorerでjoinfls.exeをダブルクリックすると 正常に読み取られます。 実行時に読み取られるようにするには、どうすればよいのでしょうか? Private Sub Command1_Click() '結合するファイル名をExcelから読んでfiles.tmpに書き込む Open AppPath & "\files.tmp" For Output As #1 nofiles = 1 FileName = ExcelBook.Worksheets("Sheet1").Cells(nofiles, 1).Value Do While FileName <> "" Print #1, FileName nofiles = nofiles + 1 FileName = ExcelBook.Worksheets("Sheet1").Cells(nofiles, 1).Value Loop Close #1 '結合するファイルをfn.tmpとしてカレントディレクトリレクトにコピーする Set MyFile = CreateObject("Scripting.FileSystemObject") nofiles = 1 FileName = ExcelBook.Worksheets("Sheet1").Cells(nofiles, 1).Value Do While FileName <> "" FullPath = AppPath & "\f" & nofiles & ".tmp" Set f = MyFile.GetFile(SrcPath & "\" & FileName) f.Copy FullPath nofiles = nofiles + 1 FileName = ExcelBook.Worksheets("Sheet1").Cells(nofiles, 1).Value Loop ExcelObject.quit Set ExcelObject = Nothing '別のプログラムによりファイルを読み取ろうとするが、読まれない(実行はする) RetVal = Shell(AppPath & "\Joinfls.exe") End End Sub
601 :
デフォルトの名無しさん :01/11/12 15:33
>>599 600のFullNameでも同様のことをしていますが
Dim Koban as String
Do while a < 18
Koban = "項番" & a
a = a + 1
Loop
ではいかかでしょうか?600の質問者より
>601 ありがとうございます。普通に考えればそれでよさそうなものですが Reports![送品案内状]!変数 =Myset!項番 とすると、プログラム上変数をテキストボックスの名前として扱ってるみたいなんですよね。 601さんの例だと koban です。変数の中身を使用したいのですが・・・。
603 :
デフォルトの名無しさん :01/11/12 20:06
フォームの中にフォームは入れれないのですか?
604 :
デフォルトの名無しさん :01/11/12 20:53
605 :
デフォルトの名無しさん :01/11/12 21:00
>>596 >VBで、しかも適切にエラー処理をしているにもかかわらず
>エラーが出て、異常終了してしまいます。
明らかにAPIを誤用したときの症状。
引数の型違いとかだとVBのエラー処理に関係なくメモリ内容をぶっ壊すよ。
生兵法は怪我の元だからちゃんとした参考書読もう。
607 :
デフォルトの名無しさん :01/11/13 13:21
Microsoft Internet ControlsのWebBrowserを使って 現在表示しているページのソースを テキストボックスに表示する事は出来ますでしょうか? WININETを使ってやるしかないのかな
Text1.Text = WebBrowser.Document.body.parentelement.innerhtml で表示されぬかえ? ウォッチと井ミディエイトで調べただけなので、違ってたらスマソ
>>604 それが良いかと。俺はそうしているよ。
*ついで*に2chの巡回も出来るしgoogleも使えるしね。
610 :
デフォルトの名無しさん :01/11/13 14:39
従来のファイル操作から、FSOを使用する方法にプログラムを書き換える メリットはありますか 色々試してみたところ、速度的にはまったく変わらないようですし まあFSOはAPIレスで色々なファイルなどの情報を得られるんですが わざわざ書き換えてまで使うほどのものでしょうか。 時期VerではFSOしか使えなくなるなら話は別ですが・・・
>>610 わざわざ書き換えてまで使用するモンでもないような...
これから作るプログラムでは積極的に使用する様にしてるけど
(コード書くのが楽なんで)
>>609 どうもです。
ドキュメントの可搬性ではオープンソース系の方が優れているかなぁ(PHP 最高)
VBはじめて2週間の者ですが質問です。 フォームの中にテキストボックスを入れて、そのテキストボックスが フォーム上自由にドラッグドロップで移動できるようなプログラミングは 可能でしょうか? DRAGモードプロパティを「自動」に設定するところまでは分かったのですが、 それからまるで進みません。 ご存じの方ぜひ教えてください。
614 :
デフォルトの名無しさん :01/11/13 23:12
PL/SQLでHTMLを作成するプログラムでプルダウンメニューを 作りたいときに以下のような感じでその部分のソースを 書いてるんですがコンパイルするとハングしてしまいます。 選択項目が5行以内だとうまくコンパイルできるのですが 5行以上だとうまくコンパイルできません。 SETする文字列(又は行数)に長さの制限とかあるのでしょうか? わからんです・・・。 この辺りのこととか詳しく解説してあるHPってないんでしょうか? Webアプリケーション開発系のページさがしたけどみつからなくって・・・。 ──────────────────────── htf.formSelectOpen('str', '題目'); htf.formSelectOption('', 'select', 'VALUE="A"'); htf.formSelectOption('1:長めの文字列1', null, 'VALUE="B"'); htf.formSelectOption('2:長めの文字列2', null, 'VALUE="C"'); htf.formSelectOption('3:長めの文字列3', null, 'VALUE="D"'); htf.formSelectOption('4:長めの文字列4', null, 'VALUE="E"'); htf.formSelectOption('5:長めの文字列5', null, 'VALUE="F"'); htf.formSelectClose;
スレ間違えました すいません
>>614 ドラッグドロップで「位置」を動かすこととに
Dragプロパティは使えねぇよ。
MouseDown/MouseMoveイベントと
Moveメソッド使って自分で制御するしかないな。
Private mTextBoxPosX As Long
Private mTextBoxPosY As Long
Private Sub Text1_MouseDown( ...略
If Button = vbLeftButton Then
mTextBoxPosX = X
mTextBoxPosY = Y
End If
End Sub
Private Sub Text1_MouseMove( ...略
If Button = vbLeftButton Then
With Text1
.Move .Left + X - mTextBoxPosX, _
.Top + Y - mTextBoxPosY
End With
End If
End Sub
マウスで文字選択はできなくなるし
反感買うだけのインターフェースになると思うけどな。
親の遺言でどうしてもそうしたいなら止めないけど。
618 :
デフォルトの名無しさん :01/11/14 01:42
Private Sub Command1_Click() Dim a, b As Long a = 2 b = 1 Call KK(a, b) End Sub Private Sub KK(ByRef P As Long, ByRef Q As Long) Dim i As Long If P > Q Then i = Q Q = P P = i End If End Sub 引数の方が一致しないと言われます。
>>618 TypeName 使って a と b の型を見てみな。
integerになってますね。 うーむ
>>618 =620
a = "ABC" ってやってみ。
Private Sub Command2_Click() Dim a As Integer, b As Integer a = 900 b = 400 Call TestSub_ByRef(a, b) Debug.Print a, b End Sub Sub TestSub_ByRef(ByRef m As Integer, ByRef n As Integer) m = 100 n = 200 End Sub ならエラーが出ないようです。 ウーム。。。
できたYO Dim a As Long, b As Long だね。 いままでずっと間違えてたYO。。。
624 :
デフォルトの名無しさん :01/11/14 03:48
Randomize Do SavePicture Me.Image,"C:\" & Rnd & ".bmp" DoEvents Loop
625 :
デフォルトの名無しさん :01/11/14 06:26
初心者です。 Classってのを昨日知ったんですけど、やってみても全然ダメで・・・。 詳しく書かれたWebサイトか書籍ご存じないでしょうか。
ヘルプ
628 :
デフォルトの名無しさん :01/11/14 12:03
>>608 返答遅れてすみません。出来そうなんですが・・・
ローカルにApacheを立ててVBで以下のコードのみ書いて実行したのですが、
"オブジェクト変数またはWithブロック変数が設定されていません。"
といわれておちてしまいます。何がいけないのでしょう?
デバッグ押して開始押すとそのまま実行されるし・・・
Dim strHTML As String
Private Sub Form_Load()
WebBrowser1.Navigate2 "
http://127.0.0.1/ "
Text1.Text = WebBrowser1.Document.body.parentelement.innerhtml
End Sub
>>628 それはForm_Loadイベントの発生時点ではHTMLが開き終わって無いからだよん
開き終わって無い=DocumentオブジェクトかBodyオブジェクトが生成されて無い
って事になるんだな。どっちなのかは調べてみないとわからんけど(ぉ
開いたページのソースを、すぐに開く必要がないなら、FormにCommandButtonでも
貼り付けて、そこに「Text1.text 〜」を書くがよろしぃかと。
開いたHTMLのソースを直ちに表示させたいのなら、WebBrowserコントロールの
「ページを開き終わったイベント」の中で表示させるべし!
どのイベントなのかは、イベント一覧見ればわかるよね、きっと
>>629 に追加
Document.body.parentElement.innerHTML
の部分ですが、他にも色々な書き方があるみたいですね・・・
イパーイありすぎてヲチではもう何が何やら(w
とりあえず、一番単純な表記だと
Document.activeElement.innerHTML
かな?ただ、これだとフレームの中のHTMLのソースは取れ無さそう
631 :
デフォルトの名無しさん :01/11/14 14:08
複数のフォームを一枚の紙に印刷したいんですけど、 うまい方法がわかりません。 例えば、A4の紙を上下で分けて、上には宛名、 下には本文を印刷します。 (宛名と本文のフォームが分かれています。) 2回印刷すればできますが、これを1発で済ます方法はないものでしょうか?
>631 よくわからんが、それらの項目をまとめたフォームを 印刷用として作っておけばいいだけの話? というより素直に帳票ツール使ったほうがヨイのでわ...
633 :
デフォルトの名無しさん :01/11/14 15:11
Accessのmdbファイルと言うのはデータを何行まで格納できるのですか
634 :
デフォルトの名無しさん :01/11/14 15:26
アクセスのデータベースを使用していて、数値の入った2つの列から それぞれ最大の値を取得するにはどうしたらいいでしょうか。 たとえば以下のようなデータがあってここからData1の中で最大のものと Data2の中で最大のものを取得したいです。 Data1 Data2 51 65 2 78 60 13 . . . . SQLなどで簡単にそれだけを 抜き出せるのかなとも思いますが、よくわかりません。
>>633 何行っていうのが「フィールド内に」なのか「レコード数」なのか
何なのかわからないが、
[Microsoft Access Help]-[キーワード]タブ
「サイズ, 制限」
から調べろ!
#これくらいは自分で調べられるようにしとけや( ゚Д゚)ゴルァ!
#これを見つけるまで5分もかからなかったぞ( ゚Д゚)ゴルァ!
#意味取り違えてたらスマソだ( ゚Д゚)ゴルァ!
>>634 SELECT MAX0(table1.Data1),MAX(table1Ddata2) FROM table1;
ok?■
>>634 グループ関数を使え。後は自分で調べな。
WebProg板で聞いたほうがいいんじゃないの?
>>632 レスありがとうございます。
わかりにくい文でスミマセンm(_ _)m
1つのコマンドボタンで、2つのフォームを同じ紙に印刷したいって事なんです。
>>631 PrintFormメソッドつかてるなら、
PaintPictureメソッドでobjectを1コ1コ描画しる(文字列だけなら
Printメソド)でどう?
ってか
>>632 に禿同。
>>641 ありがとうございます。早速試してみます。
私も個人的には
>>632 に同意なんですけど、上の方が・・・。
今回のが一段落したら作り替えてやろうと思います。
>>630 608殿
親切丁寧にありがとうございます。
DocumentCompleteですね。
ちゃんと表示出来ました。感謝感謝です。
644 :
デフォルトの名無しさん :01/11/14 23:28
VBのフォーム上で台形を描画して、その中を塗り潰したいんですが どうしたらいいでしょうか。本当に切実に悩んでます。
645 :
デフォルトの名無しさん :01/11/15 00:51
>>644 Polygon APIしたあとにFloodFillEx APIしてみると吉。
646 :
デフォルトの名無しさん :01/11/15 10:13
Visual Studio InstallerでVBのインストーラを作って配布しています。 ソフトのバージョンが上がり、再度インストーラのパックを作ってそれを 使って再インストールしても、インストールは正常にできるのにソフトは 従来のバージョンのままでVerUPされませんでした。 一旦アンインストールしてから、VerUPしたインストーラで入れなおせば できるんですが、これでは非常に面倒です。 なんとかならないでしょうか?
647 :
デフォルトの名無しさん :01/11/15 11:14
VB4で、配列をソートする関数を作ったんですが、 比較関数をCなどの言語の様に分離できますか? (generic化したい) 関数のポインタに当たる機構が無い様な気がするのですが、、
648 :
デフォルトの名無しさん :01/11/15 11:23
(I can read Japanse letters, not type them,though. Sorry for any inconvenience) I am making a very small program using Quick Basic(!!) Could you tell me how to scan key input continuously? If no input, the program should procede without asking anything. Maybe a VERY stupid question... but I really would appreciate a responce. Thank you in advance!
何度もすいません。SQLで "SELECT Data1 FROM Table;" のようにすると Data1のデータがすべて抽出できますが、"SELECT MAX(Data1) FROM Table;" に すると「このコレクションには項目がありません」エラーがでて取得できません。 そもそも debug.print recHoge!Data1 のようなやり方ではダメなのでしょうか
650 :
初心者厨房 :01/11/15 12:23
本当に、今マジで困ってます。 さっきから何度もやっているのですが、どうしても文字数が30でストップして しまいます。 ここにソースを貼るのでもし分かる人がいたら申し訳ないのですが 初心者の僕でも分かるような説明をしていただけませんか? re = Split(Module1.SendCSV, ",") j = 0 '読み込んだファイルをコントロールに格納していく For i = 1 To 5 imText1(i).Text = re(13 + j) Combo13(i).Text = re(14 + j) Combo12(i).Text = re(15 + j) imText2(i).Text = re(16 + j) Combo9(i).Text = re(17 + j) Combo6(i).Text = re(18 + j) imText4(i).Text = re(19 + j) Combo11(i).Text = re(20 + j) Combo10(i).Text = re(21 + j) imText3(i).Text = re(22 + j) Combo7(i).Text = re(23 + j) Combo8(i).Text = re(24 + j) imText5(i).Text = re(25 + j) imText6(i).Text = re(26 + j) imText7(i).Text = re(27 + j) imText8(i).Text = re(28 + j) imText9(i).Text = re(29 + j) imText10(i).Text = re(30 + j) imText11(i).Text = re(31 + j) imText12(i).Text = re(32 + j) imText13(i).Text = re(33 + j) imText14(i).Text = re(34 + j) imText15(i).Text = re(35 + j) imText16(i).Text = re(36 + j) imText17(i).Text = re(37 + j) j = j + 25 Next 'まだまだ格納 Combo1.Text = re(138) Combo2.Text = re(139) Combo3.Text = re(140) Combo4.Text = re(141) Combo5.Text = re(142) For i = 0 To 11 imText18(i).Text = re(143 + i) Next
本当に教えてもらいたいのでage!
>>496 Accessのヘルプで「SQL, Jet 予約語」を開き「As」について調べよ
さすれば道は開かれん
いきなりSQL書いた漏れがアフォでした。スマソ
>>650 >どうしても文字数が30でストップ
下のソースからでは意味不明
とりあえず「j = 0」の行にブレークポイントを張り、ウォッチで「re」の中を確認すべし
期待しているものと違う状態になっているものと思われる
653 :
デフォルトの名無しさん :01/11/15 13:40
>>646 実行ファイルのバージョン(プロジェクトのプロパティで
指定するやつ)、ちゃんと指定してる?
Private Sub MakeCSV() Call Check_Mon If Module1.Form5_CSV_Load = 0 Then da = Split(Date, "/") Ye = da(0) Tuki = "04" End If '「CSVファイル」の作成 Const forRe = 1, forWr = 2, forAp = 3 Const TrDefault = -2, TrTrue = -1, TrFalse = 0 Dim F_FLG As Integer 'オブジェクトを作成 Set fs = CreateObject("Scripting.FileSystemObject") '作成するファイル名を変数に格納 No = App.Path & "\csv2\" & "Moku" & Module1.Shain_Code & Module1.Ki & ".csv" 'ファイルを作成 fs.CreateTextFile (No)
'ファイルを開く Set F = fs.GetFile(No) Set ts = F.openastextstream(forWr, TrDefault) AA = "," ts.write "1" & AA ts.write "1" & AA If Module1.Form5_CSV_Load = 0 Then ts.write L_DATE & AA Else ts.write Module1.C_Date & AA End If ts.write Ki & AA ts.write Module1.Shozoku_Code_kami & AA ts.write Module1.Shozoku_Code_shimo & AA ts.write Module1.Shozoku_Busho_kami & AA ts.write Module1.Shozoku_Busho_shimo & AA ts.write Module1.Shain_Code & AA ts.write Module1.Na & AA ts.write Module1.Sei & AA ts.write Module1.Mibun & AA ts.write Module1.Shokugun & AA 'ファイルに書き込み For i = 1 To 5 ts.write imText1(i).Text + AA ts.write Combo13(i).Text + AA ts.write Combo12(i).Text + AA ts.write imText2(i).Text + AA ts.write Combo9(i).Text + AA ts.write Combo6(i).Text + AA ts.write imText4(i).Text + AA ts.write Combo11(i).Text + AA ts.write Combo10(i).Text + AA ts.write imText3(i).Text + AA ts.write Combo7(i).Text + AA ts.write Combo8(i).Text + AA ts.write imText5(i).Text + AA ts.write imText6(i).Text + AA ts.write imText7(i).Text + AA ts.write imText8(i).Text + AA ts.write imText9(i).Text + AA ts.write imText10(i).Text + AA ts.write imText11(i).Text + AA ts.write imText12(i).Text + AA ts.write imText13(i).Text + AA ts.write imText14(i).Text + AA ts.write imText15(i).Text + AA ts.write imText16(i).Text + AA ts.write imText17(i).Text + AA
Next ts.write Combo1.Text + AA ts.write Combo2.Text + AA ts.write Combo3.Text + AA ts.write Combo4.Text + AA ts.write Combo5.Text + AA For j = 0 To 11 ts.write imText18(j).Text + AA Next ts.write Ye + AA ts.write Tuki 'ここまで書き込み 'ファイルへのアクセスを終了 ts.Close End Sub
上記のがさっきからお聞きしているところのソースなんですけど、 やっぱり30以上にすることが出来ません。 お願いです。教えてください。
>>650 >どうしても文字数が30でストップ
同じく意味がわからん。
だから頑張って自分なりに解読してみた。
1:ひょっとしてMaxLengthプロパティーが30になってる?
→でもComboBoxはもっと沢山の文字が入るからこれは違ってそう。
そこでこのプログラムが何をするか考えてみた。
CSVファイルから読み込んだ要素を各テキストボックス、
コンボボックスに分割して格納してるようである。
では30という数字は何を示すのか?
CSVの1レコードの30文字目までを指す
→Module1.SendCSVに問題があるのかも
CSVの各要素がそれぞれ30文字で切れてしまう
→
>>652 の言うようにreの中身をみてみないと解らない。
CSVの30番目の要素までしか表示されない
→ループはちゃんと回ってるようだから多分これではない。
ソースをそのままでなくもっと要点を掻い摘んで書いて欲しい。
155個も要素のあるCSVって何に使うのかってのも個人的に興味がある。
っていうか0から13は使わんのか?
しまったかぶった。
>>657 質問1
止まるというのは正常に終了するけど30で止まるのか
30でエラーを吐いて止まるのかどっち?
質問2
30って何が30?
質問3
ファイルを開いてフォームに表示したいのか
フォームの内容をファイルに書きたいのかどっち?
またはどっちの時も30で止まるの?
>初心者厨房さん ImTextって事はInputmanを使用しているのかな? もしかして、ImText1〜9のどれかに金額を入力させるために、 入力マスクに「#,##0」とか指定してない? この状態でImTextのTextプロパティから1,000と表示されているような値を CSVに出力した場合は、Split関数によりre(0)="1",re(1)="000"と分割されて しまい、その後の項目がずれてしまうためre(30)に予期せぬ値が入って いると思うんですが、どうかな? もしもこれに該当するなら、ImTextのValueプロパティから値を出力し、 画面に表示する時は ImText.Text = Format$(re(i), "#,##0") とやればokだと思うよ。 #Valueプロパティに値を入力できたかどうか記憶にないや(w
662 :
長文失礼します :01/11/15 17:40
以前はWin95でVBを少しかじり、現在はMe機を使っているのですが、久しぶりにVBをやろうと思い VB5.0をMe機にインストールし、以前書いたコモンダイアログコントロールを含むソースコードを 読み込んでみたのですが、「読み込み中にエラーが発生しました」と表示されてしまいました。 で、コンポーネントを見てみると、「Microsoft Common Dialog Control 5.0」の項目はなく、 変わりに「Microsoft Common Dialog Control 6.0(SP3)」にチェックがついていました。 不思議に思い、以前問題なく動いたWin95機で動かそうとしても同じエラーが出て、 コンポーネントを見てみると、「Microsoft Common Dialog Control 5.0」ではなく、 「Microsoft Common Dialog Control 5.0(SP2)」になっていました。 また、新規にコモンダイアログを張り付けようとしても、「このコンポーネントのライセンス情報が 見つかりません。デザイン環境でこの機能を使うために必要なライセンスがありません」と叱られました。 ヘルプを見てみると、 >デザイン時に、ActiveX コントロールをフォームに配置しようとしたか、または ActiveX コントロールを >含むフォームをプロジェクトに追加しようとしましたが、レジストリ内に関連情報がありませんでした。 >レジストリ内の情報が削除されたかまたは破損していることが考えられます。ActiveX コントロールを >再度セットアップするか、コントロールの発売元に問い合わせてください。 とありましたが全くわかりません。解決方法をご存じなら教えて頂きたく思います。
大量の文字列を格納したいのですがstring型だと足りません… Dim テキストの内容 As String Dim 全テキスト As String 〜省略〜 Do Until EOF(ファイル番号) = True Line Input #ファイル番号, テキストの内容 全テキスト = 全テキスト & vbNewLine & テキストの内容 Loop Close #ファイル番号 Text1.Text = 全テキスト 〜省略〜 と言う風にやろうとしてるのですが大量の文字列を読みこんだ時に 「メモリが足りません」となります。こういった場合、どうすれば 宜しいのでしょうか? それともう一つ質問なのですがやはり変数の日本語はまずいでしょうか? たまたま買った初心者用参考書がそうだったもので・・・
>>663 そのテキストって一度に全部読まなきゃ処理出来ないものなの?
なるほど。エイリアスを使ったらちゃんとできました。 自分で最大最小値を得ていたときとは比べ物にならないほど 高速化できました。ありがとうございました。
>>665 さん
無事動くようになりました!ありがとうございます。
>>661 さん。
遅レスで済みませんでした。
ついに出来ました。
本当にありがとうございます。
また機会があったらぜひ教えてください。
>663 VBはどんな2バイト文字でも変数に使える。 が、VB厨になりたくなければ使わない方が良い。 tu-ka,sonohonnyametahougaii
>>664 さん
一度に処理する必要ありませんでした・・
参考書通りに書いたのですが・・
1行づつ読み込んで表示させたら上手くいきました。
ありがとうございます。
>>669 さん
自分も違和感はあったのですがやはり止めたほうが良いようですね。
使わないことにします。ご忠告ありがとうございます。
日本語の変数とか 日本語名のフォルダをプログラムで利用するのは 辞めよう。 俺は初心者の時、これで泣いた
672 :
デフォルトの名無しさん :01/11/15 19:23
ACTIVE Xについてなんですが困っています コモンダイアログのShowOpen系メソッドについてです CommonDialog.Filter = "*.bmp" CommonDialog.ShowOpenの前にこれを設定したとしたら、 ファイルを開くダイアログには拡張子がbmpのファイルしか表示されない んだと思っているのですが、なぜか全てのファイルが表示されています・・・ どこが間違ってますか?
>>672 VBのヘルプを良く読もうYO!
Filterプロパティのヘルプに説明が載ってるYO!
「*.Txt」か「*.bmpまたは*.ico」だけを表示させるサンプルもあったYO!
>>672 Filter = "BMP FILE (*.bmp)"
>>675 ?.Filter = "BMP FILE (*.bmp)|*.bmp" でないかい?
>>647 =674
コールバック処理を行う部分だけ DLL でこさえるか...
或いはいっそのことソート可能な配列クラスでもこさえてみたら?
679 :
デフォルトの名無しさん :01/11/15 20:25
672です。上手くいきました。 みなさん、どうもありがとうございました。
>>676 DLLにしたら、比較関数はどうするんですか?
主にユーザー定義型を比較する事を考えているのですが、
ユーザー定義型をVisualC++などから参照は可能でしょうか?
>>678 VBのクラスを作るという事ですか?
やったことないですが、調べてみます。
#VB5が使えればこんな苦労は無くなるんですが、
#ランタイムの関係で移行できない。VB最悪・・
681 :
デフォルトの名無しさん :01/11/16 01:04
VBでボタンを複数行表示するときに、 AA BB としたい場合プログラムでCommand1.Caption="AA"+chr$(13)+"BB" としているんですが、プロパティエディタで一発で書く方法はありませんか?
>>681 "AA ...(改行が起こるまでスペースで埋める)...BB"
コピペでできる。 1.メモ帳とかに書いてコピー 2.ボタンのCaptionプロパティのところでペースト 以上。
>>681 テキストエディタからCtrl+Vでコピペすればできますね…。
漏れも初めて気づいたよ。
>>680 勢いで書いちゃったけど、VB4ってクラスモジュール使えたっけ?
もし使えるなら...
比較関数のみをメソッドとして持ったクラスのインスタンスを
渡してやる事で関数を渡してやる事も出来る。
かなーり変な実装だけど...
>>685 Cのqsortみたく作りたいんならそれしかないんじゃないかな。
VB4でクラス使えるのかは俺にもわからんが・・・
687 :
デフォルトの名無しさん :01/11/16 02:09
いくつかの要素をもった配列を、定数として宣言したいのですが、 どうすればいいんでしょうか。 Cで言うと、 const char x[3] = { 'a', 'b', 'c' } みたいなことがしたいんですが。
>>688 x[0] = "a" : x[1] = "b" : x[2] = "c"
って書くしかないってことですか。
めんどくさー。
690 :
デフォルトの名無しさん :01/11/16 06:29
質問ッス。助けてください。 1.Msgbox内で「"(ダブルクォーテーション)」を使いたいんですが、 Msgbox = "ああああ"ああああ" って真ん中のダブルコォーテーションまでで切れてエラーになるのを なんとかできませんか。 2.同じくMsgbox内で改行を入れたいんですけど、ヘルプ通りに (Chr(13))を入れても改行されないのは何がダメなんでしょう。。。 3.あと、まぁ、例としてテキストボックスで名前を指定したりして、 VBで新規CSVファイルを作る、なんて出来ますか?
>>690 嫌みじゃなく、なんか1冊本読むといいよ。
日本語を読み上げるVBAを書きたいと思っています。
SAPI 5.1をインストールし、英語を読むことまではできたのですが
日本語はどうやったら読んでくれるのかわかりません。
Text-To-Speech エンジンは
MS Agent から日本語エンジンをダウンロードしています。
実現している(?)ソフトとして
http://www.asahi-net.or.jp/~tz2s-nsmr/spk.html 参照設定に「Microsoft Speech Object Library」
Dim objSpVoice As SpeechLib.SpVoice
Set objSpVoice = CreateObject("SAPI.SpVoice")
Set objSpVoice.Voice = objSpVoice.GetVoices.Item(1)
objSpVoice.Speak ("Ladies and Gentlemen, Boys and Girls. Tokio Disneyland proudly presents")
Set objSpVoice = Nothing
693 :
デフォルトの名無しさん :01/11/16 10:33
文字コード 0x1B は何を表すものなのか解る方いますか DOSのCOPYコマンドで2つのファイルを結合すると、EOFの前に なぜかこれが付いていることに気づきました。
試してみたら 0x1B に限らず、EOFの前に何かランダムな(?)制御コードが入るようです。 なんなんでしょうこれは?
695 :
デフォルトの名無しさん :01/11/16 12:09
>>693 /B オプションを付けてみてはどうでしょう?
>689 定数でなくてもヨイなら x() = Array("1","2","3") という手も...
697 :
デフォルトの名無しさん :01/11/16 13:23
Windows2000(SP2)上のVB6(SP5)のディストリビューションウィザードで セットアップつくったんですが、WinMeの場合のみ、何回セットアップしよう としても ・ファイルの展開 ・「このシステムは一部のファイルが最新ではない・・・」のメッセージ ・再起動が要求される で、実際に再起動して、またセットアップを実行しても 同じメッセージが出て、けっきょくセットアップできません。 ちなみにこの現象が出るようになったのは、Win2000にSP2を 当ててから作ったセットアップのみです。 原因ご存知の方、お教えください。長文すんませんでした m(__)m
>>690 1.
MsgBox "ああああ" & Chr$(34) & "ああああ"
2.
MsgBox "ああああ" & vbCrLf & "ああああ"
または
MsgBox "ああああ" & Chr$(13) & "ああああ"
3.
拡張子が“CSV”のテキストファイル作る
699 :
デフォルトの名無しさん :01/11/16 13:57
>>697 の質問わたしも知りたい。MEでセットアップ作ればいいと
いわれたらそれまでなんだろうけど、98とかではうまくインストール
できちゃうから納得いかない。
700 :
デフォルトの名無しさん :01/11/16 14:07
「IEコンポーネントを使い倒すスレ」にも書きましたが、こちらの方がすぐに返事がくると思い書きこまさせていただきます。 VBでブラウザを作っているのですが、IEのオブジェクト上での右クリックで出てくるメニューを 表示させたくありません。 どのようにすれば規制できるか試行錯誤していますがなかなか解決できていません。 もし、よろしければご指導お願いします。 よろしくお願いしますm(_ _)m
701 :
デフォルトの名無しさん :01/11/16 16:41
SQLを使ってでデータを抽出するときのソート方法の質問です。 TableにXとYの数値が入っており、これをX,Yの小さい順にソートして 読み込みたいです。しかし、「ORDER BY XPoint, YPoint」とすると、 XPointについてソートされるだけで、XPointが同等の値をもっていたら YPointについてソートするようになってしまいます。これではYPointは ほとんどバラバラのままです。 XとYを組み合わせて、以下のようなイメージで並べたいです。 y ↑2122232425 │1617181920 │1112131415 │678910 │12345 +────→x うまく伝わったか心配ですが、お願いいたします。
あー、何かズレました。。。 要は1〜25のように(x,y)をソートしたいと言うことです。
あああああわからない・・ テキストボックスにファイル(.txt)を読み込んで表示したいのですが Inputだと遅いので調べてみたら、InputB、Getがいいとのこと。 InputBだとエラーがでてGetはよくわからない(かなりがんばったのですが) どなたかInputB、もしくはGetを使ったファイル操作を教えていただけないでしょうか・・
>>698 > MsgBox "ああああ" & Chr$(34) & "ああああ"
MsgBox "ああああ""ああああ"
こっちの方が楽だと思われ…。
>>704 Dim abytBuff() as byte
Dim hFile&
Dim strText$
hFile = FreeFile()
Open "hoge.txt" as Binary for hFile
Redim abytBuff( LOF(hFile) - 1 ) 'サイズが0だとエラーになるよ
Get hFile,,abytBuff()
Close hFile
strText = StrConv(abytBuff(),vbUnicode)
こんな感じかな。
>>706 ありがとうございます!
参考にさせていただきます。
本当に助かりました…
>>700 「IEコンポーネントを使い倒すスレ」の22を見てみよう
意味がわかれば、こんな感じになる事がわかると思う。
Private WithEvents HTMLDoc As HTMLDocument
Private Function HTMLDoc_oncontextmenu() As Boolean
PopupMenu mnuMenu '独自メニューを表示
End Function
Private Sub WebBrowser1_NavigateComplete2(ByVal pDisp As Object, URL As Variant)
Set HTMLDoc = pDisp.Document
End Sub
ただしフレームがある場合、これではWebBrowser1で最後に開いたフレーム内の
Documentオブジェクトしか取得する事が出来なかったので、そこから先は自分で
考えてくれ
>>701 かなりテキトーだけど
select x,y,(x + y) as xy from table order by xy,x,y;
で上手くいったりしない?(汗
>>698 勘違いしてそうなので・・・
Chr(13) → vbCr
Chr(10) → vbLf
Chr(13) & Chr(10) → vbCrLf
>>708 なるほどー!! これならできそうですね。
>>691 、
>>698 、
>>705 、
>>708 みなさんありがとうございます。
Chrの後に$が要るんですか。ヘルプには書いていないような・・・。
あと、新規テキストを出力するのすらも分からないのです。
ヒントをお願いしますー。
>>710 Chr$ってのは、文字列型を返すんだな。
Chrだと、Variant型なんだな。
文字列型を明示した方がパフォーマンスが上がったり、わかりやすかったりする
のであえて$つきを使うことがあるね。
Chr以外にも、Trim$とかLeft$とかそんな感じのがいくつもあるよ。
動作自体は、$つきでも無しでもたいして変わらん。
テキスト出力は、Print # とかWrite # とか、Openとかを調べてみよう。
csvで出したいならWrite # ステートメントかな。
Open "hoge.csv" For Output As #1
Write #1,A,B,C,D
Close #1
みたいな。あとは自分で調べよう。
#出力するデータに「"」か「”」が混じってるとInputで読むときにハマるので注意。
712 :
デフォルトの名無しさん :01/11/17 01:53
>692 :不可和 俺作ったけど・・・なんか難しいことあったっけ。 ただ単に英語のエンジンを選択してしまっているだけでしょう。 以下のコードを通せばOK。 Dim i As Long Set oVoice = New TextToSpeech For i = 1 To oVoice.CountEngines If oVoice.LanguageID(i) = 1041 Then '日本語のエンジンに設定 oVoice.Select (i) Exit Sub End If Next End Sub
713 :
VB2年目 :01/11/17 05:39
暗号の勉強をしているんですが、エラーでつまずいてます。 LastDLLErrorプロパティを使ってCryptAPIのエラーを表示させているのですが、そのエラーの意味がわかりません。 表示されるエラーは-2146893819です。数値が異常なような気もするのですが、こう出ます。 このエラーの意味を調べるにはどうすればよいのでしょうか? dllはadvapi32.dllです。 厨房質問かもしれませんがよろしくお願いします。
714 :
Ruby!!!!!!! :01/11/17 07:43
ここにいるVB厨って屠殺して石けんにでもした方が、よっぽど世の中のためになるね。
716 :
デフォルトの名無しさん :01/11/17 16:05
717 :
デフォルトの名無しさん :01/11/17 21:10
DBアプリ開発の時には文化オリエントのGrid 等のActiveX購入は必須 ですか?
719 :
デフォルトの名無しさん :01/11/18 01:48
MDIの子ウィンドウの数を取得したり現在アクティブな子ウィンドウの インデックスを取得するにはどうしたらいいですか。
そういえばVBのフォームってHWND取れるっけ?
>>719 Formsコレクション使って1個ずつフォームをチェックしてけば?
>>719 現在アクティブな子ウィンドウなら
ActiveFormプロパティ
単に数がわかれば良いなら
DoEvents(親も数に含まれる)
Indexは追加された順だったよな気が。
どうしても今のアクティブなFormのIndexが知りたいなら
For i = 0 To Forms.Count - 1
If Forms(i).Caption = ActiveForm.Caption Then
MsgBox i
End If
Next i
とか。だめ?(;´д`)
>717 グリッドなんかはとりあえずいらないけど、帳票系は必須だと思われ。 クリレポなんか使ってたら日が暮れちゃうし。
725 :
デフォルトの名無しさん :01/11/18 13:06
Statusbarコントロールの パネルに画像を表示させる方法はありますでしょうか?
726 :
デフォルトの名無しさん :01/11/18 13:30
InputBでtxtの内容をテキストボックスに表示させています。 1、ファイルサイズ0の時、 2、空白or改行のみ入ってるtxtの時、 3、ファイルサイズが大きい時(650kbでなりました) 以上の時にエラーが出ます。 1についてはすぐに解決できたのですが 2、3の時はどのようにすればいいのでしょうか? 初心者すぎる質問かもしれませんがどうかご教授お願いします。
すいません。自己解決しました
>>723 DoEventsは副作用も起きるから止めた方がいいかも。
Forms.Countでいいんじゃない? 必要ならForで回して、
Forms(i).MDIChildとForms(i).Nameを見て調べる、と。
あと、Captionだと重複とか起きそうだから、hWndを見た方
がいいかもしれない。
>>722 >>723 >>728 ありがとうございます。MDIはぜんぜん慣れてないんで勝手が分からないんです。
こんなのも書けないなんて・・・逝って来ます。
VB6でですね、 label1.caption=r(変数です)&"となる" ってかんじのを実行すると何故かエラーになってしまいます。 label1.caption=r ってかんじなら正しく実行されるんですけど。
>>731 rは別に何でもいいんです。
実行したあとのエラー表示によると、
最後の
"となる"
ってところがダメらしいです。
>>730 変数と、文字列は区別しないと駄目だよ。
Dim r as String
label1.caption= r & "(変数です)となる"
でしょうな。
>>733 いや、そうじゃなくてですね、
(変数です)ってのは、rってのを説明したもので、
実際のコードに入れません。
>>734 あー、なるほど。
label1.caption = r&"となる"
とやったらエラーになった、と。
label1.caption = r & "となる"
ってやってごらん。r の後に半角スペース入れてね。
r& という風に繋げて書くと「Long型の r という変数」って意味になってしまう。
>>735 おお、できました。
超初心者質問に付き合っていただきありがとうございました。
やっぱプログラミングは難しい・・・
すいません。
>>701 ですが、色々やってみたんですけどやっぱり解りません。
何か良い方法はないでしょうか。
>>708 氏の方法ではエラーでうまくいかないようです。
738 :
デフォルトの名無しさん :01/11/19 10:13
>>701 私には、何がやりたいのか良くわかりません。
具体例だしてもらえませんか?
すいません。なんか勘違いしていました。ちょっとお聞きしたいのですが、 「ORDER BY XPoint, YPoint」とすれば、作られたRecordsetの 先頭にXPoint,YPointそれぞれの最小値が、末尾に最大値が 格納されるのでしょうか
740 :
デフォルトの名無しさん :01/11/19 11:54
Visual Studio Installerを使おうとすると必ず以下のエラーが出ます。
<マージ モジュール名> 内の 1 つ以上のファイルがこのマシン上にインストール
されているファイルのバージョンと異なります。
SP5を入れているので最新のマージモジュールを使用しなければならない
ことがわかり、以下のサイトからSP5版のファイルをDLしました。
ttp://www.microsoft.com/japan/developer/VSTUDIO/download/sp/mmoverview.htm DLしたファイルを解凍して、それぞれ以下のフォルダに入れて更新しました。
C:\Program Files\Microsoft Visual Studio\Common\Tools\VSInst\BuildRes
C:\Program Files\Microsoft Visual Studio\Common\Tools\VSInst\BuildRes\1041
しかし、エラーは消えませんでした。これは何が原因かわかりますか。
>>701 =737
>>708 のクエリーをAccessで試してみたら確かに駄目でした
どうやらorder by句の中で別名指定は動かないっぽいので
次のように直したところ実行できましたが・・・
select x,y, (x + y) from table order by 3;
とか
select x,y from table order by (x + y);
または
>>701 の
>これをXYの小さい順にソートして
から考えると
select x,y from table order by (x * y);
になるのかもしれない
それから、DBによって、多少クエリーが変わってきますから
使用しているDBも書いてくれないと困りますよん
#でも、708に書いたものではどのDBでも動かなそう(w
order by (x * y) でバッチリでした。ありがとうございます。 ちなみにDBはアクセスを使っていました。
>703、708 返事送れて申し訳ありません^^; 勉強してみます。 できてもできなくてもまた書き込むのでよろしくお願いします(藁 ではm(_ _)m
744 :
デフォルトの名無しさん :01/11/19 14:27
すいません、VBでワードパッドをオブジェクトとして使う方法はありませんか?
>>717 必須ではないがあった方がかなり楽。
ただ、あまり色々なメーカーの物を混在させない方が良いかも。
746 :
デフォルトの名無しさん :01/11/20 00:18
ディレクトリ移動についてなんですが RarUtyや詩子様とかにデスクトップのショートカットや マイドキュメントのショートカットがありますよね。 あの機能を使いたいのですがどういった風にすればよいのでしょうか? 普通にディレクトリ移動はわかるのですが・・
学校の宿題でVBAの問題が出たんですけど全然わかりません。教えてください。 問題1 3つの整数a,b,cを受取り、それをaI2(2乗)+bx+c=0としてxの解を求める関数「二次方程式」を作れ。 2つの解のうち、いずれか一方を返せばよい ヒント 解の公式を適用する平方根は関数Sqrを使用する 問題2 セル範囲を2つ引数にし、対応するセルの値がすべて同じなら1を、一つでも違うなら0を返す関数「比較」を作れ。 ヒント Function 比較(c1, c2) ここで、セル1つずつを比較する End Function
>>749 何がわからないのかくらい書いたらどうだ。
750 :
デフォルトの名無しさん :01/11/20 04:00
751 :
デフォルトの名無しさん :01/11/20 06:51
>>746 GetSystemDirectoryでパス取得すりゃ、えーんちゃう?
752 :
デフォルトの名無しさん :01/11/20 13:55
DBのテーブル内のデータを全部削除するとき↓よりもスマートな方法はありませんか。 Do Until .EOF .Delete .MoveNext Loop これだと1行ずつ削除しているので、何か一括削除するやり方があると 高速にできそうなのですが。。。
>>752 SQL文(DELETE)を投げる
OracleだったらTRUNCATEでいい。
>>752 先ずSQLを覚えろ。
そうすればかなり幸せになれるぞ。
あー、なんだ。SQLで一瞬で消せました。アホなことしてた。。。 dbHoge.Execute "DELETE * FROM Table;" ありがとうございます。
757 :
デフォルトの名無しさん :01/11/20 15:55
FSOでファイル名の変更はどうやるんでしょうか。 とりあえずMoveFileで実現していますが、 これだとリネームとはちょっと違いますよね。
どこがちがう? moveの特別な場合が、renameと呼ばれる、というだけの話ではないか。
じゃあそれでいいです
760 :
デフォルトの名無しさん :01/11/20 17:39
すんません、ちと質問。 n個の座標群(x(n), y(n))を乱数で作成して、x(n)について降順にソートしたリストをつくりたいんですがなんかうまくいきません。 どなたかご教授を(/_;)
>755 知ってるよ
>>760 何がどううまくいかないのかくらい書いたらどうだ。
(x(n), y(n))をどう構成すればいいのかわからんのですわ。 それぞれは乱数で作れるんだけど、繰り返しでxとyのセットとして格納しておく構造体がぴんとこなくて・・・。 そのあと座標群とnで配列を作ってソートするんだと思うんですが。
764 :
デフォルトの名無しさん :01/11/20 19:07
SJISで書き込む
767 :
長文失礼します :01/11/21 09:56
>>760 こんな感じかな?
' QuickSortの部分はWebで拾ったサンプルのコピペ。
Type POINT
x As Double, y As Double
End Type
Sub main()
Dim i As Long
Dim data(0 To 99) As POINT
For i = 0 To 99
data(i).x = Rnd
data(i).y = Rnd
Next
QuickSort data, LBound(data), UBound(data)
For i = 0 To 99
Debug.Print data(i).x; " "; data(i).y
Next
End Sub
Sub QuickSort(ByRef TargetArray() As POINT, StartArray As Long, EndArray As Long)
Dim Count As Long
Dim LastArray As Long
Dim SwapBuff As POINT
If StartArray >= EndArray Then Exit Sub
SwapBuff = TargetArray(StartArray)
TargetArray(StartArray) = TargetArray((StartArray + EndArray) / 2)
TargetArray((StartArray + EndArray) / 2) = SwapBuff
LastArray = StartArray
For Count = StartArray + 1 To EndArray
If TargetArray(Count).x < TargetArray(StartArray).x Then
LastArray = LastArray + 1
SwapBuff = TargetArray(LastArray)
TargetArray(LastArray) = TargetArray(Count)
TargetArray(Count) = SwapBuff
End If
Next Count
SwapBuff = TargetArray(StartArray)
TargetArray(StartArray) = TargetArray(LastArray)
TargetArray(LastArray) = SwapBuff
Call QuickSort(TargetArray, StartArray, LastArray - 1)
Call QuickSort(TargetArray, LastArray + 1, EndArray)
End Sub
>>761 なら難しくないだろ。その式に当てはめて計算すればいいだけじゃん。
虚数の判定処理は入れたほうがいいと思うけど。
一応、SQR関数のヘルプをコピペしておく。
*************ここから*************
次の例は、Sqr 関数を使って、指定した数値の平方根を計算します。
Dim MySqr
MySqr = Sqr(4) ' 2 を返します。
MySqr = Sqr(23) ' 4.79583152331272 を返します。
MySqr = Sqr(0) ' 0 を返します。
MySqr = Sqr(-4) ' 実行時エラーが発生します。
***************ここまで***************
769 :
デフォルトの名無しさん :01/11/21 12:34
ブラウザ内で右クリックしたときに出るポップアップメニューの 中身を編集するにはどやったらいいんでしょうか〜。 あと、「お気に入り」に追加するときみたいにページのタイトルを取得するやり方もわからない。。。
>>769 ttp://hp.vector.co.jp/authors/VA013453/ ここのkommixを参考にさせてもらってはどうでしょう?
はずしてますか?
もっと簡単でいい方法があるかもしれませんが、
これでタイトル取得できました。
Microsoft Internet Controls(shdocvw.dll)と
Microsoft HTML Object Library(MSHTML.TLB)
を参照設定しています。
Option Explicit
Private WithEvents IE As SHDocVw.InternetExplorer
Private WithEvents IEDoc As MSHTML.HTMLDocument
Private Sub Command1_Click()
Set IE = New SHDocVw.InternetExplorer
Set IEDoc = New MSHTML.HTMLDocument
IE.Navigate2 "
http://2ch.net/ "
Do While IE.Busy
DoEvents
Loop
Set IEDoc = IE.document
Form1.Caption = IEDoc.Title
Set IEDoc = Nothing
Set IE = Nothing
End Sub
>>767 ありがとうございます〜。一応自分でも座標つくるところまではやってみたんですが、そっちのほうがすっきりしてますね(笑)。
Private X As Long, Y As Long, i As Long
Dim Xl(100) As Double
Dim Yl(100) As Double
Private Sub Command1_Click()
For i = 0 To 99
Randomize
ScaleMode = 3
X = Int(10000 * Rnd)
Y = Int(10000 * Rnd)
Xl(i) = X
Yl(i) = Y
Next i
End Sub
↑こんなんです(^-^;
クイックソートはこれから実装してみますー。
772 :
教えてください :01/11/21 17:01
Sub Macro1() Dim i As Double Dim iAnswer As Double X = Worksheets(1).Cells(13, 2) A = Worksheets(1).Cells(11, 7) For i = X To A Step 0.0000001 iAnswer = i Next sAnswer = Str(iAnswer) Worksheets(1).Cells(13, 8) = sAnswer End Sub ----------------------------------------- X=C10 A=IF(A13="",""ROUND(B13+E13+F13,6)) と、それぞれのセルには数式が入っています。 Aのセルは sAnswerのセル(13, 8) に数値が入らないとAの答えが出ないから 「#DIV/0!」となってます この状態で実行すると For i = X To A Step 0.0000001 のとこで「型が一致しません」とエラーなります。 「#DIV/0!」だとダメなんでしょうか?
>>771 > Private X As Long, Y As Long, i As Long
こういうのは Sub プロシージャ 内で宣言しないと後々困る事になりますよ
> For i = 0 To 99
xl(100) は使わないの?
774 :
デフォルトの名無しさん :01/11/21 18:56
ただのエクセルのマクロ何ですが・・・・・・・・・・ マクロ記述で、ある列、たとえばAの列で、A15まで入力されています。 Range("A1").End(xlDown).Select で記述されている最後のセルA15に飛びますが、プラス1下のセルを指定したいのですが方法を教えてください。 厨房でスンマソ
>>774 カコワルイけど、これでどう?
With Range("A1").End(xlDown)
Cells(.Row + 1&, .Column).Select
End With
>>774 Range("A65536").End(xlUp).Ofset(1).Select
最後のセルの取得は下からのほうがよいYO
>>772 つっこみどころ満点で楽しいんだけどさぁ。
こういうのは「なにをやりたいのか」を書かないと
わけわからんのよ。
>X = Worksheets(1).Cells(13, 2)
>A = Worksheets(1).Cells(11, 7)
変数X,Aも宣言しようよ。あとsAnswerもさぁ。
>For i = X To A Step 0.0000001
>iAnswer = i
>Next
なにをしたいねん、ってループなんだけど。
iAnswer=iAnswer+iの間違い?
それでもなにをしたいのかよくわからんけど。
>Aのセルは
>sAnswerのセル(13, 8) に数値が入らないとAの答えが出ないから
>「#DIV/0!」となってます
Aのセルってのは(11,7)つまり「G11」だろ?
sAnswerのセル(13, 8)ってのは「H13」だよね?
どういう関係がある訳?
>For i = X To A Step 0.0000001
>のとこで「型が一致しません」とエラーなります。
XとかAになにが入っているか確認してる?
たしかに「#DIV/0!」だとだめだろうけどさ。
そういうのを回避させるってのもプログラミングなんよね。
EXCELのVBAなんてそんなに使った事ないから
おいらが間抜けなこと言ってるかもしれんが、
もうちょっとヒントくれよ。
779 :
デフォルトの名無しさん :01/11/21 22:35
VB(5.0+SP3)で作ったEXEって、VBランタイムなるものを入れないと動かないの? じゃあ、WindowsNT4.0+SP5しかインストールされていないマシン上では動かない?
>>779 ふつう、VB5.0SP3のランタイムが必須ですが。
ディストリビューションウイザードでSetup.exe付きのを作ればランタイム付きの
配布ファイルを作れるし、Vectort等で配布されているランタイムを導入しても
よいのだけど。
ランタイムをスタティックリンクして、exeファイル単体で動作させるようには
できません。不便だけどしょうがないね。
781 :
デフォルトの名無しさん :01/11/21 22:40
市販のソフトをインストールした時にVBランタイムが 紛れ込むってことはありえます?
あるよ
784 :
デフォルトの名無しさん :01/11/21 23:40
コンボボックスでリスト選択のみで文字入力を できないようにする方法教えてください。
combobox.setEditable( false );
っていうかここ、Javaスレじゃなくって、VBスレじゃん! スみマソん。
>>784 コンボボックスのプロパティで、Styleを2
(ドロップダウンリストボックス)にする
てのは?
789 :
772です :01/11/22 00:19
スミマセンっ!セルの位置間違えました A = Worksheets(1).Cells(13, 7)です ------------------------------------ For i = X To A Step 0.0000001で 出た結果を入れるセル(13, 8)です。 A = Worksheets(1).Cells(13, 7)は (13,8)のセルに数値が入らないと答えが出ない数式が入ってます。 だからループ実行前は「#DIV/0!」の状態なのです・・・ Aのセルの数式はそのままで・・・あ! (13,8)に仮の数値をループさせる前に入れればいいのか な?
かぶった、スマソ
VB+ADO+Oracleを使ってJPEGの格納や取得を 行いたいのですが getchunk や getappend使った操作はかのうなのでしょうか? その場合のoracleでのデータ型などを教えていただけるとうれしいです。
すいません appnedchunkでした
793 :
デフォルトの名無しさん :01/11/22 00:53
私の作ったVBアプリをPen100MHz以下 Mem16MBの環境でも快適に 動くようにするため、他の言語への移植を考えています。 そのため、何故VBが遅いのか知りたいのですが、どなたか教えていただけませんでしょうか? Googleで検索しても、「VBは遅い!」という文句ばかりで 具体的な理由がわかりませんでした。
794 :
デフォルトの名無しさん :01/11/22 01:08
>793 VBのバージョンは?
>795 OSは?
VB5にはネイティブコードにコンパイルする機能は付いていませんでしたか? それでも遅いの? じゃ、コンパイラがヘボイから遅いのでしょう。 Pen100MHz、Mem16MBで快適に動くアプリを作る前に、 OSは動くのか? Win3.1?
OSはWin95だったかな?古いリブレット。ネイティブコートにコンパイルはできます。 テキストファイルを読み込み、テキスト一行当たり20回のループをする処理を行っています。 10000行のデータを読み込むと、20万回繰り返さないといけないのでパソコンが逝ってしまいます。 アルゴリズムを見直して、計算回数を減らせばよいのですが、 その前に、VBが遅い理由(例えば、文字列の結合は時間がかかるとか...)が知りたいです。
C/C++で書き直せばいいじゃないの 別にVBでもメモリさえうまく使えば死ぬことはないはず
>>798 どういうアプリなのかわからんことには、コメントできん。
特にループの中がどうなってるのか。
例えば、
A$ = A$ & B$
とかいう操作をループの中でやると、死ぬほど遅くなるよ。
こういう場合は、文字列型配列に突っ込んで、ループ抜けてからJoinした方が良い。
あとは、最適化オプションで「配列の範囲チェックを削除」あたりまで
やってみるとか。(VB5でこのオプションがあるかは知らないが・・・。
ペンティアム60MHz用のバグ修正コードを削除するのは基本な。)
VBが遅いってのはVBのくせを知らないからだよね。 まあ、簡単に速くしたかったらDelphi使えばー
802 :
デフォルトの名無しさん :01/11/22 09:44
Perlを少々あるかえる程度ですがいまVisualBasicをやろうと思って 初心者用の書籍を探しています。 なにかお勧めの本はないですか? できれば1冊の本で最終的になにか作り上げるようなやつがあればいいのですが… お勧めがあればお願いします。
803 :
デフォルトの名無しさん :01/11/22 09:45
>>803 つーか、MSDNライブラリ最強。他は要らん。
>>802 言語仕様無茶苦茶だよVB。
Delphiの方がいいだろうと考え。
806 :
デフォルトの名無しさん :01/11/22 11:35
774なんだけど A2〜A15(これは場合によってはA3だったりa80だったり変化する。変数で範囲を指定したい) A15までデータがはいてって、A16で集計をしたい。 前回教えてももらったやつで行が変わっても最後のセル指定はわかった。 でも、変数を含んだ集計がわかんないです。教えて。 カコワルイ
807 :
デフォルトの名無しさん :01/11/22 12:47
Visual Basicでコンボボックスを同じフォーム内に複数作ると うまく稼動しないのですが、どうすればいいんでしょうか? form_load() だと表示されるのがすが、 form1_load() とかにするとダメです。 くだらない質問ですみません。
808 :
デフォルトの名無しさん :01/11/22 13:23
全てのフォームを同じ大きさにしたいんですけど、 手動で大きさを変えるのってどうすればいいのでしょうか? スケールの数字変えただけでは変わらないんで困っています。 どなたかよろしくお願いします。
809 :
デフォルトの名無しさん :01/11/22 14:10
>>807 あん?
form_load()からform1_load()へ、コード上で
「1」を書き加えただけってオチ?
>>808 Width/Height をいじった?
Scale* を変えても大きさ変わんないよ。
勘違いだったらスマソ
>>806 celFrom = "A1"
celTo = "A15"
Range(celFrom,celTo).なんたらかんたら
じゃだめなの?
812 :
デフォルトの名無しさん :01/11/22 14:52
>>811 celFrom = "A1"
celTo = "A15"
が1〜15と限らんのだがどうカウントするのかを教えてクレヨン
813 :
デフォルトの名無しさん :01/11/22 17:11
dim ff randomize do ff=freefile open "C:\" & Rnd for output as #ff print #ff,"2ch sample" close #ff loop
>>812 Range(Cells(1,1), Cells(15,1))
で数値を変えればいいのでは?
>>806 > 前回教えてももらったやつで行が変わっても最後のセル指定はわかった。
とあるからカウントの仕方はわかってるんだよね?
.Rowプロパティーや.Colプロパティーで番号がわかるから
その数字を使えば何とでもなるのでは?
817 :
デフォルトの名無しさん :01/11/22 19:10
VBの悪いクセって何?
818 :
デフォルトの名無しさん :01/11/22 19:10
ある数値を 1234567 ↓ 1|234|567 のように3桁ごとに「|」を入れたいのですが方法が分かりません。 Format関数を使えば出来ると思ったのですがうまくいきません。 --------------------------------------------------------------- Format(Form1.MSHFlexGrid1.TextMatrix(1, 1), "#,##0") --------------------------------------------------------------- これだと 1234567 ↓ 1,234,567 となります。 そこで「#,##0」の部分を「#|##0」にしてみたら 1234567 ↓ 1234|567 となり、意図したようになってくれません。 他にもいろいろ試してみましたがうまく出来ません。 何か良い方法はありませんでしょうか。
>>818 Format して Replace じゃだめ?
821 :
デフォルトの名無しさん :01/11/22 20:56
アクティブレポートについて SQL投げてDataFieldを設定して、レポートを作成しているのですが、 集計フィールドを作成せずに集計行を表示したいのです。 「投げるSQLは1回のままでキーがブレイクしたら集計行を出す」 なんて、できるのでしょうか?
>>818 Replace$(Format(n,"###,###,###,##0"),",","|")
こんな風にやってみな。
VB5+SP3のVBランタイム環境で、VB6で作ったEXEってまともに動く?
825 :
デフォルトの名無しさん :01/11/22 21:56
やってみりゃいーじゃん。分かるってばよ。
classというものの概念がよくわからないので、わかりやすく説明してください。 あと使用例なんかを示してくれると助かります。 classを使わないとこんなに大変だけど、使うとこんな感じで楽なんだ、みたいな感じで。
827 :
デフォルトの名無しさん :01/11/22 22:11
VBは、CUIのプログラム作れんのか。
>>827 API使えば作れるよ…。
果てしなくめんどくさいが。
>>826 VBでクラスの概念を覚えようとしないでJavaなりやってみればいいよ。
すんなりVBのクラスも使えるようになる。
っていうか、使いたくなるから。
>>829 Javaですか。Cでポインタからわからなくなった典型例なので、きびしそうです。
でも新しい気持ちでいちからやってみるかな。
しかし、クラスって一体何なんですか?あるサイトにも「クラスを使えるようになると
プログラミングがもっと楽しくなる」って書いてましたけど。
>>830 関連するデータとそれを走査するメソッドを一まとめにしたもの
すみません。 本当にわかりません。 コンボボックスをひとつのフォームの中に複数作るときの 一般的な中身のソースってどんな感じなのでしょうか?
>>831 うーん・・・。いまいちピンとこないんですよね・・・。
どういうときに使うものなんですか?
>>807 =832
もうちっと詳しく状況を教えてくれると助かるのですが...
835 :
デフォルトの名無しさん :01/11/23 02:04
HTTP serverにデータを送信したいので、HttpSendRequest()を使いたいのですが、クッキーも送れますか? それとも、クッキーは別関数で送るのでしょうか? クッキーの送り方が解らないので、知りたいです。
3つコンボボックスがあって、3つともデータ(?)をロードしようとしています。 ソースはこんな感じで Private Sub Form_Load() Combo1.AddItem "18才以下" (中略) Combo1.AddItem "51才以上" Private Sub Form_Load() Combo2.AddItem "なし" (中略) Combo2.AddItem "3年以上" Private Sub Form_Load() Combo3.AddItem "なし" (中略) Combo3.AddItem "3年以上" これだとエラーがでてしまいます。
誤爆でした。すみません。
これでもダメです。 Private Sub Form1_Load() Combo1.AddItem "18才以下" (中略) Combo1.AddItem "51才以上" Private Sub Form2_Load() Combo2.AddItem "なし" (中略) Combo2.AddItem "3年以上" Private Sub Form3_Load() Combo3.AddItem "なし" (中略) Combo3.AddItem "3年以上"
これだと、はじめのだけうまくいくんですけど、 あとの2つがダメになってしまいます。 長々とすみません。 Private Sub Form_Load() Combo1.AddItem "18才以下" (中略) Combo1.AddItem "51才以上" Private Sub Form2_Load() Combo2.AddItem "なし" (中略) Combo2.AddItem "3年以上" Private Sub Form3_Load() Combo3.AddItem "なし" (中略) Combo3.AddItem "3年以上"
>>807 いっこの Form にコンボボックスが3つ張り付いている
という状況と考えていいの?
そうだとして...
Private Sub Form_Load()
Combo1.AddItem "18才以下"
(中略)
Combo1.AddItem "51才以上"
Combo2.AddItem "なし"
(中略)
Combo2.AddItem "3年以上"
Combo3.AddItem "なし"
(中略)
Combo3.AddItem "3年以上"
End Sub
これじゃだめなの?
なんで Load イベントハンドラを複数定義するの?
>>836-839 なんかいまいち何がしたいのかわからんのだけど、
1つのフォーム(仮にForm1とする)に、3つのコンボボックス
(Combo1 Combo2 Combo3)を置いてみた。
んでもって、Form_Load イベントにてこの3つのコンボボックスを
初期化したい。
…ということかな?
それなら、
Private Sub Form_Load()
Combo1.AddItem "18才以下"
(中略)
Combo1.AddItem "51才以上"
Combo2.AddItem "なし"
(中略)
Combo2.AddItem "3年以上"
Combo3.AddItem "なし"
(中略)
Combo3.AddItem "3年以上"
End Sub
これでいいんでない?
>>840 ありがとうございます。OKでした。
私がドがつくほど馬鹿でした。
笑ってください。
843 :
デフォルトの名無しさん :01/11/23 02:30
質問です。 ひとつのアプリケーションの中で 例えば、1つめのフォームで入力した文字を 2つめのフォームで再び出力する場合って 1つめのフォームの(genral)のところでpublicで宣言するだけは 不十分なのでしょうか?
>>843 >2つめのフォームで再び出力する場合
ってのがよくわからん。
Form2.Text1.Text = Form1.Text1.Text
ってなことをやりたいの?
>>835 Read Your Fucking RFC
SetCookie:hoge=hogehoge
Content-Type:hoge/hogehoge
846 :
デフォルトの名無しさん :01/11/23 02:53
>>843 もしくは、ひとつの変数を複数のFormでつかいたい、ということ?
それだと、標準モジュールを追加して、そこで変数(Public)を宣言すれば。
844の方法で解決してたらごめん。
848 :
デフォルトの名無しさん :01/11/23 03:39
質問。 VBからハードディスクにあるファイルが 有るか無いか調べることって出来ますか? 例えば、 c:\workに001.txtがあれば001.txtに書き込む、無ければ新たに作る、 ってのをやりたいんですけど。
849 :
デフォルトの名無しさん :01/11/23 03:45
>>848 この関数でできます。
ファイルが無い時は自動で作成します。
Public Sub CreateFileEx(ByVal strFileName As String)
Dim intFileNum As Integer
intFileNum = FreeFile()
On Error Resume Next
Open strFileName For Binary As #intFileNum
Close #intFileNum
End Sub
850 :
デフォルトの名無しさん :01/11/23 08:33
みんなはどうやってVisualBasicとか勉強したの?
852 :
デフォルトの名無しさん :01/11/23 11:18
>>850 俺も初心者だけど、とりあえず、「この1冊で〜を作る」みたいな本を
1冊見ながら作ったら、まぁ1レベルは上がった気がするよ。
俺の場合、この1冊でデータベースを扱う、みたいなのやった。
>850 最初はやっぱ入門書みたいなのやって、 あとはいろいろいじってた。 いつのまにか出来てたから驚いたもんだ。
854 :
名無し・改 :01/11/23 11:59
昨日やっちゃいました恐怖のプログラム。 ファイル無限造成するように作ったんです。 まさか2秒じゃそんなには作れないだろう、とおもった。 しかし残念Cドライブには15000ものファイルが。 消すの大変だったー。
856 :
デフォルトの名無しさん :01/11/23 17:29
バイナリ形式のデータを読み込んであれこれさせるソフトを作ろうとしているのですが、 そのデータのフォーマットをTypeを用いて以下のように書いてみました。 Type HogeData Hoge(100) as Byte HogeHoge(200) as Byte (中略) End Type しかしコンパイルしようとすると、「コンパイルエラー:固定長文字列型や静的変数の データの大きさは 64KB を超えることはできません。」 と出てしまいました。実際読み込もうとしたデータは 64KB 越えている(約65KB)のですが、 データをバラしてTypeで2回宣言しようとしてもやはり同じエラーが出てしまいました。 どうにかして読み込ませる方法はないものでしょうか…。
857 :
デフォルトの名無しさん :01/11/23 18:22
VB初心者です。 テキストボックスでは多くの文字を表示できないということで リッチテキストを使用してみたのですが、どうもうまくいきません。 テキストファイルの読み込みで Private Sub mnuOpenItem_Click() Wrap$ = Chr$(13) + Chr$(10) CommonDialog1.Filter = "テキストファイル(*.txt)|*.txt" CommonDialog1.ShowOpen Open CommonDialog1.FileName For Input As #1 Do Until EOF(1) Line Input #1, lineoftext$ alltext$ = alltext$ & lineoftext$ & Wrap$ Loop Rtxt1.Text = alltext$ Close #1 End Sub と、しています。 alltext$が悪いらしいのですが、 どのようにしたらよいのか、解決法をご教授ください。 よろしくおねがいします。
858 :
デフォルトの名無しさん :01/11/23 20:39
>855 黒本ってなに?
>>865 VBってまだセグメントとか気にしないといけないの!?
さすがIntegerが16bitなだけあるな・・・。
Integerは32ビットだよ。ただ範囲を16ビットに抑えてるだけ
>>857 >どうもうまくいきません
何が?どのように?
見た限りでは特に問題ないように見えるけど、もしかすると
実行するとプログラムが応答しなくなるとかかな?
もしそうならば、しばらく放置してみそ。多分きちんと表示されるから。
もし違うなら、「うまくいかない」とはどのような状態になっているのか
書いてくれれば、それなりに回答のしようはあると思うよ。
それから、Chr$(13) & Chr$(10) は708でも書いたけど
vbCrLf っていう定数があるので、それを使うよろし
すべては互換性のため。
それとセグメントなんか関係ないよ 当然でしょ
>>857 RichTextBox使ってるなら、そんな面倒なことしなくても、
Private Sub mnuOpenItem_Click()
CommonDialog1.Filter = "テキストファイル(*.txt)|*.txt"
CommonDialog1.ShowOpen
Rtxt1.LoadFile CommonDialog1.FileName , rtfText
End Sub
これで十分な気がするけど。
ちなみに、大きなループの中で A$=A$ & B$ って操作をやると死ぬほど重く
なる&メモリ効率が異様に悪くなるのであんましお勧めできない。
867 :
デフォルトの名無しさん :01/11/23 23:45
たびたびすみません。 標準モジュールを使うときって関数形式にするって書いてあったんですけど、 どうやって内容を保持すればいいんでしょうか? 例えば、 (標準モジュール) Public Sub abc(n As String) End Sub (フォーム1) Function abc(n) n = Text1.Text End Function (フォーム2) Function abc(n) Text1.Text = n End Function これではダメなのでしょうか? (ダメなんですけど)
>>867 標準モジュールに
Public n as String
を追加すればいいんでないの?
869 :
デフォルトの名無しさん :01/11/23 23:54
できませ〜ん(><)
871 :
デフォルトの名無しさん :01/11/23 23:59
>>869 ではできませんでした。
Public Sub abc(n As String)
Public n as String
End Sub
これでいいんですか?
>>863 >>866 アドバイスありがとうございます。
早速試してみます。
うまくいかないというのは、プログラムがフリーズ(応答がありません)
してしまうのです。
どうもでした。
>>856 ですが、
>>889 のレスは私に対するものなのでしょうか…。
解決方法のご教示お願いします。
>>871 そこじゃなくて、宣言領域に書くよーに。
標準モジュールの、あらゆるプロシージャより上に書くってことね。
Option Explicit
Public gstrText As String '←これね。
Public Function hogehoe......
みたいな。
876 :
デフォルトの名無しさん :01/11/24 00:13
>>874 できました(・∀・)
ありがとうございましたm(_ _)m
関数とは全く別なんですか?
思ったよりもずっと単純なんですね。
>>876 大域変数はあんまり使わない方が宜しいかと。
どうしても使う場合は、
>>875 氏のサンプルみたいに
ちゃんとした名前を付けると良いです。
878 :
デフォルトの名無しさん :01/11/24 02:01
標準モジュールにオブジェクトを返す関数を作った場合、 その解放については記述しなければならないのでしょうか? 例えば、 Public Function Test() As Recordset 〜色々 End Function と書いた場合、フォーム上で Set rc = Test() としてRecordsetを取得・使用した後、最後の方にお約束として Set rc = Nothing と記述します。 この場合、 Set Test = Nothing みたいな構文は必要ですか?
879 :
デフォルトの名無しさん :01/11/24 02:05
>>878 使わなくなったら勝手に削除されるから必要ありません。
>879 なるほど。 Test = Nothingって書いてもエラーになるから、勝手に削除される って事だろうとは思っていたけど、これでスッキリしました。 ありがとう。
881 :
デフォルトの名無しさん :01/11/24 09:48
厨房な質問かも知れませんが教えてください。 実行中に最小化すると 実行時エラー(プロシージャの呼び出しまたは引数が不正です)が出てしまいます。 どうもresizeに問題があるようなのですが・・ resizeはこのようなもので行っています。 Private Sub Form_Resize() text1.Move 0, Toolbar1.Height, form1.ScaleWidth, _ form1.ScaleHeight - StatusBar1.Height - Toolbar1.Height End Sub 解決法を教えてください
>>881 OnErrorResumeNext
これを行頭に入れる。
Form_Resizeには面倒だからこうするのが楽だと思うー。
…だめ?
あとは、
If Me.WindowState = VbMinimized Then Exit Sub
これを行頭に入れるとか。
>>882 If Me.WindowState = VbMinimized Then Exit Sub
使って、できました!
ありがとうございます!
878とは別人なんだけど
>>879 やっぱりそうだよねぇ・・・
でも何かを使ってて(何だったか忘れたけど)
最後に Set objSomething = Nothing とやってやらないと
プロセスが残ってしまって随分苦労したんだけど
(これっていわゆるスマートポインタだよね??
一体どういう条件の場合なら Nothing 入れてやらないといけないのか
なんかマニュアルに載ってたっけ?
# いや、もう終わった仕事だからいいんだけど。。。
>>884 >>885 Excelって、ワークシートとか適当に使うと
残るよね。
ちゃんとSETして、開いたら開いた数だけCloseとかQuitして、
最後にNothingしないと。
887 :
デフォルトの名無しさん :01/11/24 16:20
厨な質問かも知れませんが、 Function プロシージャは値を返すのに対し、Sub プロシージャは値を返さないですよね? このことから単純に考えると Function > Sub な気がするんですが、 Function のデメリットって一体何なのでしょうか。
>>887 メリット・デメリットで考える事でもない様な...
値を返したければ Function を使えばいいし、
返す必要が無いなら Sub を使えばいいし...
値を返さないFunctionが許されるほうが不思議なんですが>>VB あれは何のためにあるの?
890 :
デフォルトの名無しさん :01/11/24 17:20
>>889 あとから戻り値が必要になったらメンドウだってんで
最初から全部Functionで書く、という人がいました。
>>889 明示的に値を返さない場合、デフォルト値が返されるだけじゃないの?
893 :
デフォルトの名無しさん :01/11/24 22:27
はじめまして。 最近VB始めたんですが、考え方分かりやすくて楽しいですね。 えっと、質問させて下さい。 ファイルリストボックスで選んだMP3ファイルをWinampで演奏したい のですが、VBからWinampを開く方法が分かりません。 他のアプリケーションを開くソフトってよくあるので出来ると思うのですが・・・。 でも演奏スタートさせるってのは無理かなぁ? よろしくお願いします。
894 :
名無しさん… :01/11/25 00:00
VB5入れてSP3当てて他人から貰ったソース開こうとしたら "C:\ 〜 \COMDLG32.OCXが読み込めませんでした" となりました。 PRJファイルのパスを見に逝ってるようです。 これはどうしたらいいんでしょ? 環境: WIN98にOffice97,IE5等が杯ってます。 分かる人よろしくお願いします。
895 :
名無しさん… :01/11/25 00:02
ちなみに COMDLG32.OCX は C:\WINDOWS\SYSTEM に入ってます
897 :
名無しさん… :01/11/25 00:16
>>896 レスありがとうございます。
エラーを無視してロードを続けてから・・ですか?
すいません。
手順などをもう少し噛み砕いて説明して下さると助かります。
>>897 読み込めなかったのは、コモンダイアログだけなんでしょ?
まず、おっしゃる通り、エラーを無視しつづけてプロジェクトの
ロードを完了してから、プロジェクト > コンポーネントで
コントロールを参照しなおしてみてはいかがでしょ。
899 :
名無しさん… :01/11/25 00:37
>>898 分かりました。ありがとうございました。
900 :
名無しさん… :01/11/25 00:40
で、これはちょっと別の話で原因なんですが、それも分かりました。 バージョン違いです。 ソースを貰った先のバージョンが6なんだそうです。 前にVB6インストール ⇒ 同アンインストール ⇒ VB5インストール これ・・・・ちょっとマズそうですよね。 僕ももう少し調べてみます。 なにか分かる事があったらお教え下さい。 取り合えずありがとうございました。
901 :
デフォルトの名無しさん :01/11/25 02:39
VB6、ACCESS2000使用です。 ADO接続、SQLで取得したレコードセットのデータを アクセスのレポートのように次々と連続印刷をしたいのですが 何か良い方法はないでしょうか? 本来ならばDataReportで印刷するべきなのだと思うのですが データコントロールを使いたくないので、DataEnvironmentを使わず印刷 かつ、データベース意外から取得したフォーム上からのデータも印刷したいんです。 DataReportにデータを送ることが出来るのであれば良いと思い調べたのですが (゚д゚)ウマー!な感じが見つけられずお手上げ状態です。 エクセルにデータを送って印刷を考えましたが こちらではVBからデータ出力は良いのですが連続で印刷する方法がわからず 次にアクセスで印刷を考えましたが、こちらでは印刷は良いのですが アクセスのレポートにVBからデータを送る方法がわかりません。 (そのまえにそんなことができるのでしょうか) 長くて申し訳ありません・・・。 なにか良い知恵、ヒントがありましたらお貸し願えないでしょうか
>901 DB接続不要のReportを使うのが一番簡単。 VB-Reprotなんかはこのタイプ。 んで、DataReportやAccessのレポートなどのDB連結型の 帳票ツールで良くあるパターンとしては・・・ 印刷用のMdbを作っておき、そのテーブルにデータを書き 込んだ後、連結したReprotを起動するのが定番。(多分な) 印刷用のMdbはあくまでもワークなので、印刷時には毎回 データを消去してから使う。
903 :
デフォルトの名無しさん :01/11/25 16:42
はじめまして。新米のPG兼SEですが、現在あるソフトの納品で困っています。 Oracle8.1.5をRDBMSとしたクラサバのシステムで、クライアントがWin95 の場合に問題なく稼動していた自社開発アプリを客先の関係で Win98にインストールして使用すると、データが処理が長引く場合 いつのまにかクライアントPCがリセットしてしまうことが多くて困っています。 (といってもテキストデータをDBのてーぶるに1000件ほど落とし込む 複雑じゃない処理です) ミドルウエアはDataDirect社のData Connect ODBC3.50、 開発言語はVB5.0で、サーバDBとのやりとりにはrdo2.0を使っています。 (会社の規定。つーかその組み合わせ以外開発した人が居ない) クライアントPCはFMV-6766CL7、サーバも富士通のサーバ機を つかっています。 Win95→Win98へのアプリ対応などでもし同じような経験があられる SEさんがいらっしゃったらアドバイスをお願いいたします。m(..)m
904 :
デフォルトの名無しさん :01/11/25 16:42
あ、サーバのOSはWinNT4.0SP6.0です…
905 :
デフォルトの名無しさん :01/11/25 22:59
>902さん すみませんでした。 頭の中が、とにかく印刷、としか考えてなかったみたいです。 印刷用のMdbですね。やってみます。 ありがとうございました。
906 :
デフォルトの名無しさん :01/11/25 23:48
他のスレでうるう年判定プログラムを if文で作ってるってのを馬鹿にしてるのがあったんですけど、 どうやったらもっとスマートに作れるんですか?
ライブラリに任せるとは?
すぐ思いつくものだと「n年2月29日」が有効な日付かどうか? を調べるとか
dateadd で2月28日に1日足してみるとか。
DateSerial(年, 2 + 1, 0) で月末の日付を調べるとか。
blnUruu = ( Y mod 4 = 0 and Y mod 100 <> 0 ) or Y mod 400 = 0 こんな感じは駄目か? 4で割り切れて100で割り切れない年か、400で割り切れる年が閏年。 一応、Ifは使ってないけど。 つーか、漏れならこうするが。グレゴリオ歴が続く限り、1582年以降 なら何万年先でも判別できる(笑
914 :
初心者厨房 :01/11/26 09:40
えっと、VBで自分以外は見えてはいけないファイルって 事で、ガードをかけたいんですがどうしたらいいのか 本当に分かりません! 申し訳ないのですが分かる方がいらっしゃいましたら ぜひ教えてください。
915 :
デフォルトの名無しさん :01/11/26 09:41
>>913 それ以上にシンプルな方法はちょっと思いつかん。クラスの中に隠蔽するなら
その書き方だね、折れも。
でも、他人に見える部分では、愚直に If で書く。むしろプロなら愚直に書く
人のほうが多いんじゃないかな。
>>906 トリッキーなコード書いて一人で悦に逝ってるオナニー野郎は無視しとけ。
>>914 NTFSにしてセキュリティかければ済む問題じゃないの?
>>916 >でも、他人に見える部分では、愚直に If で書く。むしろプロなら愚直に書く
909がトリッキーなコードか?むしろ素直な書き方だと思うぞ。
関数でラップするのは当然だが、
今の時代、できるだけライブラリに任せるのが常識。特に日付関係は。
うるう年求めるだけで終わりじゃないだろう?
俺に言わせたら
>>913 の方が
int month[] = {31,28,31,30,31,30,31,31,30,31,30,31};
の延長に見える。
If使ったぐらいでプロかよ。とんだオナーニ野郎だな
まぁIf〜ElseIfを延々と続けるプロもおりますので。
921 :
デフォルトの名無しさん :01/11/26 15:09
文化オリエントのPowerToolsって使ってる人いますか? 自分は、DenpyoMan Ver.1.0J トライアル版を試用してますが、なかなか上手くいかないです。 製品版買うと、文化オリエントに質問とかできるんでしょうかね? PowerToolsユーザーさんの実体が知りたいです
922 :
初心者厨房 :01/11/26 15:22
>>917 本当にDQN的な質問ですみません。
NTFSってなんですか?
本当に何もわからない厨房なんで小学生に教える容量で
教えていただけると助かるのですが。。。
わがままを言って申し訳ありません。
923 :
漏れも厨房 :01/11/26 15:26
>>922 Windows NT用のファイルシステム。
FATにセキュリティを付加したものかな?
「コーディング」って何ですか? これからプログラム始めようと思ってるんですが、マジで知りたいです。 教えて下さい。
そろそろPart4の時期ね
>>918 >>909 のやりかたがトリッキーじゃないってのは同意だが、
>>913 が
int month[] = {31,28,31,30,31,30,31,31,30,31,30,31};
と同じってのは理解できない。
任意の年が閏年かどうか判定したいだけじゃないのか?
閏年は暦学的に計算で決定できるのだから、
>>913 みたいな計算
で求めるのが本筋だと思うが。
928 :
名無しさん… :01/11/26 20:51
>>927 >
>>913 が
>int month[] = {31,28,31,30,31,30,31,31,30,31,30,31};
>と同じってのは理解できない。
禿銅。
着目点がぜんぜん違う。2月の日数に着目するか、うるう年自体を計算で決定するかの違い。
まあ、俺なら
>>913 のやり方でやる。
クラスに隠蔽されているからって、同じ処理を2回も3回も繰り返すようなプログラムは
書きたくないね。
こんな考え、時代遅れですか?
930 :
デフォルトの名無しさん :01/11/26 23:25
VB初心者です。 勉強のためテキストエディタを作っていまして、 テキストボックスに行表示をいれたいと思うのですが、 どうもうまいやり方が思い浮かばず、悩んでいます。 どなたかご指導おねがいします。
931 :
デフォルトの名無しさん :01/11/27 00:09
すみません、リッチテキストボックスコントロールでForeColorプロパティは 操作できないのでしょうか?ヘルプには載ってるのですが…
>>930 private sub text1.change
if false=isnumeric(left(text1.text,5)) then
text1.text=format(番号,"00000") & text1.text
あーわかんねぇや
>>931 RichTextBox1.SelColor = &hFFCC88&
とかいうふうにやればいいかな。
SelStart、SelLengthを適切に設定してね。
ただ、RichTextBoxで頻繁に.Sel〜系で操作してるとアプリが
落ちることがあるよ。チャットみたいなやつだと特に。
>>930 テキストボックス一つでまともなエディタが作れるとは思わない方がいいです。
メモ帳程度で我慢しましょう。
>>931 リッチテキストにForeColorはないと思う。
よくある誤記でしょ。
>>931 リッチテキストは色々と仕様が腐ってるので、注意して使った方がいいです。
9xと2000で動作が微妙に異なるとか、Findメソッドでの始点は文字数ではなく
ShiftJIS文字でのバイト数だとか、変なのがいっぱい。
まぁ、たんなる大きなテキストボックスとして使うなら、あまり不都合無い
ですけどね。
>>933-935 どうもありがとうございます。
確かに不自然なところが色々あるみたいですね…
>>925 答えて頂いて、ありがとうございました。
938 :
デフォルトの名無しさん :01/11/27 07:19
903です… すみませんどなたかアドバイスお願いします。
>938 そのM$のページにあるテは試した? それでもダメだってんなら、新規フォームで1から作る(ソースはコピー可) とかすれば解消されるかもしらんよ。
941 :
デフォルトの名無しさん :01/11/27 17:06
VB4でリスト構造を扱いたいのですが、できるでしょうか。
リッチテキストを使ってもできないでしょうか。 VBでは無理だという結論なら諦めますが・・ 可能であれば、方向性だけでも教示願いたいです。
943 :
デフォルトの名無しさん :01/11/27 18:52
Windowsでお馴染みのウインドウ右上の×ボタンを押されたときに、 フォームのunloadに「終了しますか」OkCancelってやってんですけど、 Cancel押したときに戻ってくる処理が分かりませぬ。 Unloadに書くのが悪いんすか?
>>943 QueryUnloadに書いてください
EPSONのNT-800でPowerBuilderを使うと異常に遅いんですけど。 たぶん、ビデオドライバのせいみたいなんだけどなんとかならんかい? SiliconMotionのHP行ったけど、ドライバ98年から更新されてなくて ダウソしたけど速くならなかった。でも、型の一つ違う新しいドライバいれたら 速くなった。画面がちょっと乱れるけど。
>>944 ありがとうございます。明日学校で試します。
vbCancelんとこは普通に終わってれば良いんすよね?
>>946 Cancel = True
で終わっとけばいい
>>930 >>942 テキストボックスとか出来合いのものを使って作れるのは
メモ帳ぐらいまでってことだよ。
テキストにしろリッチにしろそういう用途のためにはできていないし、
ちゃんとしたエディタ作るのはVB以外でも面倒なもんだよ。
テキストの左にピクチャでも置いて行番号はそこに描画するってのはどう?
サブクラス化でテキストボックスのWM_PAINT拾って描画。
CVS形式のファイルってなんでしょ。 どうやって扱うの?
>>950 カンマをセパレータにしてフィールドを区切ったテキストファイル。
基本的には、テキストファイルと扱いは同じ。
ピクチャーボックスにグラフを書くときに、x軸とy軸の目盛りをつけるのはどうやればいいんでしょうか。 座標のとりかたがよくわからないんです・・・。
>>950 はCSVの話してる
に5000ペリカ!!
955 :
デフォルトの名無しさん :01/11/28 07:10
すみません、rtbFind(リッチテキストボックス)の文字列を rtbText(リッチテキストボックス)内から検索する機能、または rtbChange(リッチテキストボックス)の文字列で置換する機能を つけたいのですが、どうすれば良いのでしょうか。 ↓の記述じゃ駄目みたいで…宜しくお願いします '検索ボタンの処理 Private Sub cmdFind_Click() rtbText.Find rtbFind.TextRTF rtbText.UpTo rtbFind.TextRTF End Sub '置換ボタンの処理 Private Sub cmdChange_Click() rtbText.Span rtbFind.Text rtbText.SelRTF = rtbChange.Text End Sub
>>950 デフォルトの名無しさん wrote:
> CVS形式のファイルってなんでしょ。
> どうやって扱うの?
CSVのことだったりして:)
>>955 rtb.Textと、rtb.TextRTFの違いをちゃんと認識しましょー。
FindとかSpanにRTF突っ込んでもちゃんと動かないと思うよ。
逆に、SelRTFに普通のText突っ込んでも駄目ね。
958 :
デフォルトの名無しさん :01/11/28 09:57
OLEコントロールでWord2000文章を表示してPrintformで印刷しました。 このときOLEのBorderStyleをなしにしても 印刷結果ではOLEの境界線が印字されてしまいます。 このOLEの境界線を印刷されないようにするにはどうしたらいいのか 教えてください。VB6.0(SP5)です。
Formのresizeイベントについて。 ドラッグしてサイズ変更をする場合 ドラッグしている最中に処理を実行するには どうすればいいのでしょうか。普通にやるとドラッグ操作を完了してからでないと 処理が実行されません。
実行時にプログラムからテキストボックス、ラベルなどを 一時的に作成することはできるのでしょうか? 「テキスト追加」の様なボタンを押すと、 フォームにテキストボックスが追加できれば良いのですが? 追加したものは、フォームを閉じるときに破棄されて構いません。
>>960 MSDNからコピペ
Load ステートメント
フォームまたはコントロールをメモリにロードします。
構文
Load object
object には、ロードする Form オブジェクト、MDIForm オブジェクト、またはコントロール配列の要素の名前を指定します。
>>961 ありがとうございます、出来ました。
LOADだけでは非表示されているみたいですので、
VisibleをTrueしました。
表示させると、追加元となるコントロールに重なっているので、
TOP,LEFTをずらして追加されていることを確認しました。
早いレスで回答して頂いて助かりました、有り難う御座います。
963 :
デフォルトの名無しさん :01/11/28 13:45
質問が有ります。 WINDOWS2000の環境で使用しているときに、 下記動作を行うと、テキストボックスのValidate処理が起きません どうしてでしょうか テキストボックスにて入力後(フォーカスは、テキストボックスのまま)マウスで、 タブ(SSTab)をクリックするとテキストボックスのValidate処理が発生しません。 環境 NT4.0 SP6、VB6.0SP3にてコンパイル 2000SP2 VB6.0 SP5 の環境にて実行 NT4.0 SP6、VB6.0SP3だと、テキストボックスのValidateイベントが発生します。
パート4立てました......
965 :
デフォルトの名無しさん :01/11/28 17:07
大学生ですが、自己相関相互相関をVBAで計算させようとしてなやんでいます なにか、いいプログラミング例はないでしょうか
初めまして。さっそく質問します。 osがwindowsMEの場合、datagridコントロールは正しく表示されないのですか?