くだすれVB6.0以前(超初心者向け)at TECH
くだすれVB6.0以前(超初心者向け) - 暇つぶし2ch348:デフォルトの名無しさん
08/11/25 21:08:19
すみません、こちらで質問させて下さい
Excel VBAでwebページをIEオブジェクトで操作して、リンクをクリックさせると別窓でリンク先が表示されます
今後この別窓のIEオブジェクトを掴んでアクティブにして操作するにはどうすればいいのでしょうか?
独学文系のなけなしの知識にて、ウィンドウハンドルを取得すればいいと思い当たり
For Eachで各ウィンドウのそれの取得だけはできました(たぶん)が、使い方というかセオリーが全く分かりません…

Private Declare Function SetForegroundWindow Lib "user32.dll" (ByVal hWnd As Long)
Private Declare Function GetForegroundWindow Lib "user32.dll" () As Long
(中略)
hWnd = GetForegroundWindow
Set objShell = CreateObject("Shell.Application")
 For Each objIE In objShell.Windows
  Debug.Print objIE.hWnd
 Next
ウィンドウハンドルの値は取得できても、アクティブにしたい(操作したい)ウィンドウのそれだと判別する
方法が解らないので、どなたかご教示&ご解説お願いします

349:デフォルトの名無しさん
08/11/26 21:43:48
>>348
ウィンドウの区別は基本的にはタイトル(タイトルバー)の文字列で行う。
同じアプリを複数開いて同じファイルを開くとタイトルバーの文字列がまったく同じになってしまうが、
この場合はウィンドウを区別するのは、不可能ではないが非常に難しい。
俺の知識で答えられるのはここまで。

350:デフォルトの名無しさん
08/11/26 21:55:08
つか、LocationUrl でいいだろ? その InternetExplorer の hWnd で、
SetForegroundWindow() すれ。

って、それだけだとアクティブにはならんけど。

351:348
08/11/26 22:12:32
>>349
ご回答ありがとうございます!となると、思いつきでは

1).新しいIE窓を開く前に全部のIE窓のタイトル又はハンドルを取得
2)上記を配列にでも入れる
3)新しいIE窓が開かれる
4)2で取得した配列の添え字と比較、大きかったらダウト
 (同じ内容であってもこちらを弄るようにする)

4の配列の添え字の比較って出来るのかな?ド素人なもので…
って、窓数の増加だけならインデックスの上限値を見ればいいのか

…こんな感じで行けるのかな?
汎用化するにはIEのイベントを監視しなくちゃならなそうですが(;´Д`)
しかし用途を限定すれば何とかできる…と思いたいです

352:デフォルトの名無しさん
08/11/26 22:23:49

最初に聞いたExcelVBAスレの質問取り下げてないのでマルチだし
しかもExcel総合スレにまでリンク形式でマルチしてる

> ExcelやExcel VBAからは外れる質問とは承知しているのですが、
> 文系独学なうえ近くに教えを請える人も居ないので、
> 何方か親切な方、ご回答お願いします…(;´Д`)
>
> スレリンク(tech板:348番)

もう、この子は放置の方向で

353:デフォルトの名無しさん
08/11/26 22:29:05
>>352
取り下げも何も、誘導も無しにスレ違いの一言で一蹴されましたが…

ご回答下さいました方々には改めてお礼申し上げます

354:デフォルトの名無しさん
08/11/26 22:29:58
まだマルチが悪いとか思ってるウブな奴っているんだなw
俺的に言えばそんな奴こそいらん。

マルチが悪いって、それって他でもないお前が「人に感謝されたい威張りたがり屋」
なだけじゃんw
むしろそのお前の幼児性こそ問題だよ。

普通は掲示板のやり取りなんて答える方も自分のためにやってるわけで、
その上回答者に感謝されたいなんて図々しいこと思わねえよ。

355:デフォルトの名無しさん
08/11/27 01:17:14
ユーザー定義型の質問なのですが、

Public Type AAA
b as Long
c as Long
End Type

Public A(0 To 99) As AAA

といったようなのをモジュールに書き、フォーム1でA(0).b = 100と書いたとします
しかし、それをフォーム2で参照したところA(0).b = 0となっていました
配列化しなければ問題は起こらなかったのですが、原因は何なのでしょうか?

356:デフォルトの名無しさん
08/11/27 02:22:28
ふつうに動いてるが?

357:デフォルトの名無しさん
08/11/27 09:07:18
>>354
ボク、何か嫌なことでもあったの?


358:デフォルトの名無しさん
08/11/27 11:14:38
使用するosをXPからVistaに移行したところ、矢印の「dumst」部分で
インデックスが有効範囲にない、というエラーが出てしまいます。
アドバイスお願いします。

Private Sub Form_Load()
Const DataFile1 As String = "emadr.txt"
noTA = 0: noID = 0: noFA = 0: noSMTP = 0
fileNum = FreeFile
Open DataFile1 For Input As #fileNum
Do Until EOF(fileNum)
Line Input #fileNum, dummy
→ dumst = Split(dummy, ",")
If (dumst(0) = "TA") Then
noTA = noTA + 1
emTA(noTA) = dumst(1)
End If
Loop
Close #fileNum



359:デフォルトの名無しさん
08/11/27 18:13:33
>>356
普通にいけました…
消したと思っていた変数定義が消えておらず、変数がリセットされていただけでした
お騒がせしました

360:デフォルトの名無しさん
08/11/28 22:55:15
VB6でFTPでの転送結果(スループット等)を取得する関数とかあるのでしょうか?

361:デフォルトの名無しさん
08/11/28 23:27:26
あると思うほうが不思議だが?

362:デフォルトの名無しさん
08/11/28 23:32:46
絶対に無いと確信するほうが不思議

363:360
08/11/28 23:50:40
>>361-362

回答ありがとうございます。

やはり無いんですね・・・

ファイル転送量/時間で出そうと思います。

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

364:デフォルトの名無しさん
08/11/29 12:43:32
>362
んなこたぁない。FTP(クライアント)はVBの機能じゃないんだぜ?エスパーすればINet系関数だろうが、
あれは腐ってるからな。

365:デフォルトの名無しさん
08/11/29 14:59:29
VB用のコンポーネントにあったって不思議じゃない

366:デフォルトの名無しさん
08/11/29 17:01:16
コンポーネントなら関数とかいわんだろ。

367:デフォルトの名無しさん
08/11/29 18:20:45
お願いします。

構造体の入れ子を作りたいのですが、下記ではエラーになってしまいます。
Private Type ABC
i As Integer
j() As ABC
End Type

動的なツリー構造を作りたいのですが、可能でしょうか。


368:デフォルトの名無しさん
08/11/29 19:39:41
皆さんよろしくお願いします。

URLリンク(upp.dip.jp)
実は↑のような流れのスクリプトを組みたいと思っているのですが
if を使っての簡単なサンプルを書いていただけませんでしょうか?
本当に簡単なもので結構ですので・・・。

369:デフォルトの名無しさん
08/11/29 19:49:37
URLリンク(blogs.yahoo.co.jp)


370:デフォルトの名無しさん
08/11/29 19:49:50
>>368
何だこのフローチャート
もう少しルールに従って書けよw

371:デフォルトの名無しさん
08/11/29 19:53:05
フローチャートと呼んでいいのかww
まあ>368がんばれ

372:368
08/11/29 19:59:04
た、たしかに
酷いことになってますね・・・
すいません・・・

373:デフォルトの名無しさん
08/11/29 21:31:00
むしろ状態遷移図だな。

374:デフォルトの名無しさん
08/11/29 21:47:21
無限ループ

375:デフォルトの名無しさん
08/11/29 22:23:29
start:

if (isExist(a)) {
 goto start;
}

second:

if (isExist(b))
 goto start;
else {
 goto second;
}

376:デフォルトの名無しさん
08/11/29 23:22:22
VB4で作られたソフトウェアが動きません。
VB40032.dll、MCI32.ocx、grid32.ocx、comdlg32.ocxが必要なソフトなんですがXPでは入れても動かないんです。
「ファイルの読み込み中にエラーが発生しました」と出てしまいます・・・
MEでは正常に動きました。
上記4つのファイルはME、XP共に同じバージョンでした。

解決方法知っていたら教えて下さい。お願いします。

377:デフォルトの名無しさん
08/11/29 23:27:06
>>376
スレ違い

378:デフォルトの名無しさん
08/12/04 10:59:01
>>367
循環参照できないんですよねー。ケチケチしやがって。
可変長配列なら無限ループにならないから許可してほしいところです。
等価ではないがクラスモジュールでこう

(CLASS ABC)
Public I As Integer
Public J As Collection

あくまで等価ではないので使えなさそうですが。


379:デフォルトの名無しさん
08/12/07 08:21:48
>>367
すまん、どんな場合それを使うのか教えてくれ・・・

380:デフォルトの名無しさん
08/12/07 13:33:33
いわゆる「自己参照構造体」ってやつを作りたいんだろうけど、
だったらVBの場合ユーザー定義型じゃないくてクラスを使わないと駄目だね。

仮にユーザー定義型に循環参照(余談ながら、この用語の使い方は本来不適切だと
思うんだが、MSDNがそうなってるんだね)が可能だとしても、ユーザー定義型は
ドトネトでいう値型になるから無駄が多すぎる。

381:デフォルトの名無しさん
08/12/07 13:57:04
Private Type ABC
  i As Integer
  j() As ABC*
End Type

Dim udtABC As ABC
udtABC.j = &udtABC

夢のようだが、() は誰が実装すんのかね。
j() が自己参照にしては自己が配列であることは保障されてないし。
まぁ蛇足でしかないけど。

382:デフォルトの名無しさん
08/12/08 03:32:56
>>381
そこまでなくても…
循環参照はメモリ確保がどこまでも終わらないから禁止なんだろうけど、
JはREDIMするまで要素数ゼロだから、それは許されるようにしてくれていても
いいのにと思うんだが。
理解が違っていたらすまん。

早く寝なきゃ…

383:デフォルトの名無しさん
08/12/08 03:36:40
そういえば>>377
スレ違いだっけ?


384:デフォルトの名無しさん
08/12/11 23:35:25
30Hex + 30Hex + 30Hex + 30Hex + 30Hex + 33Hex + 30Hex + 30Hex +35Hex + 33Hex + 30Hex
+30Hex +31Hex + 03Hex = 37Hex
(+は排他的論理和、Hexは16進数)

とオムロンのマニュアルに書いてあるんですが
これをVBで計算すると37なんて数字が出てきません。

val(hex(30)) xor val(hex(30)) xor ・・・
とかじゃぁ 根本的に何か間違ってるのかな。。

385:デフォルトの名無しさん
08/12/11 23:41:40
間違っています

386:デフォルトの名無しさん
08/12/12 00:08:30
30h

387:デフォルトの名無しさん
08/12/12 00:13:39
&h30 xor &h30 xor …

388:デフォルトの名無しさん
08/12/12 00:14:36
00h+33h+00h+02h+00h+02h

389:デフォルトの名無しさん
08/12/12 00:17:42
00h+33h+00h+06h+00h+02h

390:デフォルトの名無しさん
08/12/12 00:43:38
Private Sub hoge()
  Const hexList As String _
    = "30, 30, 30, 30, 30, 33, 30, 30, 35, 33, 30, 30, 31, 03"

  Dim hexText As Variant
  Dim result As Integer
  result = 0
  For Each hexText In Split(hexList, ",")
    result = result Xor CInt("&h" & Trim(hexText))
  Next
  MsgBox (hex$(result))
End Sub

391:デフォルトの名無しさん
08/12/12 01:02:04
リストボックスには、複数の学生の名前、教科、点数と
その合計、平均などが表示されていて、
ボタンを押すと、ひとりひとりの学生の点数の合計と点数の表示をする
プログラムを作成したいのですが、教えて下さい。

392:デフォルトの名無しさん
08/12/12 01:13:35
どんな表示されてんだよ

393:デフォルトの名無しさん
08/12/12 01:28:50
ああ、悪い。

氏名  国語  英語 合計 平均

A   50   60  110  55
B   60   70  130  65
C   70   70  140  70

合計  180  210  
平均  60   70


こんな感じに表示されています。
ボタンの名前を「縦計 横計」と表示させ、
押すと、ひとりひとりの合計と平均を表示し、
最後に国語と英語の合計、ならびに平均を表示させたいのです。

394:デフォルトの名無しさん
08/12/12 01:31:18
>ああ、悪い。
なんだその態度は
氏ねばいいのに

395:デフォルトの名無しさん
08/12/12 01:33:29
select case


end select

396:デフォルトの名無しさん
08/12/12 01:58:37
悪い印象を与えてしまったのなら謝るよ。
日本語って難しいな…
例えば「ああ、スマソ」って言ったらまた印象は違うだろうしね。



397:デフォルトの名無しさん
08/12/12 02:04:34
ドシロウトはエクセルでも使っとけ

398:デフォルトの名無しさん
08/12/12 02:19:54
在日は国へ帰れ

399:デフォルトの名無しさん
08/12/12 06:28:24
>>396
他人に物を聞く態度じゃない
ここにいるのは親しい友人じゃない

400:デフォルトの名無しさん
08/12/12 06:34:12
で、何がわからんの? 足し算して割り算するだけだろ?

401:デフォルトの名無しさん
08/12/12 09:14:50
>>393
excelのVBAで充分
そこで人間性を磨いて来い 

402:デフォルトの名無しさん
08/12/12 22:03:09
>>391ですが、今日までの課題だったので
情報科の人に教えてもらい、無事解決しました。
基礎なのでさすがに学校で聞くのは気が引けました。



403:デフォルトの名無しさん
08/12/12 22:04:35
何も解決してないだろw

404:デフォルトの名無しさん
08/12/12 22:17:35
continueがない!!gotoで代用した。

405:デフォルトの名無しさん
08/12/13 01:30:41
>>404
お前はVBを知ってるのかと小一時間(ry

406:デフォルトの名無しさん
08/12/13 01:57:10
>>405
whileとかforのループのcontinueね。あんの?

407:デフォルトの名無しさん
08/12/13 02:44:13
Continue Forとかのこと?

408:デフォルトの名無しさん
08/12/13 03:31:59
日本        日本語でおk
英          please in Japnese
独          bitte auf japanisch
仏          veuillez dans le Japonais
イタリア     . prego nel giapponese
ポルトガル  . por favor no japones
スペイン    . por favor en japones
オランダ   ..Japanner gelieve in
スウェーデン behaga i japan
ギリシア    .παρακαλ? στα ιαπωνικ
ロシア      пожалуйста в японце
トルコ     . Japoncata tamam.
中国        請在日文
沖縄        やまとぅぐちっしいい
アイヌ      . sisam itak ani ukoitak yan.
大阪民国    日本語でおkや

409:デフォルトの名無しさん
08/12/13 09:34:26
>>408
日本語でおk


410:デフォルトの名無しさん
08/12/13 13:23:33
フイタ

411:デフォルトの名無しさん
08/12/13 13:25:30
>>405
いやおまえの方がVB知らなさ過ぎる。
.NET以後にVBはじめた情報弱者のにわかは消えろよ。


412:デフォルトの名無しさん
08/12/13 15:11:55
.NET以降にVBはじめたら情報弱者!うは

413:デフォルトの名無しさん
08/12/13 15:20:02
いやまあ、スレがスレだからね。
TPOを考えれば>>411のように罵倒されてもまあ仕方がない面はある。

414:デフォルトの名無しさん
08/12/13 15:24:00
このスレ時々スレタイの意味が理解できてないやつが混じるんだよな。


415:デフォルトの名無しさん
08/12/13 15:27:20
>>412
これは正解。普通C#選ぶ。あえてVBを選ぶ理由がない。

416:デフォルトの名無しさん
08/12/13 16:14:52
405 はVB6でgoto使うのはスパゲティの始まりだから
continueのためだけにgotoに逃げるんじゃねぇ!って事を
言いたかったんジャマイカ?

わからんけど。

417:デフォルトの名無しさん
08/12/13 17:21:49
でもifのネストが深くなるよりわかりやすいんじゃね。

418:デフォルトの名無しさん
08/12/17 09:43:20
日頃はVC使い。今更VB6始めたが、(VCもそうだが)仕事とかではない

VB6でdllexportするっていったら、基本的にはOCX化するのみ?
あと、簡潔に、通常の.objファイルをスタティックリンクする方法とかある?


ついでに参加
>>415
最近、VB6で書かれたマルウェアが増えてきて、ちょっと勉強しとこうと思ったのが、
いまさらVB6やろうと思ったきっかけ どう考えてもVCで書いた方が楽なような処理を
ごりごりVB6で書いてあるようで、もしかすると、難読化のつもりもあるのかもしれん
あと、IDE軽かったから、遊ぶ分にはいいかなとw

419:デフォルトの名無しさん
08/12/17 10:49:40
恥ずかしいにもほどがある

420:デフォルトの名無しさん
08/12/17 11:13:14
OCX化というよりActiveX(COM)化、EXE, DLL, OCX 形式のCOM。
ものすごい裏技でVBの関数を直接呼び出す方法もあるちゃあるが現実的ではない。

>最近、VB6で書かれたマルウェアが増えてきて
VBSなどで書かれてるその手のスクリプトをそのまま流用できるからじゃないのかね。
COMの扱いは簡単だしランタイムも大概入っている。


421:デフォルトの名無しさん
08/12/17 13:53:25
流れぶった切って申し訳ない。
vbは余り馴染みがなく今から記述することが出来るかどうかお教え頂きたい。

VBで作成したアプリに中国語を表示したい。
OSの設定ロケールは日本語。
vb6jp.dllはインストール済み。

OSのロケールが中国の場合は上手く中国語が表示出来ました。
日本ロケールだと文字化けしてしまいます。
SetThreadLocaleを使いロケールを変更してみましたが効果ありませんでした。
SetLocaleInfoは使い方が解りませんでした…。

ロケール変更にて文字化けを直すことは可能なのでしょうか?
お教え願います。

422:デフォルトの名無しさん
08/12/17 16:01:54
あきらめるか、.netにする。

423:デフォルトの名無しさん
08/12/17 20:05:59
>>421
中国語版のVB6.0で開発すればできるよ。

424:デフォルトの名無しさん
08/12/17 20:26:15
似たような質問
URLリンク(www.biz.kotaete-net.net)

425:デフォルトの名無しさん
08/12/18 01:44:45
>>422-424
回答ありがとうございます。
自分で調査したうえでそのような予感はしてましたが・・・。

特に424さんありがとうございました。
何故ダメなのか?という理由までわかったのですっきり諦められます。
別の方法で処理を回避、またはオペレーション誘導などで
問題を回避したいと思います。

皆さんありがとうございました。

426:デフォルトの名無しさん
08/12/18 12:13:42
VB6にての質問。
ファイル名が文字化けしているファイルを、コモンダイアログで指定して読み込みたいんだけど、
読み込んだ段階でパス名が変わってしまって、読み込みが出来ない。
解決策はありますか?

427:デフォルトの名無しさん
08/12/18 13:40:42
文字は化けてなどいない

428:デフォルトの名無しさん
08/12/18 20:41:41
リネームしたら

429:デフォルトの名無しさん
08/12/19 12:19:15
>>427
一般的に文字化けと言うと思う。

>>428
リネームしたら確かに読み込めるけど、そのままいける方法が無いかなとね。

430:デフォルトの名無しさん
08/12/19 13:23:25
>>429
何がどう化けたと思ってるんだ?

431:デフォルトの名無しさん
08/12/19 14:19:53
UNICODEのファイル名を読んで化けたとか言うオチじゃあるまいな

432:デフォルトの名無しさん
08/12/19 15:07:57
VB6でMDBからデータを引っ張りクリスタルレポートに出力しています。
最初はクリスタルレポート8.5を使っていたのですが使いにくいので前使っていた4.7を入れなおしました。
プリンターとプレビューの出力は上手く行くのですがテキストファイルやCSVの外部ファイルにエクスポートの際に
実行時エラー20540
エクスポート DLL がないかまたは古いです。
というエラーメッセージが出ます。
散々ぐぐりましたが解決策が見つかりません。
何かコンポーネートか参照をし忘れてるのでしょうか?

433:デフォルトの名無しさん
08/12/19 16:12:02
OSのクリーンインストールからやり直して、やっぱりエラーが出てから文句言え

434:デフォルトの名無しさん
08/12/19 18:40:38
リネームできるんだからよめるだろ

435:デフォルトの名無しさん
08/12/20 09:45:58
根本的に変な質問かもしれませんが教えて下さい。
VBで作られたEXEはデバッグというかコードを
読むことができるんでしょうか?
Visual Studio 6.0は入ってます。

正直なところ、EXEはアセンブラで読むしかない
みたいなイメージがあるんですが・・・

436:デフォルトの名無しさん
08/12/20 10:16:52
読めない

437:デフォルトの名無しさん
08/12/20 11:24:20
VB用の逆アセツールもあるけどね

438:デフォルトの名無しさん
08/12/20 11:29:25
>>435
URLリンク(www.watahiki.info)

439:デフォルトの名無しさん
08/12/20 19:20:56
Dynamic HTML Editing Control SDK を入手できるWebサイトは?
まあ無くても、もう持ってるから別に困りませんが。





440:デフォルトの名無しさん
08/12/21 08:23:22
>>439
MSDN

441:デフォルトの名無しさん
08/12/24 00:03:19
VB6.0でエクセルのAVERAGEみたいな計算できませんか?

| 10| 20| |=AVERAGE(A1:C1)


442:デフォルトの名無しさん
08/12/24 00:11:07
(10+20)/2

443:デフォルトの名無しさん
08/12/24 00:13:39
>>441
スレタイどおりで乙


444:デフォルトの名無しさん
08/12/24 01:27:17
(10+20)/3だろ

445:デフォルトの名無しさん
08/12/24 08:44:14
C1のnullをどう扱うかだな

446:441
08/12/24 10:56:17
>>445
そうなんです。nullをどう処理するかなんです。
IF 文でだらだら書くのがちょっと思い書きました。
>>444
10ではなく15の答えが欲しいのです。



447:デフォルトの名無しさん
08/12/24 11:21:18
FlexGridか何かでやってるのかな
/nのnの数を
セルの値がisnumericでTrueになったらインクリメントしていくとか

448:デフォルトの名無しさん
08/12/24 12:25:59
>>446
次は最初からそう書こうね 後出しはじゃんけんでも嫌われるだろ?

449:デフォルトの名無しさん
08/12/25 06:44:52
まだいるかな

>>435
Pコードだと、Pコード逆アセンブラがいる >>438
ネイティブコードなら、デバッグシンボル吐かせれば、お好きなように
clでいう、/Faみたいなものは、ラベルが大幅に置き換わってしまうため、
ろくな内容にならない exeを直接逆汗したほうがまし

450:デフォルトの名無しさん
08/12/25 11:05:47
VB5.0のツリービューのノードのテキストは
一部分を色を変えることはできるでしょうか?

例えば
hoge (100)
という文字列の場合(100)だけ青にするといったことが
可能でしょうか?


451:デフォルトの名無しさん
08/12/25 20:49:55
たぶん無理。カスタムドローできないよね?

452:デフォルトの名無しさん
08/12/30 20:41:11
vb6.0でImageListコントロールを表示するにはどうしたらいいのでしょうか?

453:デフォルトの名無しさん
08/12/30 20:47:59
自己解決しました

454:デフォルトの名無しさん
09/01/01 00:03:49
あけおめ

455: 【だん吉】 【1371円】
09/01/01 01:13:05
С Новым Годом!

456:デフォルトの名無しさん
09/01/01 03:33:22
質問お願いします。
3種類の商品をi(i=1,2,3)として、
それぞれの発注プログラムを構築したいと思っています。

計算方法は同じなので、iが3になるまでのFor~Next処理でやりたいのですが、
それぞれのパラメータ(例えば需要INVi)のiのなかに数値を代入して
あらかじめ決めておいたINV1からINV3の数値を利用して作りたいと思っています。

この場合はINViのiの中に数値i=1~3を代入してINV1~INV3とするにはどのようなコードを書けばよいのでしょうか?
また、そうしたらそれ以前に決めておいたINV1~INV3の数値を参照できるのでしょうか?

初心者の質問で申し訳ないですが、どうかご教授お願い致します。

457:デフォルトの名無しさん
09/01/01 10:24:52
何をしたいのかまったくわからん・・・

とりあえず、配列ではだめなんかい?

458:デフォルトの名無しさん
09/01/02 02:54:20
AからBまでの和を求めるとしたらどうやってコードすればいいんですか?
大小のチェックをして場合分けしてやると思うんですけど。
教えてください。

459:デフォルトの名無しさん
09/01/02 02:59:46
ΣA+B

460:デフォルトの名無しさん
09/01/02 02:59:54
そーなんですよ川崎さん

461:デフォルトの名無しさん
09/01/02 03:06:10
For i = A To B
   result += i
Next

462:デフォルトの名無しさん
09/01/02 10:14:02
>>357さん

なるほど~配列使ってやってみます!

説明下手ですいませんでした…ありがとうございました!

463:デフォルトの名無しさん
09/01/05 22:54:11
VB6でform1の何らかの処理中にform2で処理中って表示したいんだけど
なんかいい方法ありますか?
モーダルだとform1の処理が止まってしまうんで・・・

464:デフォルトの名無しさん
09/01/05 22:58:49
止まってるように見える事なんて気にせず実行ファイル作ればいいとおもうよ

465:デフォルトの名無しさん
09/01/05 23:03:29
DoEvent

466:デフォルトの名無しさん
09/01/05 23:19:37
もしかして別フォームをモーダルで表示しても
その後の処理は続いてると?

ついでに教えてもらいたいんですが
モーダルで表示したフォームってshowイベントで止まるでいいですか?

467:デフォルトの名無しさん
09/01/05 23:24:24
>>463
素直にドトネトつかってマルチスレッドのコードを書く方がいい。
ってういか、だからFormのコードに処理なんか書いちゃダメなんだよそもそも。
だからVB厨って呼ばれるんだ。

468:デフォルトの名無しさん
09/01/05 23:26:04
モードレスで出せばいいだろJK

469:デフォルトの名無しさん
09/01/05 23:40:33
処理中はform1を操作できなくしてform2のみ操作できるようにしたいのです
モードレスでもいい方法があればいいのですがありますか?

質問ばかりですいません・・・

470:デフォルトの名無しさん
09/01/05 23:47:05
vodal

471:デフォルトの名無しさん
09/01/05 23:50:59
Enable = False でいいだろJK

472:デフォルトの名無しさん
09/01/05 23:52:28
form1.enabled=false

473:デフォルトの名無しさん
09/01/06 00:13:55
一度enabledでやってみたんですがウィンドウがアクティブにならなかったので諦めてました
もう一度試してみます

夜遅くに付き合ってくださってありがとうございました!

474:デフォルトの名無しさん
09/01/06 00:31:11
操作できないウィンドウをアクティブにして何がしたいんだよ?

475:デフォルトの名無しさん
09/01/06 00:35:15
form2をアンロードして、form1のenabledをtrueにしたときです
やり方がまずかったのか、もう一度試してみます

476:デフォルトの名無しさん
09/01/06 10:27:29
本当に申し訳ありませんが、どなたか教えてください。

'住所1の印字
P_PRINT.E_Font "FC行楷書体", ADRS_FNT, True, 0
HH = ADRS_FNT / 2.835 + 1
If Not IsNull(AdoRs![住所1]) Then
For I = 1 To Len(AdoRs![住所1])
BAR = Mid$(AdoRs![住所1], I, 1)
' If BAR = "-" Then BAR = "ー"
' P_PRINT.E_String_Tate 60, 14 + (I - 1) * HH, BAR, RGB(0, 0, 0) '縦書き
If BAR = "ー" Or BAR = "-" Then BAR = "|"
P_PRINT.E_String 60, 14 + (I - 1) * HH, BAR, RGB(0, 0, 0)
Next
End If

上記はVBでのアプリケーションから封筒に宛名を印刷する。
というコードの一部なのですが、現在縦書き仕様になっており、
横書き仕様に書き換えたいのですが、一体どこをどう換えれば良いのか、
全く検討つきません。
心優しい方、ご教示いただければありがたいです。。。


477:デフォルトの名無しさん
09/01/06 12:25:18
age

478:デフォルトの名無しさん
09/01/06 16:18:35
>>476
縦書きの部分がREMになってて横書きの部分が有効になってるように見えるんだけど…
とりあえずこれでどうかな

P_PRINT.E_Font "@FC行楷書体", ADRS_FNT, True, 0

(略)

If BAR = "-" Then BAR = "ー"
P_PRINT.E_String_Tate 60, 14 + (I - 1) * HH, BAR, RGB(0, 0, 0) '縦書き
' If BAR = "ー" Or BAR = "-" Then BAR = "|"
' P_PRINT.E_String 60, 14 + (I - 1) * HH, BAR, RGB(0, 0, 0)

(略)

479:デフォルトの名無しさん
09/01/06 17:34:42
>>478
回答ありがとうございます!


480:デフォルトの名無しさん
09/01/06 17:41:48
>>478 さんは
私の神様です!まだ実行してないですが、とにかく嬉しかったので・・・
連投すみません!

481:デフォルトの名無しさん
09/01/07 02:15:27
Google先生に頑張ってもらったのですが見つからないので、力をお貸しください。

VBAでListViewを作成しています。
グリッド表示で任意の行にある項目をダブルクリックした時、それが列の何番目なのかを取得したいのですが
VBAでは上手く出来なくて困っています。
ヒントや方法、解説されているサイトなどがありましたら、教えていただけないでしょうか。
よろしくお願いします。

482:デフォルトの名無しさん
09/01/07 18:06:16
質問です。

コードの中で計算したものを
エクセルに表示したいのですが、どのようにすればいいですか?

483:デフォルトの名無しさん
09/01/07 18:21:45
VB/VBAに限らない簡単なFAQのほうだけ

>>482
Excel側のドキュメント読んで、サンプル探すといい
どのみち、慣れるまではExcel側のドキュメントを読み漁ることになる

484:デフォルトの名無しさん
09/01/08 10:27:19
>>482
URLリンク(chaichan.web.infoseek.co.jp)
このへんで

485:デフォルトの名無しさん
09/01/08 11:05:24
低レベルの質問ですいません。クラスとか、オブジェクト、
インスタンスなどと言う用語の意味が良くわからない
のですが下のような解釈でいい?

Step 1 私のタコ焼き(オブジェクト:器)の用意をする
Dim 私のタコ焼き(オブジェクト:器) As タコ焼き(クラス:器と具の仕様書)

Step 2 私のタコ焼き(器)に具(インスタンス)を入れ焼く
Set 私のタコたこ焼き(オブジェクト:器) = New タコたこ焼き(クラス:器と具の仕様書)

Step 3 私のタコ焼きに仕事をさせる
私のタコ焼き(オブジェクト:具の入った器).私に食われる

あと、Step 1~Step 3 において、物理メモリー上で何が起きてん?
領域の確保とか、コピーとか、値の代入とか起きてるような気が
するんですがどうなんでしょう? それと、各領域の先頭部分
にはヘッダーみたいなのが存在するはずだと思うのですが。

486:デフォルトの名無しさん
09/01/08 12:10:20
すいません、間違えました。
タコたこ -> タコ

487:デフォルトの名無しさん
09/01/08 18:31:21
クラスモジュールひとつ書いてみればいいんじゃね

488:デフォルトの名無しさん
09/01/08 19:43:19
>>485
知能指数が余程高い人は別として、普通の頭の人間がまず抽象的な概念を
先に完全に理解しようとするのは無理がある。

↓辺りの文章をさらっと読んで、とにかく実際にクラスモジュールを使ってみる方がずっと理解が早い。
抽象的な概念はあとから自ずと分かってくるから。
URLリンク(homepage1.nifty.com)

489:485
09/01/08 20:46:44
>>487 >>488
やはり、複雑なことを一足飛びに抽象的に
理解しようとするのには無理があるって事ですね。
紹介していただいたWebページを参考に一つ一つ理解して
いこうと思います。感謝です。

490:デフォルトの名無しさん
09/01/09 15:50:10
ボタンを1回クリックで1増える処理があるとして
ボタンを長く押していると連続して1が増えていくような
処理ってどうやったらできるのでしょうか?
クリックイベントだといったん離さないと次のクリック
イベントが発生してくれませんでした。

491:デフォルトの名無しさん
09/01/09 16:52:09
MouseDown, MouseUpイベント+Timerとか

492:デフォルトの名無しさん
09/01/09 17:14:07
>>491
やはりTimerですかorz

493:デフォルトの名無しさん
09/01/09 17:38:19
>>483
>>484

ありがとうございます!
早速試したのですが、最初の参照設定からうまくできず、
Excel.Applicationは宣言されていませんとエラーが出てしまいます。

VB2008なのですが…

494:デフォルトの名無しさん
09/01/09 19:16:58
>>493
スレタイ嫁

495:デフォルトの名無しさん
09/01/18 11:01:05
Excelとかの他のオブジェクトを使うことを何て言葉で表現したらいいのか。
「ライブラリを使う」っていうのか、「オートメーションを使う」って言えばいいのか、
そして、あれもCOMと言えるのかな。「COMを使う」って言えばいいのかな。

今は、その適切な言葉の使い方で説明できなくてもどかしいが、VB6のソースはなぜか遅延
バインディング多いみたいだな。何で事前バインディングにしないのか疑問だが。遅延でしか
対応不可能な特別な場合を除いて、原則として事前にしない意味がわからん。単に知識が無い
だけなのか?
理解不能でないように補足しておくと、遅延とは、CreateObjectのことで、事前は参照設定して
専用のデータ型で宣言してNewでオブジェクトを作ることだ。

496:デフォルトの名無しさん
09/01/18 11:30:54
参照設定するのが面倒くさいんじゃないの?知らんけど。

497:デフォルトの名無しさん
09/01/18 12:20:47
>>495
クライアント環境のOfficeがバージョン不定の場合なんかは遅延にせざるをえない



498:デフォルトの名無しさん
09/01/18 12:31:48
まあ理屈としては497の言うとおりなんだけど、
実際は97-2007でほとんどのメソッドは互換性があるんだけどね。

一部動かないメソッドを使うところだけ部分的に遅延バインド(といっても
WorksheetとかWorkbookのインスタンスをObject型の変数にぶち込むだけだが)
するように作った方が、最初から全部遅延バインドで作るより開発効率がいい。

499:デフォルトの名無しさん
09/01/18 12:37:43
遅延バインドだと、動かないメソッドが使えるようになるのか?

500:デフォルトの名無しさん
09/01/18 13:22:44
>>499
愚問過ぎる。

501:デフォルトの名無しさん
09/01/18 14:09:23
>>499
お前勉強しろよ・・・
インテリセンスくらいの差しかない

502:デフォルトの名無しさん
09/01/18 16:51:35
開発時は参照設定してインテリセンスに助けてもらって、最後に直すとかよくやった。

503:デフォルトの名無しさん
09/01/20 13:48:59
この流れだといまさら聞けないんだが、くだすれだから投げてみる
事前バインドっていうのは、いうなれば、コード生成の時点で、
(たとえば、inprocserverなら)vtable呼び出しになっている。みたいなイメージでおk?
んで、実行時バインドってのは、typelibみにいって呼ぶみたいな。
だから、実行時バインドなら、理論上、タイプライブラリが替えられちゃっても動く?
(そんなことしょっちゅうあってほしくないけど、まあ、理論上な)

504:デフォルトの名無しさん
09/01/20 14:40:44
ググレカス

505:デフォルトの名無しさん
09/01/22 10:13:58
つれないなあw

投稿前にぐぐって、かわりに知ったのは、VBどとねと移行ツールが、
事前バインドになってない個所を指摘してくれるらしい?ってことだった
どとねとは食わず嫌いだが、これはたまに使えるかもしれん

506:デフォルトの名無しさん
09/01/22 19:25:24
VB6のソースをダウンロードして見てみたのですが、
グローバル変数とローカル変数に同じ名前をつけたり、
ループの中にDimで変数を宣言するのって普通のことですか?
URLリンク(www.pccard.co.uk)


507:デフォルトの名無しさん
09/01/22 19:38:27
「シンタックスエラー」以外は普通。

508:デフォルトの名無しさん
09/01/22 19:40:36
ループなどブロック内での変数宣言は禁止にしてることが多いな。
嵌ることがある。VB.NETから意味が変わったし。

509:デフォルトの名無しさん
09/01/23 00:49:38
オレもブロック内での宣言は絶対しない。
宣言は冒頭にまとめてする事にしている。

510:デフォルトの名無しさん
09/01/23 01:01:38
BASICじゃあるまいしwwww

しまった、VBはBASICか

511:デフォルトの名無しさん
09/01/23 01:10:59
基本的には使う直前に定義すべきだと俺は思うけどね。

「嵌る」というのはループ内の定義箇所で変数の値がデフォルト値に初期化されると
(誤って)期待した場合だと思うけど、それはむしろきちんと明示的に初期化しない
ことの方に問題がある。

あとVB6だと見た目ブロック内スコープに見えても実際のスコープは関数内、
っていうのも仕様としてはいやらしいけど、あまり問題にならんと思う。

512:デフォルトの名無しさん
09/01/23 06:58:10
>>509
こういう頭の固い奴たまに見るけど、何言語出身なの?

513:デフォルトの名無しさん
09/01/23 07:44:10
K&R CかCOBOLだろ

514:デフォルトの名無しさん
09/01/23 08:06:27
goto使う奴は、とか

しまった、VBはBASICか

515:デフォルトの名無しさん
09/01/23 10:49:54
gotoは使わざるえないだろw

516:デフォルトの名無しさん
09/01/23 11:40:26
>>511 が全部書いているが、
同じ理由で関数/サブルーチン内の一番外側のブロックでDimすることにしてる。
やらん方がいいのはブロックの中の宣言したものを外で使うこと。
If ... Then
   Dim x as ...
End If
print x
ブロックの中で配列の宣言やDim x As New ,,, でオブジェクト宣言はしないこと。
前者はVB.NETでコンパイルエラーになるが、後者はコンパイルは通るが動作が異なる。

517:デフォルトの名無しさん
09/01/23 16:34:27
VB5とVB6の違いは大きいですか? 中古で5の入門書のほうが安かったので。

518:デフォルトの名無しさん
09/01/23 16:49:37
5でも6でも80過ぎの借金だらけのババアと結婚するようなもんだ

519:デフォルトの名無しさん
09/01/23 17:10:44
VB6を持っているならMSDN LibraryにVB6の新機能といった項目がある
一番大きい違いはDB(DAO->ADO)関係かな

520:デフォルトの名無しさん
09/01/23 17:52:44
入門するならターゲットに出来るだけ近いものがいい
書いてあることと同じ結果が出ないと無駄な時間を費やすことに なったりならなかったり


521:デフォルトの名無しさん
09/01/24 00:21:20
>>515
お前エラートラップ限定で使わざるを得ないっていってんだよな?
そうだよな?そうだと言えよ!!!


522:515
09/01/24 00:46:30
>>521
それ以外になにがあるw

523:デフォルトの名無しさん
09/01/24 00:53:47
N-88BASIC

524:デフォルトの名無しさん
09/01/24 04:24:35
MS-DOS版N88日本語BASIC(86)

525:デフォルトの名無しさん
09/01/24 12:24:07
VBってなんでエラートラップでon goto にしたんだろうな?
あれさえなければ

526:デフォルトの名無しさん
09/01/24 16:34:01
vb6.0を使用しています。
1つのformに、数値が入力されたtextboxとlabelを複数配置してtxtまたはcsvに保存するものを作っています。
そこで値の入っていないboxを飛ばして保存したいのですが可能ですか?
よろしければヒントお願いします。




527:デフォルトの名無しさん
09/01/24 16:41:00
>>526
そういう風に作ればいいでない?
やりたいことが伝わってこないな。

528:526
09/01/24 17:38:48
言葉足らずで申し訳ないです。
取得してきた数値を表示させるtextboxとlabelのセットが、縦横5×6ぐらいで並んでおり、
フォームデザイン上、表示させる順番が飛び空白ができてしまいます。
そのため保存したものが
       "123","00","","","567","00","",""・・・・
のように間延びするので、どうにかできないかと思い聞きました。

529:デフォルトの名無しさん
09/01/24 17:57:29
>>526
Option Explisit
Dim iFileNo As Integer

Private Sub Command1_Click()'保存ボタン
Dim i As Integer

iFileNo= FreeFile
Open CurDir & "\test.csv" For Append As #iFileNo
For i = 0 To 10 'テキストボックスのコントロール配列が増減の場合は10の値を変更
call check_Hozon(i)
Next i
Close #iFileNo

End Sub

Private Sub check_Hozon(ctlIndex As Integer)’入力チェックと出力
If Text1(ctlIndex),text <> "" Then ’空白の場合は書き込み
Print #iFileNo,Label1(ctlIndex).Caption & "," & Text1(ctlIndex),text
End if
End sub

530:デフォルトの名無しさん
09/01/24 19:23:53
>>529
ありがとうございます。
勉強し直してきます。

531:デフォルトの名無しさん
09/01/24 20:03:17
あ誤字訂正
×Option Explisit
○Option Explicit

×空白の場合は書き込み
○空白じゃない場合は書き込み

似たようなコントロールが並ぶ場合は
コントロール配列を応用してインデックスで関数化する
改行要らなくて横にずーっと列挙するんであれば
Printする前に空白判定してstring型の変数かなんかにくっつける


532:デフォルトの名無しさん
09/01/24 23:50:55
VB6でドットインパクトプリンタで納品書を印字するような用途の場合、
レポート印字につかうActiveXコンポーネントで定番と呼べるものはなんでしょうか?

533:デフォルトの名無しさん
09/01/24 23:53:35
くりりぽ、ActiveReports あたり

534:デフォルトの名無しさん
09/01/25 14:35:17
何でVB6はいつもIntegerで、LongやVbMsgBoxResultなどを使わないソースが蔓延してるのか?

535:デフォルトの名無しさん
09/01/25 14:50:33
>>534
なに?integerだとまずいのか?
コントロール配列で上限超えるような事ないから
integerにしたまでだけど

536:デフォルトの名無しさん
09/01/25 15:18:14
まあそれだったらByteでいいだろうな。

537:デフォルトの名無しさん
09/01/25 15:20:26
.netや他の言語ならIntegerでいいけど。

538:デフォルトの名無しさん
09/01/25 16:35:37
VB6.0詳しい人に質問

form内でのみ(project内ではない)グローバル変数を使いたい場合どうすればいいですか?

539:デフォルトの名無しさん
09/01/25 16:41:24
Cはint型OSに依存するからlong使えって昔習った気がするが

540:デフォルトの名無しさん
09/01/25 16:43:10
>>538
フォームのソースコード1番上にDim ~って宣言すりゃいいんじゃね?

541:デフォルトの名無しさん
09/01/25 16:46:23
>>540
さんくす

542:デフォルトの名無しさん
09/01/25 17:03:36
>>539
それはchar系以外全部同じ。longだって、ところによっては8バイトのものもある。
必要ならint32_tのような型を使う。

543:デフォルトの名無しさん
09/01/25 17:17:20
>int型OS
意味するところが不明

544:デフォルトの名無しさん
09/01/25 18:08:26
Integerを使う=VBを理解していない

545:デフォルトの名無しさん
09/01/25 18:40:36
16bitと32bitのOSでintは2バイトと4バイト、longは両方4バイトなのがあったからそれじゃない?

546:デフォルトの名無しさん
09/01/25 18:43:32
64bit CPUの普及で状況は混沌としてきた

547:デフォルトの名無しさん
09/01/25 19:53:21
違う。もっと簡単なことだ。
Longを返すものをIntegerで受け取ってるものが多い。
それはあまり推奨できないということだ。

548:デフォルトの名無しさん
09/01/25 20:01:22
今、CとVBが混在してない?

549:デフォルトの名無しさん
09/01/25 20:37:47
>>542
なるほどな思わぬところで勉強になったわサンクスコ

550:デフォルトの名無しさん
09/01/25 22:01:15
本当はchar型の大きさも環境に依存するけどな

551:デフォルトの名無しさん
09/01/26 00:05:11
>>533
ありがとう。その二つをチェックしてみる。

552:デフォルトの名無しさん
09/01/26 07:35:09
>>547
確かに
呼び出し時の参照渡しでは型が違うとエラーになるが
戻り値の代入では型が違っても自動変換されるから
気付いてないっぽいのを結構見かけるね

553:デフォルトの名無しさん
09/01/26 12:32:18
俺は変数の最初に型名を入れるように習った
グローバルならPublicのPをつけるように(今思うとPrivateもPだから紛らわしいが)

554:デフォルトの名無しさん
09/01/26 12:59:00
ポーランド記法は今や嫌われるようになってしまった

555:デフォルトの名無しさん
09/01/26 12:59:51
ハンガリアン記法だった。すまそ

556:デフォルトの名無しさん
09/01/26 13:01:31
>>555
モンゴリアンチョップは今でも俺の必殺技!

557:デフォルトの名無しさん
09/01/26 14:42:08
ハンガリー記法って今は嫌われてたんだ

558:デフォルトの名無しさん
09/01/26 22:04:23
>>553
そういう記法でのグローバルはgだろ

というか批判されてるのはシステムハンガリアンだけだよ
アプリケーションハンガリアンは特別には批判されても嫌われてもいない
もちろん否定的意見は存在するが、それはどの記法にも見られるレベルのもの

しかし型付けが弱いVB6や型付けが無いVBSでは
システムハンガリアンだってそれなりに利点があるんだよな

頭の悪い奴は、批判されてる理由も正しく理解しないうちから
周りに載せられて全て一緒くたにして批判するが、
システムハンガリアンも全く利点のない記法ではないからな

559:デフォルトの名無しさん
09/01/26 23:18:30
>538
遅レスだがDimはやめてPrivateにしなされ

560:デフォルトの名無しさん
09/01/27 19:01:52
VisualBasic.5.0 で実行できたプログラムが突然実行できなくなり、実行すると以下のようなエラーメッセージ
が表示されてしまいます。

”0x77fcc7a8"の命令が”0x317e4ebb"のメモリを参照しました。メモリが”written”になることはできませんでした。

プログラムを終了するには[OK]をクリックしてください。
プログラムをデバックするには[キャンセル]をクリックしてください。

と表示されます。


これを改善するにはどのようにすればよいのでしょうか??

561:デフォルトの名無しさん
09/01/27 19:20:28
>>560
他のPCで試してみて、動かなかったら作った奴に聞けばいい

562:デフォルトの名無しさん
09/01/27 20:09:42
すみません、VBとDLLのインタフェースについて教えてくださいませ。

対象のDLL側の実装は、こんな感じです。

int functionA(unsigned long param1 , int* param2)

param1 は、param2 に指定した int 配列の数をあらわし、関数を動かすと、
param2 で指定したところに数字の配列を入れてくれるようになってます。

んで、VBから、こんな風に定義したんですけど・・・

declare function functionA lib "hogehoge.dll" _
( param1 as long , param2() as long) as long

実行時に「DLLが正しく呼び出せません」でエラーになってしまいます。
DLLのファイル名と、関数のExport名は dumpbin で調べたので合ってるかと。

declare function functionA lib "hogehoge.dll" _
( param1 as long , param2 as long) as long
dim param1 as long
dim param2(10) as long
dim ret as long
param1 = 10
ret = functionA(param1 , varptr(param2(0)))

なんてやっても同じエラーでした。

なんか根本的なところで勘違いしているような気もします。

ご親切な方いましたら教えてくださいませ。

環境は、VB5.0、VB6.0でしか使えない機能が必要ならVB6.0も入れてみようと思って待つ。

563:デフォルトの名無しさん
09/01/27 20:33:34
(BYVAL param1 as long , param2() as long) as long 
 ~~~~~~~
じゃね?

564:デフォルトの名無しさん
09/01/27 20:47:49
すみません、説明不足でした(><)

declare function functionA lib "hogehoge.dll" _
(byval param1 as long , byref param2() as long) as long

というのと、

declare function functionA lib "hogehoge.dll" _
(byval param1 as long ,byval param2 as long) as long

というのを試して両方とも同じく「DLLが正しく呼び出せません」
というエラーメッセージでした。

565:デフォルトの名無しさん
09/01/27 20:48:05
defファイルでexportしてるか?

566:デフォルトの名無しさん
09/01/27 21:09:51
dumpbinで調べてどう?VB5, 6だと正確にあってないとだめだぞ。
これだと前ハイフンも@8も必要になる。

 1    0 00001000 _functionA@8


567:デフォルトの名無しさん
09/01/27 21:10:06
export 名は、dumpbin 、Dependency walker で確認してますし、
同じDLLの他の関数は使えているので、問題ないとおもいます。

568:562
09/01/27 21:11:23
そういえばここ、書き込みIDないんですね。

564、567は俺の書き込みです

569:デフォルトの名無しさん
09/01/27 21:14:46
VB6だとDLLが見つからないのと、エントリが見つからないのは
それと分かるメッセージになるのだが、VB5でその辺の切り分けはできますか?
両方とも当てはまらないなら、
DLLがさらに別のDLLを必要としていてそれがないということもありえる。

570:565
09/01/27 21:17:32
無視されちった

571:デフォルトの名無しさん
09/01/27 21:19:48
違うdll見てるんだろ、どうせ

572:デフォルトの名無しさん
09/01/27 21:19:51
>>570
それは問題ないです(><)すみません

>>569
そう思って、出鱈目な関数名を alias で指定
したのですが、その場合は「エントリ hoge がDLLファイル
C:\hoge.dll 内に見つかりません。」というエラー
になるので、エントリまでは問題ないかと思います。

573:デフォルトの名無しさん
09/01/27 21:26:10
>ret = functionA(param1 , varptr(param2(0)))
普通にこれでよくね?
ret = functionA(param1 , param2)

574:デフォルトの名無しさん
09/01/27 21:27:27
__stdcallにしてるだろうな?

575:デフォルトの名無しさん
09/01/27 21:37:50
>>560
COMやVBXの登録がおかしくなってる。
互換のないdllに置き換わってしまった。
などなどのdll Hellの症状が見受けられます。
再インストールがんばって。

576:デフォルトの名無しさん
09/01/27 21:53:35
PATHが通ってないとか

hogehoge.dllをsystem32に置いてみて

577:デフォルトの名無しさん
09/01/27 22:17:56
pathが通ってなかったらdllが見つからんってエラーになるはず

578:デフォルトの名無しさん
09/01/27 23:20:25
>>534
VB2のサンプルソースをコピペして使うからですよ。
VBMsgBoxResult といえば、プロシージャの成功失敗を
vbOKとvbCabcelで返してるコードも見たことがあります。
みんな意味も分からずカッチョイイから使ってるだけ。
Longなら安心だけどIntegerでもたぶん平気、ちゃんと入力の有効範囲を
意識して型を使い分ける俺って渋いじゃん?wみたいな人もいるかもしれません。
そういう人に限って、「500件のレコード処理の進捗率を表示」するのに、
進捗率 = 完了件数 * 100 / 総件数 みたいな阿呆な式を書くんですよ。
もちろん全部最大500だからIntegerで宣言。
せめて割ってからかけろと・・・

579:562
09/01/27 23:25:01
みなさん、ありがとうございます!

__stdcall していなかったのが原因でした(><)
VB.net を導入したところ、当たり前のように動きました。

vb5でのテストで、他の関数で処理が通ったのは、引数
がない関数で試したからのようです。引数のある関数は
vb5 ではダメでしたが、vb.net では動きました。

お騒がせしました。ありがとうございます!

580:デフォルトの名無しさん
09/01/28 00:58:48
まあVB.NETならcdeclでも受け付けるだろうし、間違っていてもある程度何とかしてくれそうだなし。

581:デフォルトの名無しさん
09/01/28 22:53:57
VB6でIE7+activeXのソフトを作成しました
IE側にボタンを設置し、そのボタンを押されたらraiseイベントで
別のhoge.ASPなどを呼び出したりしたいのですが、
OCXをダウンロードした1回目に限りraiseイベントが起こらない
(2回目以降というかC:\WINDOWS\Downloaded Program Filesにファイルがダウンロード済なら問題なし)
様のですがIEの仕様なのでしょうか?


582:デフォルトの名無しさん
09/01/28 22:58:21
なんか KB でそんなんを見た気がする・・・

583:デフォルトの名無しさん
09/01/28 23:26:44
引数や戻り値の型を合わせるためでもなく、オーバーフローの心配が無くても
原則Longがいいだろう。リテラルには&付けることだな。

584:デフォルトの名無しさん
09/01/28 23:29:59
えええ?

585:デフォルトの名無しさん
09/01/28 23:34:58
>>525
MS-BASIC(N-BASIC)時代の名残。何げに30年の歴史がある。
でもON GOSUBに相当する機能ってVBにはないよね?Tryは微妙に違うし。

586:デフォルトの名無しさん
09/01/31 14:28:18
VB6の本には、なぜMS-DOSプロンプトの代わりにDebug.Printでプログラム技術を
教える本が無いのか。

587:デフォルトの名無しさん
09/01/31 18:22:01
意味がわかりません

588:デフォルトの名無しさん
09/01/31 18:34:26
前提(Debug.Printでプログラム技術を教える本が無い)が間違ってるので意味が伝わらない

589:デフォルトの名無しさん
09/01/31 19:29:57
VB6とコマンドプロンプトとプログラム技術の関連性がまったくわからない。

590:デフォルトの名無しさん
09/02/01 15:57:03
エスパー頼む

591:デフォルトの名無しさん
09/02/01 16:13:57
ハードディスクが壊れたので、俺が2年前に作った数キロバイトのコードを
思い出す方法を誰か教えてください。

ネット上のサーバー履歴も、机の上のパソコンの中の履歴も、ちょうど同じ
日に消えてしまいました。

592:デフォルトの名無しさん
09/02/01 16:19:31
面白いと思って書いてるのか知らんが、まったくつまらないから。
もっと他にやることないのかよ惨めな奴だな

593:デフォルトの名無しさん
09/02/01 20:54:02
スレで信頼できるヤツを探して、逆汗してもらうこった
つまり、そんなヤツを探す方法に、この問題は行き着くわけだが
そうすると、VB6の問題じゃないなこれは

594:デフォルトの名無しさん
09/02/01 20:57:29
ハードディスクの内容を復元してくれる業者に頼め。

595:デフォルトの名無しさん
09/02/02 02:03:56
>>593
逆汗って何か分かって言ってんのか?
意味もよく分かってないくせに使うんじゃねえよ

596:デフォルトの名無しさん
09/02/02 07:35:02
ん。exeは残ってるけど、ソースないよ。って話ちがうんか。まあいいか

597:デフォルトの名無しさん
09/02/03 10:38:05
VB6+Microsoft SoapToolkit 3.0でプログラムをしているんだが、
処理中に実行時エラーが発生してしまうんだが、どうしたら出なくなるのか知ってる奴いない?

 実行時エラー '-2147221504(80040000)':
 Connector:Connection time out.

一応、ConnectorProperty("Timeout")は設定している。

598:デフォルトの名無しさん
09/02/03 14:30:47
エラーが出る場合は、再現する最小限のコードを貼れ
話はそれからだ

599:デフォルトの名無しさん
09/02/03 15:09:19
ソース編集のウィンドウでマウスのスクロールをしても画面が動かないのはなぜ?


600:デフォルトの名無しさん
09/02/03 15:17:53
仕様。

601:597
09/02/03 15:31:09
>>598
最低限のコードか・・・
結構長くなりそうだけどいい?

602:デフォルトの名無しさん
09/02/03 16:24:31
>>599
エレコムのマウスユーティリティ(エレコムマウスじゃなくても使える)
をインスコするとVB6のソース画面もスクロールできる
これ豆ry

603:デフォルトの名無しさん
09/02/03 17:11:37
>>599
>>602でもできるのかもしれないけどこれでも出来る
Visual Basic 6.0 IDE でマウス ホイール イベントが機能しない
URLリンク(support.microsoft.com)

604:デフォルトの名無しさん
09/02/03 17:47:10
>>603
トンクスです

605:デフォルトの名無しさん
09/02/03 21:08:18
>>603
うおースクロール出来るー、嬉しい ^^
ありがとさんです

606:デフォルトの名無しさん
09/02/06 00:48:14
>>585
ON...GOSUBは6.0まで残されてたね。あくまでレガシー活用目的で、
Select Case に書き換えろ、ってQuickBASICの頃から言われてます。
N(N88)-BASICの頃はON ERROR GOTO のほかにもON KEY(n) GOSUB やON STOP GOSUB
やらがあって、それぞれ3単語で1ステートメント扱いでリファレンスにも載ってた。
QBで数が増えすぎてON EVENT GOSUBと一緒くたに説明されるようになった。
どうしてON ERROR GOSUBにしなかったかというと、GOSUBはRETURNでもどるが
ご存じの通りエラーの時はRESUMEで戻るから「GOSUB」を使いたくなかった。
On Error Resume NextができたのはVBから。以前は10 ON ERROR GOTO 60000
60000 RESUME NEXTと書くしかなかった。
考えたら、あの当時にはエラー処理用ステートメントが用意されていたのは
進んでいたのかもしれない。

607:デフォルトの名無しさん
09/02/06 00:55:14
ちなみに蛇足しておくと
ON KEY(n) GOSUB はファンクションキーn番が押されたらGOSUB
ON STOP GOSUB はPC-9800等過去のPCに付いていたSTOPキーが押されたらGOSUB
Stopステートメントとは無関係ですよ。今ならDoEvents+KeyDownイベントに近いのかなあ。
ほかにも音楽演奏バッファが空いてきたらGOSUBする ON PLAY GOSUBとか
いろいろあった。

608:デフォルトの名無しさん
09/02/06 00:58:43
>>591
大型のハンマーで頭を後ろから思いっきりたたく。
目から壁にソースコードが映写されますよ。

609:デフォルトの名無しさん
09/02/06 01:38:31
自然科学系の出版社勤務ですが、次のアマゾンのレヴューがさっぱり解読できません。
どなたか教えてください。
URLリンク(www.amazon.co.jp)

610:デフォルトの名無しさん
09/02/06 08:04:22
URLリンク(www.amazon.co.jp)
宣伝乙。と思ったら、なんかおもしろそうな文字化けしてるなw

でも、VB6はたぶん関係ナカッタ

611:デフォルトの名無しさん
09/02/06 08:15:27
>>601 ナイス回答がある保証はないが、本気なら、うpすればいいw

612:デフォルトの名無しさん
09/02/06 23:47:21
>>601
とりあえずファンクション単位でもいいから
貼れや

613:デフォルトの名無しさん
09/02/07 03:01:22
そこらじゅうにDebug.Print入れて変数の値を調べろ

614:デフォルトの名無しさん
09/02/07 08:26:04
>>597
これ?
URLリンク(www-01.ibm.com)

615:デフォルトの名無しさん
09/02/08 03:22:44
>>587-590
たとえばCならprintf、C#ならConsole.WriteLineやDebug.WriteLineで
コンソールやデバッグに出力するところから基礎を始めることがあるけど、
VBではテキストボックスに出すようなのが多い。それだとコントロール周りの
余計な(そのときの本題と関係ない)知識が必要だし、実業務でも
デバッグをMsgBoxでやっちゃってフォーカスがらみのコード追跡ができないと
嘆くような駄目プログラマが育ってしまう。Debug.PrintやPrint#を使う
習慣を身につけさせるべきだ。

と言いたいんじゃないかと思う。

616:デフォルトの名無しさん
09/02/08 10:17:15
そもそもVB6じゃ標準出力に何か出力できたっけ?

617:デフォルトの名無しさん
09/02/08 14:04:09
デバッグモードで起動すればコンソールに出せるだろ・・・

618:デフォルトの名無しさん
09/02/08 14:44:41
FSOのGetStandardStream使ってもできるし、ほかにも

619:デフォルトの名無しさん
09/02/08 17:05:59
初出の、教えるという観点なら、WScriptオブジェクトとかもいいかもしれん
つかできるかな、できるはずだけど あとでやってみよ

620:デフォルトの名無しさん
09/02/08 18:47:17
editbin /subsystem:console hoge.exe
とりあえず野望への一歩。

621:デフォルトの名無しさん
09/02/09 17:54:24
質問です。

ADOとMs標準のDataGridで一覧表を作ってるんですが、
どうしても分割ペイン追加出来ないように出来ないんです。
MSDNには.SplitsのAllowReSizeにfalseセットすれば追加出来なくなる
みたいに書いてあるんですが、サイズ調整が出来ないだけで、
追加されてしまいます。

何か良い方法をご存じの方いらっしゃいませんか?

622:621
09/02/09 18:22:41
自己解決しました・・・

AllowSizingだけじゃなく、SizeModeの設定も必要なんですね・・・


623:デフォルトの名無しさん
09/02/09 19:55:39


624:デフォルトの名無しさん
09/02/10 00:16:22
>>617
具体的な方法を教えてください。

625:デフォルトの名無しさん
09/02/10 02:46:33
参照設定 Windows Script Host Object Model (wshom.ocx)

Dim fso As New FileSystemObject
Dim txtstm As TextStream
Set txtstm = fso.GetStandardStream(StdOut)
txtstm.WriteLine "helloあいうえお"
txtstm.Close

editbin /subsystem:console vbxxx.exe


626:624
09/02/10 10:06:24
>>625
すみません、その方法ではなく>>617の方法が知りたいのです。

627:デフォルトの名無しさん
09/02/10 12:14:19
Debug.PrintはOutputDebugStringとは異なる仕掛けなのでデバッガには出ない。
さらにEXEにする段階でDebug.PrintとDebug.Assertは取り除かれる。

知ったかもあれだが粘着もそれだ、
>>617 は単純にVB6のIDEで動かせばいいといってるだけかもしれんよ。

628:624
09/02/10 12:51:10
つまり、デバッグモードではコンソールに出力できないということでしょうか。

629:デフォルトの名無しさん
09/02/10 13:03:18
VB6のアプリやIDEはコンソールを持ってないから普通は出来ない。
普通じゃなければAPIつかって、AllocConsole/GetStdHandle/WriteConsoleの
流れでできるっちゃできる。

630:デフォルトの名無しさん
09/02/10 20:31:04
VBではやったことないが、AllocConsole,GetStdHandle(API)すごい便利だよ
思ったより簡潔に書ける いっぺんつかってみるべき

631:デフォルトの名無しさん
09/02/10 20:35:23
いい加減、うぜーぞ

632:デフォルトの名無しさん
09/02/10 21:34:43
>>631
>>617さん、ごきげんよう

633:デフォルトの名無しさん
09/02/10 21:45:34
コンソールが何かわかってなかった馬鹿

634:デフォルトの名無しさん
09/02/10 21:49:57
617涙目

635:デフォルトの名無しさん
09/02/10 22:23:54
コンソールに出すくらいなら、ファイルに落とすわ

636:デフォルトの名無しさん
09/02/10 22:26:08
今更になって「printfデバッグってすげーな」と声高に主張しているようで恥ずかしい。

637:デフォルトの名無しさん
09/02/10 22:29:40
実際に適してるかどうかってのは今回あまり関係ない
技術的に可能かどうかって話だから

638:615
09/02/12 00:25:11
すまん、俺がエスパーだったばかりに・・・

639:デフォルトの名無しさん
09/02/12 07:54:34
は?お前のレスなど糞の役にも立ってないわ

640:デフォルトの名無しさん
09/02/12 15:37:44
TextWidthを使ってぴったりに文字幅設定するのって難しいんですかね?
どうしても表示幅が狭くなってしまいます
(とりあえずダミーの空白とか入れてごまかしてはいますが…)

641:デフォルトの名無しさん
09/02/12 19:06:45
>>638
後半は認める

642:デフォルトの名無しさん
09/02/12 22:15:13
質問です
複数のテキストボックスに入力した内容を
ひとつのファイルに入出力させようと思っているのですが
どのような方法でやればいいのか見当付きません
ご教授願います

643:デフォルトの名無しさん
09/02/12 22:33:37
入力と出力を決めないとこっちも困る

644:デフォルトの名無しさん
09/02/12 22:45:39
>>643
すみません…
ええと複数のテキストボックスに入力した内容をひとつのファイルに出力させて
その後そのファイルを読み込んだら複数のテキストボックスが出力した前と同じ内容になるプログラムでした

645:デフォルトの名無しさん
09/02/12 22:53:13
そんなことはわかってる
もう面倒だからXMLにしちゃえよ

646:デフォルトの名無しさん
09/02/12 23:00:50
テキストボックスの内容を後で識別できるように区切り記号(例えばTabとかCrLfとか)を付けて一つの変数にぶち込む
その変数をファイルに書き込む

ファイルを開いて全て一つの変数にぶち込む
変数の最初から区切り記号の一つ前までをテキストボックスにぶち込む
変数の内容を最初の区切り記号+1にして変数が空っぽになるまでループ

ちゃんとやらないと無限ループするから他の方法の方がいいかもしれないが目的は達するからこれでいいんじゃね?
もしかしてコードがほしかった?

647:デフォルトの名無しさん
09/02/12 23:03:53
>>645
>>646
参考になりました。ありがとうございます



648:デフォルトの名無しさん
09/02/13 14:57:17
>>642
複数のテキストボックスへ入力された内容を、
String型変数に入れて文字列編集すればいいと思う。

例えば、
dim strA as string
strA = myform.textbox1.text & vbcrlf & myform.textbox2.text

とか。んで strA の内容をファイル化すればいい。

649:デフォルトの名無しさん
09/02/13 14:58:17
644みなかった。スマンw

俺はそういうときは、tab 区切りにしてる

650:test
09/02/13 16:45:13
暗号化プログラム作ったんですが
unicodeで貼り付けると
。」〄「〖 こんな感じでうまく貼り付けることができません
これをansiに変換しても
䊁皁脿㽵 となりうまく貼り付けられません
良い方法あったら教えてくださいm(__)m


651:test
09/02/13 16:46:55
あれここだとうまく貼り付けられてる
他のスレでうまくいかなかったんだけどなぜ?


652:デフォルトの名無しさん
09/02/13 17:55:38
板の設定次第
URLリンク(pc11.2ch.net)

653:651
09/02/13 20:10:28
なるほどこの部分ですね
BBS_UNICODE=pass
ありがとうございます


654:デフォルトの名無しさん
09/02/15 21:29:07 BE:1043968493-2BP(0)
>>2のVB5をダウンロードしたけどシステムの設定が
不正なため、vbを起動できないって出てきたけど
どうすればいいかおしえて

655:デフォルトの名無しさん
09/02/15 21:53:12
OSのインストールからやりなおすのが言語を入れる鉄則

656:デフォルトの名無しさん
09/02/15 22:04:21
Windowsの互換モード設定は試した?

657:デフォルトの名無しさん
09/02/16 19:18:02 BE:695979263-2BP(0)
>>656  互換モード設定してもできない

658:デフォルトの名無しさん
09/02/16 19:31:02
環境は何だよ?VirtualPCで開発環境作ったほうがよくないか。

659:デフォルトの名無しさん
09/02/17 17:35:25
vmware serverがいいお

660:デフォルトの名無しさん
09/02/19 08:29:05
VB5.0でとあるexeを起動して終了を待機しているのですが
そのexeの戻り値を取得する必要が出てきました。
exeの戻り値はどのようにして取得したらよいでしょうか?
下記が現在のコードです。

Dim IDProcess As Long
Dim hProcess As Long
Dim ret As Long

IDProcess = Shell(strCommandLine, vbMinimizedNoFocus)
hProcess = OpenProcess(SYNCHRONIZE, 1, IDProcess)
ret = WaitForSingleObject(hProcess, INFINITE)
ret = CloseHandle(hProcess)


661:デフォルトの名無しさん
09/02/19 09:02:10
exeは関数じゃないので戻り値なんて無いよ

もしかして終了コードのことを言ってるのか?

それともActiveX.exeなのか?
ActiveX.exeならexe自体ではなくexeが持つ関数に戻り値があるけど

662:デフォルトの名無しさん
09/02/19 09:16:40
>>661
すみません。戻り値じゃなくて終了コードですね。
失礼いたしました。

ぐぐりながらやってみているのですが
なぜかhProcessが0です。
なぜいままで動いていたのだろうorz

Dim IDProcess As Long
Dim hProcess As Long
Dim ret As Long
Dim lExitCode As Long

IDProcess = Shell(strCommandLine, vbMinimizedNoFocus)
hProcess = OpenProcess(SYNCHRONIZE Or PROCESS_QUERY_INFORMATION, True, IDProcess)
If hProcess <> 0 Then
MsgBox hProcess
ret = WaitForSingleObject(hProcess, INFINITE)
ret = GetExitCodeProcess(hProcess, lExitCode)
ret = CloseHandle(hProcess)
End If


663:デフォルトの名無しさん
09/02/19 09:25:19
うぅ。
すみません。
CreateProcessを使ったら終了コードが取得できました。
お騒がせしました。

664:デフォルトの名無しさん
09/02/20 00:52:53
ところでみなさん WshShell.Run や Exec を活用してますか?

665:デフォルトの名無しさん
09/02/20 01:09:32
あまり活用してない
というかその二つに限れば、VBで使えば活用(活かした利用)にはならない
もっといいものがいっぱいあるから

666:デフォルトの名無しさん
09/02/20 13:36:42
なるほど
ありがとうございました

667:デフォルトの名無しさん
09/02/21 20:32:43 BE:2165268487-2BP(0)
>>658使い方がわからん

668:デフォルトの名無しさん
09/02/21 20:35:59
VB6.0ってまだ需要ありますか?
ラーニングエディション持ってるんで、
ちょっと勉強してみようか・・・と思ってるんですが。

669:デフォルトの名無しさん
09/02/21 20:39:25
こういう取り残された人たちには需要があります。
>422 名前: デフォルトの名無しさん 投稿日: 2009/02/11(水) 17:01:01 
>そもそも、.NETはお金を頂くソフトウェア作るには不向き 
>・遅い 
>・ソース丸見え 
>・フレームワークインストール必須 
>・FAでは絶対に無理 

>枚挙に暇がない 


670:デフォルトの名無しさん
09/02/21 20:41:47
>>669
どうもです。サンクス。

671:デフォルトの名無しさん
09/02/21 22:37:44
>>667
簡単だからネットで使い方調べれ。動作確認にはおすすめ。

672:デフォルトの名無しさん
09/02/22 16:09:59
なるほど
ありがとうございました

673:デフォルトの名無しさん
09/02/22 19:05:00
>>669
俺おもいっきり取り残されてるな…。

…だからこのスレにいるのかwww

674:デフォルトの名無しさん
09/02/24 01:08:24
なるほど

675:デフォルトの名無しさん
09/02/26 02:02:25
Javaでのstatic変数はVBではどんな宣言になるんですか?

やりたいこと
1.インスタンスを生成せずにその変数にアクセスしたい
2.異なるクラス間で同じ値を共有したい
3.javaのように簡単に実現したい
の三本です

676:デフォルトの名無しさん
09/02/26 02:15:51
すいません。訂正です。
>2.異なるクラス間で同じ値を共有したい

→ 2.異なるクラス間で同じ変数を共有したい

677:デフォルトの名無しさん
09/02/26 02:23:15
>>675
Shared

678:デフォルトの名無しさん
09/02/26 02:29:33
お、すまんVB6だったか。共通モジュールに宣言しかないかな。
Static Property とかいった手もあった記憶があるがめんどくさいはず。

679:デフォルトの名無しさん
09/02/26 03:33:15
つーかさ、ある言語の仕様が
他の言語でも、そのまま簡単に実現できると思ってるのってどうよ?

680:デフォルトの名無しさん
09/02/26 11:02:13
変数共有ならモジュールでグローバル変数の宣言だけで良いんじゃね?
VB6だとそれで十分だと思うが

681:デフォルトの名無しさん
09/02/26 19:29:12
>>675
VBのクラスはクラスメンバを持てない。

VBにはクラスのほかに標準モジュールというのがあるけど、
こっちはC#でいうstaticクラスに似ていて、インスタンスメンバを持てない。
(インスタンス化できない)

まあ、javaよりずっと前からある言語だから多少かかなりかウンコ仕様なのは仕方がないねw

682:デフォルトの名無しさん
09/02/27 00:49:52
>>681
ハァ?
クラスメンバ変数は Public で作れる

683:デフォルトの名無しさん
09/02/27 00:57:34
VBのクラスもメンバ持てるぞ。

だが、>>675 を実現するにはちょっと細工が必要。
ActiveX DLL に1つクラスを設けて、そいつの Instancing を GlobaMultiUse に
すればいい。
そいつに Public 変数を置けば、いわゆるグローバル変数扱いになる。もちろんクラス。

ただ、利用側で Option Explicit とした場合、アーリーバインディングでないと
エラーになった気がする。
それと常識だと思うが、プロセスが異なれば参照先も異なる。

クラスである必要があるならこうするしかないが、
どう考えても標準モジュールで十分な希ガス。

684:デフォルトの名無しさん
09/02/27 17:07:49
イベント処理での質問です。

vb2008 webページの作成をしています。

コンボボックスから、氏名を選択したら、別のテキストにIDを表示するのですが。
コンボボックスから選択しただけじゃイベント処理は発生しませんか?

SelectedIndexChangedとかTextChangedとか試してるのですが上手くいきません。


685:デフォルトの名無しさん
09/02/27 17:30:06
>>684
スレ違いです。

686:デフォルトの名無しさん
09/02/27 19:47:20
>>682
持てません。
クラスメンバの意味わかって言ってる?w

687:デフォルトの名無しさん
09/03/02 14:53:22
vbのwinsockコントロールで、メッセージを送ってきた相手のIPアドレスって取得できますか?
最低でもLANかWANかだけでもわからないでしょうか?

688:デフォルトの名無しさん
09/03/02 14:57:30
もうすこし詳しく書かないと、やりたい事が伝わってこないぞ

689:デフォルトの名無しさん
09/03/02 15:02:48
詳しく書くと、たとえば
TCPでlistenしてるところにconnectしてきた相手のIPアドレスを取得したいんです。
IPアドレスがわからなくても、最低限、そのconnectメッセージがLAN経由かWAN経由かの接続だけでも取得したいのです。

690:デフォルトの名無しさん
09/03/02 15:10:47
ぜんぜん詳しくなってないが、相手のIPはわかるから一度プログラム作ってみなよ

691:デフォルトの名無しさん
09/03/02 15:32:21
>>690
見直してみたら、てっきりRemoteHostしかないと思ったらRemoteHostIPの存在に気づきました。
すいません、お手数をおかけしました。


692:デフォルトの名無しさん
09/03/04 10:41:06
質問ですが、標準のデータグリッドでマウスホイール回転時にスクロールさせる方法って
何が考えられますか?

693:デフォルトの名無しさん
09/03/04 11:20:11
ホイールスクロールを受け取って自力で動かす

694:デフォルトの名無しさん
09/03/04 11:26:17
URLリンク(support.microsoft.com)
こんな感じで

695:デフォルトの名無しさん
09/03/05 01:50:23
アクセス操作について教えてください。
エクセルのCellsみたいに列、行指定はできませんか?



696:デフォルトの名無しさん
09/03/05 02:09:37
もしかして: VBA?

697:デフォルトの名無しさん
09/03/05 02:20:33
つーか、DBってものを解ってないな
利口ならDBについて3日勉強して出直せ
馬鹿ならDBについて3年勉強して出直せ

698:692
09/03/05 11:31:12
ありがとうございます。
ホイールイベント時の処理でスクロールさせるしかないということですね。
イベントの受け取り方などもう少し調べてみようと思います。

699:デフォルトの名無しさん
09/03/05 19:57:12
>695
ADOならRecordsetオブジェクトとか調べて見るといいかも

700:デフォルトの名無しさん
09/03/07 17:35:54
VB5.0で作成されたアプリってVistaでも動く?

701:デフォルトの名無しさん
09/03/07 18:03:33
答えになってないが
VB6は何とか動いたけどODBC関連がだめだめだったね
使い物にならないぐらい遅い

Win7では動かなくなるソフト続出だとおもう

702:デフォルトの名無しさん
09/03/07 18:04:59
VB5 アプリはものによっては動く

703:デフォルトの名無しさん
09/03/07 22:06:49
リストボックスをマウスホイールでスクロールさせた時に
リアルタイムでリストボックスのTopIndexを取得したいのですが
リストボックスのScrollイベントが動かないので私のスキルでは
八方塞がりです。方法をご教授頂けないでしょうか?

704:デフォルトの名無しさん
09/03/07 22:10:51
>>703
サブクラス化

ググればいくらでもサンプルは出てくる
それでも解らなかったら諦めるよろし

705:デフォルトの名無しさん
09/03/07 22:15:50
C#やVB.NETなどで作れという神託だよ

706:デフォルトの名無しさん
09/03/07 22:38:24
>>704
ありがとうございます。
私の探し方が悪いんでしょう。
なかなか見つけられなくてココに来た次第です
諦めるわけには行かないので調べなおします。

>>705
業務で使うのでVB6を使うしかありません。
10年以上稼動する機器なんてざらにあるので・・・
こちらがリファクタリングしたくても
機能も仕様も変わらないのにお金出すところなんてありませんから

707:デフォルトの名無しさん
09/03/07 23:30:07
自力で動かすと、ちょっと上でも方法込みで出てるし。

708:デフォルトの名無しさん
09/03/07 23:32:36
業務で使うのに、サポート切れてるツールを使おう、ってのがわからん。
不具合があったって、MS は知らん顔だよ?

709:デフォルトの名無しさん
09/03/07 23:34:13
MSのサポートなんか受けたことないよ

710:デフォルトの名無しさん
09/03/07 23:38:51
>>706
厳密にTopIndexが一つ変化するごとに確実にイベントが欲しい、
とかで無ければタイマ使ってポーリングしたら?
こんな感じのクラスを作って検証してみたが、悪くないように思うけど。

[ListBoxWatcher Class]
Private WithEvents mListBox As ListBox
Private WithEvents mTimer As Timer
Private mTopIndex As Integer
Public Event TopIndexChanged()

Public Property Set ListBox(lb As ListBox)
Set mListBox = lb
Dim frm As Form
Set frm = mListBox.Parent
If mTimer Is Nothing Then
Set mTimer = frm.Controls.Add("VB.Timer", "pollingTimer")
mTimer.Interval = 200
End If
If frm.ActiveControl Is mListBox Then
StartPolling
End If
End Property

711:デフォルトの名無しさん
09/03/07 23:40:35
Private Sub StartPolling()
  mTimer.Enabled = True
  mTopIndex = mListBox.topIndex
End Sub

Private Sub mListBox_GotFocus()
  StartPolling
End Sub

Private Sub mListBox_LostFocus()
  mTimer.Enabled = False
End Sub

Private Sub mTimer_Timer()
  Dim currentTop As Integer
  currentTop = mListBox.topIndex
  If currentTop <> mTopIndex Then
    mTopIndex = currentTop
    RaiseEvent TopIndexChanged
  End If
End Sub

しかし、なんでそんなイベントでそんな値が必要なんだろう

712:デフォルトの名無しさん
09/03/07 23:44:28
VB6のサブクラス化って初めて見た
横から勉強になります

713:デフォルトの名無しさん
09/03/07 23:48:29
「VB6 のサブクラス化」は、違う意味を指すもんだけどな。

714:デフォルトの名無しさん
09/03/07 23:55:46
「ホイールで動かしたけりゃこのドライバ入れるかあのソフト入れろ」と言える俺は趣味グラマ

715:デフォルトの名無しさん
09/03/08 00:03:30
趣味グラマ以前にバカすぎ
動かしたいって話ではなく
動かすのは出来てる上で
そのイベントを取りたいって話なのに

716:デフォルトの名無しさん
09/03/08 15:06:15
FlexGridライクなグリッドツールで
使いやすくてフリーか安価な物ってありますか?

717:デフォルトの名無しさん
09/03/08 16:16:19
URLリンク(www.grapecity.com)

718:デフォルトの名無しさん
09/03/08 16:17:29
Windows7でもランタイム入ってるのか
あと5年はイけそうだぬ

719:デフォルトの名無しさん
09/03/08 16:25:32
>>718
ところが動かないソフト続出w

720:デフォルトの名無しさん
09/03/08 18:44:50
>>716
俺はMSHFlexGridを自作のクラスと組み合わせて使いやすくしてる
プログラマなら他人が作ったものを使うことばかり考えてないで
少しは自力で便利にしようって気になろうよ

721:デフォルトの名無しさん
09/03/08 19:10:59
DataGridView

722:デフォルトの名無しさん
09/03/09 00:37:17
DataGridViewって.NETのコントロールじゃないの?
VB6でも使えるのか?

723:716
09/03/09 00:46:37
自分で実装しても良いんですけど
自作にかかる費用と購入する費用を考えたときに
購入する方が安上がりかと思いまして

後、うちの会社レベルが低すぎてクラスの概念理解できる人がいないんです…

やっぱグレープシティ買って貰うのが一番手っ取り早いですかね
1週間分の人件費で買えますし…

724:デフォルトの名無しさん
09/03/10 22:18:45
何でもかんでも自分で作ろうとする奴は馬鹿なのか?
費用対効果とか生産性で一番効率品質ともに良いほうを選ぶだけのこと。
車輪の再発明なんぞ自宅でやれ。仕事でやるな。
再発明した低レベルの車輪を見せびらかすな。

725:デフォルトの名無しさん
09/03/10 22:25:08
たいていは、上の人が買ってくれないから、って理由じゃない?>自前で作る

726:デフォルトの名無しさん
09/03/10 22:33:08
FlexGridProの品質の悪さは異常

727:デフォルトの名無しさん
09/03/10 23:25:40
> 車輪の再発明なんぞ自宅でやれ。仕事でやるな。
そもそも最初の質問で仕事で使うとは一言も書いてない件について

個人で使うことを想定した回答を、後出しの仕事で使うという情報を理由に叩く奴は馬鹿なのか?

728:デフォルトの名無しさん
09/03/10 23:40:34
>>724の回答もどうかと思うが、
君のそれも話が噛み合ってないんじゃないの?

>>725の言うように724は勤め人にありがちな境遇がわかってない、
ってのなら同意するんだが。。

まあ、くだらんことで熱くなってもしょうがないだろ。

729:デフォルトの名無しさん
09/03/11 23:33:39
でも車輪の再発明って楽しいよな。

730:デフォルトの名無しさん
09/03/12 00:15:49
再発明ではなく
新発明に出来る可能性を秘めてるからな
再発明にすら届かない可能性も孕んではいるが

731:デフォルトの名無しさん
09/03/13 00:12:26
再発明ってやつは、意識して取り組めば、何らか得るものがあるが、
いかんせん時間効率がよくない。と思う

車輪の再発明は学生のうちにしとけ。とはよくいったもの
世の中そううまくいかん(実りある再発明行為が、学生のうちにできるわきゃない)わけだが

732:デフォルトの名無しさん
09/03/13 00:21:25
時間効率が重視される仕事に置いてまで
再開発でも自作しろなんて言ってる奴は皆無である件について

733:デフォルトの名無しさん
09/03/13 00:28:14
コスト計算できない上司が部品買ってくれないってのは、自作しろって事じゃないの?

734:デフォルトの名無しさん
09/03/13 00:43:24
それは上司の主張であって、このスレの住人の主張ではないだろ

735:デフォルトの名無しさん
09/03/13 00:45:13
なんで上司の主張は除外されるわけ?

736:デフォルトの名無しさん
09/03/13 02:50:12
ここが会社ではなく2chのスレだから

737:デフォルトの名無しさん
09/03/13 03:19:15
2chのスレだったら会社の話をしちゃいかんのか?

738:デフォルトの名無しさん
09/03/13 05:24:15
別にいいんじゃないの?
ただ会社の場合は「会社では」って付けてね
何も付けないと、名前空間上「このスレでは」って意味になるから

739:デフォルトの名無しさん
09/03/13 15:41:56
上司の話をするのに、いちいち会社の上司はと付けなければいけないのか?
いつからそんなルールになったんだ?

740:デフォルトの名無しさん
09/03/13 15:48:00
いや、そもそも「このスレの住人の(合意された)主張」なんてものが存在しません。

741:デフォルトの名無しさん
09/03/13 17:43:28
★印の ”A7” とこを Cells(y, x) とすると

「Rangeメソッドは失敗しました」

と文句言われますが、どうすればいいのでしょう!?

Range("A7:R120").Select
Application.CutCopyMode = False

Selection.Sort _
Key1:=Range("A7"), _   ★
Order1:=xlDescending, _
Header:=xlGuess, _
OrderCustom:=1, _
MatchCase:=False, _
Orientation:=xlTopToBottom, _
SortMethod:=xlPinYin

742:デフォルトの名無しさん
09/03/21 18:37:57
おしえてくだせえ。
frmMain 実行中に、フォームの右端をドラッグして大きさかえると、Resizeイベントが発生するまではいいんだが、
その後 frmMain.ScaleWidth や、frmMain.Width などを取得してみると大きさ変更前の値しか出てこないんだよ。

なにか足りない部分があるのでしょうか?

743:742
09/03/21 18:45:53
すんません。事故解決です。
VBのウイザードからある程度メニューやツールボックスが揃ったプロジェクトではじめていたので、

Set fMainForm = New frmMain

と標準モジュールからフォームオブジェクトが開かれてました。
初心者に意地悪なつくりでした。



最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch