[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 02/01 06:17 / Filesize : 260 KB / Number-of Response : 964
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

VBプログラマ質問スレ(Ver.6.0 まで) part57



1 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 01:50:27.76 ]
ここは Visual Basic 〜6.0 の質問スレです。
質問者は使用しているOS、VBのバージョン、サービスパックのバージョン、
「何がしたくて、どうしたけど、どう困っているのか」を明確に書きましょう。

VB.NETは別物なので専門スレで、VBA、APIの質問もそれぞれのスレで。

○ 質問者の心得
 一.質問する前にMSDNやGoogle、過去ログにも目を通してみる。
 二.VBScript、インストーラーなどはこのスレでOK。
 三.質問は第三者にもわかりやすいよう簡潔かつ具体的に。
 四.荒らしは相手しない。

○ 回答者の心得
 一.答えられない質問は無駄に罵倒せずスルー。無理するな。
 二.代用法を強制しない。
 三.回答する上で必須ではない情報をむやみに聞き返さない。
 四.荒らしは相手しない。
 五.VB情報募集中。
 六.回答は質問者が理解できるよう具体的に。

MSDN Online Japan ホーム
 www.microsoft.com/japan/msdn/default.asp
Visual Studio 6.0 Service Pack 6
 msdn.microsoft.com/vstudio/downloads/updates/sp/vs6/sp6/default.aspx
Google
 www.google.co.jp/

※「まず自分で調べる」クセを身につけよう。

754 名前:753 mailto:sage [2011/12/09(金) 05:10:49.37 ]
勘違いしてたり間違ってたりしてたらごめんなさいね

755 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 07:12:29.84 ]
>>751
UI部品のインスタンスを動的に作成する場合にはいくつか制限がある。
フォーム上にボタンを張り付けて、Indexに0と指定しておく。
でもってコントロール配列に対して「Load Button1(1)」とすれば、
インスタンスを生成できる。


756 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 07:27:23.06 ]
>>742

答えは>>743。VB6が勝手にUNICODEにしてしまうところでそうなった。
境界またぎはさせてないよ。

757 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 08:17:21.17 ]
配列にしなくても動的作成できるなんて始めてしった
7ujm.net/VB/VB6Controls.html

758 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 09:26:32.58 ]
配列でロードする方法ならIndex 0のプロパティがほとんどコピーされるから
実行時に型を変える(TextBoxに入力したコントロール名のを作成)とかで
ない限り、配列ロードでいいんじゃないの。

759 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 09:28:04.83 ]
えー
ださいよー


760 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 15:15:33.32 ]
New使ってるからLoadでのコピーは用途違うんじゃねの?知らんけど

761 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 16:24:09.53 ]
>>753
ああ、なるほど、ケツにつけるから併用出来るのか
MsgBox(&HFFFF&)ででけた

自動でキャストされることになれてないから、キャストを明示的に指定しなきゃいけない様に設定できたら
VB初心者のおいらでも安心してくめるかなと。そうした方が後継者もあんまり混乱しなくてすむし。

>>755-760
thx。要素数に応じて、コントロールを並べることを考えてたからコントロール配列で良さそうだわ。
コントロール配列使えばたぶん必要ないことだと思うけど、
VB6にはまだ匿名関数でクロージャをやったりとか出来ないよね?(確認)
コールバックとか難しそうだな…AddressOfで取得したのを直接実行できないのかよ。

762 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 16:33:10.59 ]
AddressOfは外部APIに渡すときしか使えなかったような



763 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 17:08:05.52 ]
何言ってるのかさっぱりわからん

764 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 18:31:41.95 ]
>>763
いやさ、おまえらみたいになれてる奴には気にならんかもしれんけど
d.hatena.ne.jp/snaka72/20100126/1264514893
ここに書いてあるようにCallByNameっていうevalっぽいものじゃなくて
Sub hoge(callback as Method)
 callback()
End Sub
hoge(AddressOf(foonction))
みたいに出来るもんだと思っててさ。まあ、セキュリティ的に直接関数ポインタを実行出来ない方が正しいと思うけど。

しかし、このIDE使いにくいな… &HFFFF& <-コレはいい、 &HFFFFF& <-勝手に&外される &H0FFFF <-勝手に0を消される

765 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 20:09:16.34 ]
勝手に&が消されるのは指定しなくてもLong型で認識されるからじゃねの

766 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 20:16:14.63 ]
CallByNameで諦メロン

767 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 20:33:37.14 ]
(インスタンスとか意識して作ったことないから俺には話の内容が高度すぎて)何言ってるかさっぱりわからん

768 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 20:36:46.71 ]
ちげーよw

769 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 21:10:33.06 ]
VBはじめたいのですがもうVB6.0は手に入らないのでしょうか?
VB6用の本を買ったのですがVB2010というのでもいけますかね?

770 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 21:12:46.13 ]
VB6とVB2010では全然違うから
VB6のやり方ではVB2010では何もできない
VB2010のやり方ではVB6では何もできない

771 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 21:12:58.41 ]
>>769
6.0と2010は全く違うものです
それに6.0は今から覚えるには古すぎるのでお勧めしない

772 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 21:14:34.67 ]
数年前はMSDNのイロイロ入りの奴で手に入れるのが通説だったんだが
今はどうなのかねえ。



773 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 21:15:44.89 ]
>>770>>771

そうなんですか・・・2010用の学習書を買い直しますありがとうございました

774 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 21:21:16.77 ]
>>769
VB2010はVB6とは全く別物。.netベースになってる。 VC++2010みたいにWin32も開発できるなんてことは”ない”。完全に.net専用。
つか、新しく始めるならなぜにVB6とか苦行するしw

.netでもかまわないならC#とかおすすめよ。C#の方が新機能とかの追加が早いし。
研究とかで.netが使えないなら、C/C++あたりが無難。誰でも使えるしな。
RADツールがほしいならDelphi3〜7という手も悪くない。マイナーだが、プログラム経験があれば1週間もあれば誰でもかけるようになるだろう。
過去の遺産の引き継ぎとか、明確にVB6でなければならない限り、VB6を使う理由もないし、使うべきじゃない。

入手先の前にまず再考を。 別にその本をどぶに捨てたところで全然惜しくないしな。

775 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 21:31:06.68 ]
>>774
Cはある程度できるんでC++にしようかなと思います。
ただ簡単なソフトを作ったりするのにはVBが一番簡単かな?と思ったんです

776 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 21:32:18.67 ]
ディスコンになって10年経過してる商品について>>769はさすがにネタ投入(ただし全然面白くないが)
としか思えんけど。

逆にネタじゃないなら相当頭がどうかしてる。
こんなところに書き込んでるわけだから、最低限webにアクセスできる環境にはあるんじゃないの?

777 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 21:36:23.30 ]
たとえそうだとしてもそのレスをする必要はないような

778 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 21:38:39.02 ]
いつもイライラしてるIT土方が来たようだな^^

779 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 21:39:04.41 ]
いつまでもVB6なんて使ってる化石をからかっただけですけどね

780 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 21:41:04.82 ]
やべえ、真性のアスペかよこいつw
どこに「いつまでもVB6なんて使ってる」なんて書いてあるんだw

781 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 21:41:39.00 ]
おい、つまらんレスはするなバカども

782 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 21:42:54.61 ]
>>781
じゃああなたが面白いレスの手本見せて下さいよ〜



783 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 05:39:23.55 ]
簡単なもの作るだけならExcelでも使っとけ
つかVBマクロて人気なんだな
OpenOfficeに最も望まれてる追加機能がVBA対応とか
これじゃVB無くならんわ

784 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 16:03:38.31 ]
>>783
Excelっていう土台と、初心者と本格的プログラミングの中間にある
開発環境が他にないからね。

Accessまでいっちゃうと、本格的プログラミング寄りで、何より、データベース
って土台は初心者にキツイ。

ということなのだろう。

ただ、そろそろVBAは、言語体系を.NETに近づけたほうがいいとは思う。

785 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 16:14:13.29 ]
Excelとかのマクロ言語はVBAやめてJavascript系にしちゃえばいいのに

786 名前:デフォルトの名無しさん [2011/12/11(日) 16:34:15.51 ]
学校のVisual Basic 6.0で線形探索とファイル処理を使ったプログラムを作る課題がでました。
Excelでデータを作って対応させるのように指示を受けました。
私は商品名を入力し、実行するとその商品の画像を表示するようにしたいのですが、
この場合、Excelのデータ作成はどのように行えばいいですか?

787 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 16:44:32.25 ]
商品名と画像ファイル名だけじゃないの?

788 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 17:39:35.98 ]
学校ってまだVB6使ってるの?

789 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 17:41:41.90 ]
>>784
近づけるというか、いっそうVBAとCOMを取り除いて、.netベースにしてしまって
VBAの代わりにVB.NET(移植向け)、C#(新参/初心者向け)を使えるようにすればいいんじゃね?

ExcelやAccessでlinqが使えれば、業務系の人にもうけが良いだろうし。(むしろにて異なるものでキモがられるかね?)
>>785
.netって基盤を作ってきたMSだから、今更Javascriptはないと思う。
OOoはVBAとか誰得なものをつけるより、Javascriptでマクロを組めた方が遙かに現実敵だとは思うが。
Google Docsの方はJavascriptだけども、サーバサイドで動くので使いにくいね。 

790 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 17:43:13.57 ]
>>786
研究室の過去のプログラムの更新にやむなくってのは分かるが
学校で今更VB6を教えてるって、その学校かなりヤバくね?

中学校の部活か何かでVBAでプログラミング体験とかなら分からんでもないが。課題もそのレベルだし。

791 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 17:48:42.38 ]
情報系じゃないが、若いセンセが嘆いてた
教える老人のノート、数十年前のものいまだに使ってるって

792 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 02:34:55.91 ]




ワイは日本人やが聞いた情報によると、もうじき中国はバブルがはじけて昔の貧乏な元の中国に戻るらしいで
みんなも知っての通りもう経済は破綻してて、取り戻すのは無理なんだそうや


その世界ではごっつい有名な政府関係者筋から聞いた確かな情報やで

まあお前らほどの頭の良い連中には、今さらなくらいのネタやな、失礼なくらいかもしれん
お前らからすればもう常識的なくらいの知識やろ?











793 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 10:26:11.26 ]
Windows7で「Microsoft Shell Controls And Automation」を参照設定してexeファイルを作り、XPのパソコンで実行すると、
実行時エラー430(クラスはオートメーションまたは予測したインターフェースをサポートしていません。)が発生しました。

shell32.dllのバージョンが原因なのでしょうか?



Dim oShell As New Shell
Dim oFolder As Folder2

Set oFolder = oShell.BrowseForFolder(0, "選択してください。", 1)

If oFolder Is Nothing Then
Exit Sub
ElseIf oFolder.Title = "デスクトップ" Then
    MsgBox "デスクトップは選択できません。", vbOKOnly + vbCritical
Set oFolder = Nothing
End If

If Not (oFolder Is Nothing) Then
txtFolder.Text = oFolder.Items.Item.path
pFileDir(lstFile.ListIndex + 1) = txtFolder.Text
End If

Set oFolder = Nothing


794 名前:デフォルトの名無しさん [2011/12/12(月) 15:51:10.15 ]
VB初心者なのですが、
xlsmファイルって読み取ることができますか?
読み取れるようであれば例文教えていただけると
ありがたいですm(_ _)m

795 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 15:52:47.84 ]
Excelが入ってれば読めるよ

796 名前:デフォルトの名無しさん [2011/12/12(月) 15:58:29.53 ]
>>795
Excelも入れていて読み込めるはずなのですが

xlsmfile = New FileIO.TextFieldParser("ファイル名.xlsm",
System.Text.Encoding.GetEncoding("Shift_JIS"))

xlsmfile.TextFieldType = FileIO.FieldType.Delimited
xlsmfile.SetDelimiters(",")

この文では読みこめないのでしょうか?


797 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 16:09:00.17 ]
>>796
createobjectして読み込むんだよ

798 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 16:23:43.16 ]
>>796
ひょっとして.net+VSTO?VSTOは実は単なるCOMラッパーだったりするから微妙だけど。

そもそも、Microsoft.VisualBasic.FileIO.TextFieldParserって、zipしてある奴も読めるのか?
MSDNをさっと目を通すと、CSV/TSVとかのテキストファイル前提っぽいが。

>.GetEncoding("Shift_JIS"))
あれ?普通、xlsx/xlsmの中身のエンコードってUTF-8とかUnicode系じゃねーの?

あと念のために聞くけど、PC初心者?まるで分かってないオーラが漂いまくってるけど。
ついでに、VSTOはそんな便利じゃないよ。イテレートもろくに使えないし。

799 名前:デフォルトの名無しさん [2011/12/12(月) 16:27:08.33 ]
>>797

試してみたんですができませんでした。
createobject の使い方教えてくれませんか?

800 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 16:41:55.33 ]
そういえばExcel2007以降とか見たこと無かった。

801 名前:デフォルトの名無しさん [2011/12/12(月) 17:01:08.62 ]
>>798

テキストファイルを読むことを前提にしているので大丈夫です。

>あれ?普通、xlsx/xlsmの中身のエンコードってUTF-8とか
Unicode系じゃねーの?

調べてみます。

PC初心者です。
これから勉強していきたいのでよろしくお願いします。

802 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 17:01:50.87 ]
>>794
読めます。
中身はZIP形式で圧縮されたテキストファイルです。

試しに拡張子をzipに変更した後、開いて、中のファイルをメモ帳ででも開けばよい。




803 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 17:02:57.81 ]
>>799
どう試してみたの?

804 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 17:06:09.39 ]
>>799
ググった? あと、ここはVB6スレなんだが間違いはないか?

805 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 02:14:57.18 ]
>>796のコードはVB6のコードには見えないな。文法が違う

806 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 08:17:11.38 ]
細かいこと気にスンナよ

807 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 12:45:11.56 ]
>>801
ここID出ないから、名前欄に1個前のレス番を毎回入れるか
最初にレスしたレス番を入れるとかしてくれないと誰か分かりづらい。
絞り込みして見る事もできね。

Googleで VB6 XML 読み込み をキーワードに検索して結果の1件目。
t-yoshi-tomi.at.webry.info/200905/article_2.html
>Dim XmlDoc As DOMDocument 'xmlデータ用変数
>Set XmlDoc = CreateObject("Microsoft.XMLDom")


808 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 22:12:37.25 ]
>>806
言語が全く違うんだから気にスンナレベルじゃねーだろw

>>807
VB6ならExcel COMから読み出せば良いんじゃね?
VB.NETなら、どこかのZIPライブラリ使って中のxmlをlinqで列挙するのがお手軽かと思うけど

809 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 02:49:46.98 ]
すげー初歩的、ランゲージリファレンス嫁ってレベルだと思うんだが
イベントについてさっぱりなので教えてくれ。

eventキーワードでのイベントの定義については分かった
RaiseEventでのイベントの発生も分かる
だけど、実際にメソッドを結びつける方法が分からん まるでわかめ。
privatepaste.com/3e1d507e11


810 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 03:29:20.92 ]
イヴェントの使い方
'Class1.cls
Public Event EventDaYo()

Public Sub Hoge()
RaiseEvent EventDaYo
End Sub

'Form1.frm
Private WithEvents c1 As Class1

Private Sub Form_Load()
Set c1 = New Class1
End Sub

Private Sub Command1_Click()
Call c1.Hoge
End Sub

Private Sub c1_EventDaYo()
MsgBox "EventDaYo"
End Sub

811 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 03:46:13.88 ]
>>810
キモの部分は
Private WithEvents c1 As Class1
Private Sub c1_EventDaYo()
これ?
でもコレって、ClassAの中にあるCoClassBのイベントにはどう対処するんだ?
ClassA:
 Public Property Get CoClassB(index as integer) as CoClassB
CoClassB:
 Public Event CoClassScream()
ってあった場合…
ClassAが内包しているクラスのイベントをリレーしないとだめ?

というか単純に配列の中にオブジェクト入れてた場合はどうなるの?

812 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 04:51:35.30 ]
WithEvents 発生したイベントをキャッチするための入れ子を宣言する
(配列にできない、Newで宣言できない、Moduleでは宣言できない)
WithEventsを宣言したForm(またはClass)内でしかそのイベントをキャッチできない





813 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 04:55:05.51 ]
>>810
Class1で宣言したイヴェントはClass1内からのみ発生させられる
Class1のインスタンスから発生したイヴェントをキャッチするには
WithEventsでClass1のイヴェントをキャッチする入れ子を宣言し
それにあらかじめインスタンスをつっこめばそのインスタンスから発生したイヴェントをキャッチできるようになる
が入れ子に設定されたインスタンスからのイヴェントしかキャッチできない


814 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 04:57:03.36 ]
>>812
(配列にできない、Newで宣言できない、Moduleでは宣言できない)
↓訂正
(配列にできない、Newで宣言できない、標準Moduleでは宣言できない)



815 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 05:05:48.74 ]
内包リレーってこんな感じか?
'Class1.cls
Public Event EventDaYo()
Private WithEvents c2 As Class2
Public Sub c2_EventKaYo()
RaiseEvent EventDaYo
End Sub
Private Sub SetC2(c As Class2)
Set c2 = c
End Sub

'Class2.cls
Public Event EventKaYo()
Public Sub HogeHoge()
RaiseEvent EventKaYo
End Sub

'Form1.frm
Private WithEvents c1 As Class1
Dim c2 As Class2
Private Sub Form_Load()
Set c1 = New Class1
Set c2 = New Class2
c1.SetC2 c2
End Sub
Private Sub Command1_Click()
Call c2.HogeHoge
End Sub
Private Sub c1_EventDaYo()
MsgBox "EventDaYo"
End Sub

816 名前:デフォルトの名無しさん [2011/12/14(水) 05:09:59.08 ]
VB6 イベントを作る - RaiseEvent, WithEventsなど
homepage1.nifty.com/rucio/main/shokyu/jugyou29.htm


817 名前:デフォルトの名無しさん [2011/12/14(水) 05:20:06.22 ]
質問者は質問をわかりやすく明確に
回答者は回答をわかりやすく明確に
カオスな流れになってるぞ

818 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 05:25:49.38 ]
イヴェントをキャッチしたいForm(またはClass)内でWithEvents入れ子を作れ
Class1内のClass2インスタンスのイヴェントを
そのClass1のインスタンス内でキャッチしたけりゃClass1内にWithEventsを書いてそのClass2のインスタンスへの参照入れろ
Class1以外、たとえばForm1でClass1内のClass2のイヴェントをキャッチしたけりゃ
Form1内にClass2のWithEvents書いてClass1内のClass2のインスタンスの参照を渡すか
Class1内でClass2のイヴェントをキャッチしてClass1でイヴェントをキャッチしたってイヴェント発生させろ



819 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 05:36:14.32 ]
質問者と回答者の会話が噛み合ってないな

820 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 08:25:05.62 ]
イベントは別のクラスに書くんだよ

821 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 11:32:10.37 ]
ヴェとか書くからなんかごちゃごちゃした文章に見える

822 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 11:36:56.97 ]
これが参考になる
oshiete.goo.ne.jp/qa/504573.html



823 名前:デフォルトの名無しさん [2011/12/14(水) 16:28:56.24 ]
VBのアプリで、USBメモリにテキストファイルを書きだした後
タスクバーから取り出しを実行すると定番の
 「デバイス'汎用ボリューム'を今停止できません。」
の表記が出て、アプリを終了するまで停止できません。

一応調べましてFileSystemObjectを使い、ファイル保存の際に使用していた
dirからFolderExistsに変更ましたが、"アプリ起動後"にUSBメモリを挿すと
想定通りUSBメモリの取り外しが行えるものの"アプリ起動前"から
USBメモリが刺さっていると上記のエラーが出て取り出しができないのです。

更に調べて、上記に加えて最後にchdir("C)でローカルドライブに変更してやると
アプリ起動前にUSBメモリを挿していても、問題なく取り外しが行えるように
なったもののどうもしっくりきません。

どなたかこの状況から原因をエスパーできる方はおりませんか?

824 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 16:46:33.22 ]
ローカルに書き出してからUSBにコピーするのがいいよ

825 名前:デフォルトの名無しさん mailto:sage [2011/12/15(木) 13:30:43.68 ]
□投稿者/ サテア 一般人(1回)-(2011/12/15(Thu) 10:25:45)

環境/言語:[windows7/visual basic6.0/?] 
分類:[VB6以前] 

4つのテキストボックスに入力した数字をソートしてラベルに小さい順に表示するプログラムを作成するノルマを与えられています。
しかしvisual basic6.0だとあまりい良い文献がなく、ほとんど参考になりません。
ちなみに自分はオブジェクトを配置するくらいの技能までは持っています。そこから先がすすめません。

何だよそのノルマと技能はwww

826 名前:デフォルトの名無しさん mailto:sage [2011/12/15(木) 13:34:58.64 ]
リストボックスに入れてソートさせるのがVBっぽい

827 名前:デフォルトの名無しさん [2011/12/18(日) 12:22:19.04 ]
>>823
大きな問題として
Dir関数って、フォルダを参照した後で内部的に終了処理がなされてないよね
Loopでファイルの列挙ができるようになってる都合上、参照し続けてしまう
前の方のレスにも書いたけど
Dir ""とすれば開放できるとするサイトがあるけど、それでもカレントフォルダを参照してしまう

で、話は戻るけど
やっぱりDir関数を修正した以外の場所で使ってるんじゃないの?
またはchdirかも知れないけど、
最後にchdirでUSBメモリ以外を参照すれば抜けるっていうのは、その証拠でしょ

828 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 16:25:51.45 ]
>>825
初心者に対する非常に良い問題なのだが、VB6っていう環境が
初心者の学習に向いてない。

投稿者は明らかに初心者なのだが、こういう掲示板で
どういう言葉遣いで質問するかわからないから変な用語使うハメに。



829 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 19:37:06.04 ]
単純にソートアルゴリズムの勉強させられてんじゃないの
自分も新人の時に最初の課題として出されたよ
実際自前でソートする事なんかほぼ無いが
あの時色々と調べて得た知識は今も生きている

830 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 19:47:27.78 ]
そっとしといてやれよ

831 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 22:16:07.93 ]
実はわざわざVB6でやらせて苦行を強いる上司のパワハラ

832 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 09:47:21.79 ]
>>827-832
ここはVB6のスレなんだ。
VB6は古いとか.NETやれとか言ってるやつはスレち。
答える気がないなら来るな。

って書こうと思ったら、ここへの質問じゃないのか。
まあいいや。
VB6のスレなんだからVB6かわいがってやってくれ。



833 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 18:38:55.79 ]
VBでメモ帳を作成しろと言われた
誰かサンプルソースZIPでくれエロい人

834 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 18:47:11.67 ]
>>833
誰に言われたんだ

835 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 19:16:57.89 ]
>>832

>>825はな…どっかの掲示板の転載やで…
答えは求めてないだろ。
(かといってヲチする板でもないがな)

836 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 19:25:46.75 ]
>>834
講師

837 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 19:36:01.93 ]
VB6でやれって言われたのか?

838 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 19:50:28.15 ]
>>837
VB2010Expressです

839 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 21:15:39.13 ]
>>838
ここはVB6.0のスレ。
VB2010はゴミ箱に捨てて、VB6.0で開発したほうが良い。

それが出来ないなら余所のスレに行け。

840 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 22:44:57.96 ]
うぜえなこいつ

841 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 22:52:06.76 ]
>>839
スレ違だボケって意見には賛成できるけど
>VB2010はゴミ箱に捨てて、VB6.0で開発したほうが良い。
コレは同意できないw

842 名前:デフォルトの名無しさん [2011/12/21(水) 05:57:54.47 ]
じゃ、VB6で
Shell "notepad", VbNormal



843 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 06:03:46.00 ]
よくサブルーチン(戻り値のないメソッド)をCallで呼び出しているけど
アレは直接呼び出すのと違うの?メリットって何?

844 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 06:38:04.44 ]
>>843
リファレンスぐらい読めよ。
msdn.microsoft.com/ja-jp/library/sxz296wz(v=vs.80).aspx

「コードの読みやすさが向上します」って書いてあるだろ。
メリットはそれだけだ。デメリットはタイピング量が6文字増えることかな。

845 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 06:49:12.71 ]
>>844
VB6のリファレンスってまだ残ってたのか! と思ったらコレVB.netのじゃん…
>プロシージャを呼び出すときに Call ステートメントを使用する必要はありません。ただし、そうするとコードの読みやすさが向上します。
>argumentList を指定する場合は、かっこで囲む必要があります。
つまり、引数を括弧で囲めるようになるのか…確かにこれは有用だな。

むしろ、括弧を省略しなければいけない仕様の方をdo…おやこんな時間に誰だろう?

846 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 20:08:03.41 ]
俺はずっと以前からCall使ってる。
理由は、コードが見やすくなるからだ。

847 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 21:24:27.15 ]
>>846
まぁ、本当はCall命令はFunctionステートメントやSubステートメントが
無かったころの残骸なんだけどな。

VB1.0の頃には、見た目以外にはほとんど意味の無い命令になった。

848 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 21:42:06.92 ]
だいたい、VBってタイピング量にかけては最悪だろ。

If で開始して、End If で終わる。

Do while〜 Loop で終わる。

CとかJavaとかC#は if で開始して } で終わる。

コードの見やすさからすれば断然C#。

VB6やっててよかったと思う事は、俺にはただ一つ。

VB6 で作ったクラスとかをほぼそのままVBAにも適用して動作可能にできる点だ。
(DB関係はそれでExcelにも使えてる)

849 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 22:03:11.42 ]
タイプ量=みやすさ とでも思ってるのか
ほんとに綺麗なソースもホントにひどいソースもみたことないんだな、きっと

850 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 00:30:12.89 ]
見やすい見にくいとかどうでもいいよ。動けば

851 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 00:54:11.41 ]
>>847
BASICの頃のはラベルへGOTOとかGOSUBじゃなかったっけ?
CALLとか使った覚えなさす。 もっともあの頃のBASICはテキストデータを格納して
マシン語を走らせるためのブートローダー的なものだが。

>>850
お願いだからいろんなモジュールのグローバル変数をごっちゃにして
未定義でなおかつ代入してない変数を読み出して、たまたまうまく動いているプログラムを量産しないでください。

イコールの位置とかそろえなくて良いけど、インデントくらいはまともにやってください。
If a = 0 Then ' インデントレベル 0
If b = 0 Then c = 0 ' レベル 0
 d = 0 ' レベル1
End If ' レベル0
…これ難読化ツールでも使ったんですか?… 

852 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 01:03:15.42 ]
絶対自分しか見ないってんなら良いけど
他人が見るの前提ならCallは付いてた方が良いよな
つか付けてくれ
あと.Textとか.Valueとかも付けといてくれ
Option Explicitも忘れないでー

変数なんだかオブジェクトなんだかSubなんだかFunctionなんだか
そもそも作った人がtypoミスしたまま気が付いてないとか

解らないから!解らないから!



853 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 07:28:40.89 ]
>>851
インデントもロクにしないっていうのは
単に初心者かCOBOL文化の名残り?

854 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 08:21:19.98 ]
>>853
おそらく仕事/上司が気に入らない事への腹いせでやって、逃げていったんだと思う。
一般的に禁忌と言われてることを一通りやってるし、ドキュメントも残ってないし。

ちなみに禁忌って言ってるのはだいたいこのこと。
・インデントをろくにつけない。つけないと言うより、したりしなかったり。全くしないよりたちが悪い。
・リテラル値を多用してハードコーディング
・もちろんファイルハンドル#1なども、一時的、永続的含めて直接指定
・他のモジュールで宣言してあるグローバル変数の多用
・変数の宣言をしてないことは日常
・文字列を数値化したり、文字列化したりしながら使用
・↑と併用して、状態として保持しておくべき値をコントロール(主にラベルなど)のキャプションで保持
・他のモジュールへコントロールを渡してそこでUIを操作
・ロジックとUIの分離? いえいえ当然、積極的に混合してます^q^
・バージョン管理? キチンとしてるよ! ほらここから数行下までのコメン(ry
・適切なコード内ドキュメント
'ファイルをクローズ
Close #1
少なくても初心者なら、ここまでひどい事するか? これは分かってる奴が意図的にやってるようにしか見えないぞ。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<260KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef