トップページ⇒tech
1001コメント380KB

VB初心者質問スレ Part6

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

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

心得
壱.質問する前に過去ログにも目を通してみる。
弐.質問する前に MSDN などで調てみる。
参.VBScript もこのスレでOK。
四.インストーラーなどの質問もOK。
0002デフォルトの名無しさんNGNG
CとDelphiとはどう違うんでしょうか?
0003デフォルトの名無しさんNGNG
じゃPro版はフリーソフトということで。
0004デフォルトの名無しさんNGNG
>>1
最初からリンク切れ
0005通りすがりNGNG
Part1 = http://piza.2ch.net/tech/kako/968/968328471.html
Part2 = http://piza2.2ch.net/tech/kako/990/990793224.html
0006通りすがりNGNG
3 と 4 もだね。
Part3 = http://pc.2ch.net/tech/kako/1000/10005/1000523122.html
Part4 = http://pc.2ch.net/tech/kako/1006/10069/1006922992.html
0007デフォルトの名無しさんNGNG
さぁ質問しなさい。期待あげ。
0008デフォルトの名無しさんNGNG
VBの仕事を無くしたいんですけど、
0009デフォルトの名無しさんNGNG
>VBの仕事を無くしたいんですけど、

VBの仕事請けなければいいのよ。
パンがないなら、ケーキを食べればー。
0010デフォルトの名無しさんNGNG
積み残し質問、何かあった?
0011デフォルトの名無しさんNGNG
 VBは長島茂雄であるといえよう。
0012デフォルトの名無しさんNGNG
VBでコンパイル時eval作って
0013初登場NGNG
マッチングで、文字列を比較したいのだけど、
aaa > bb
となってしまう。
文字数を無視して、bbの方を大きいとみなしたいのですが
どうしたら良いでしょうか?
0014デフォルトの名無しさんNGNG
>>13
もしかしたらそういうことができる関数がVBにあるかもしれないけど、
aaaとbbの中の文字列を抜き出してASCIIコードで比較するようにすればいいのでは。
0015デフォルトの名無しさんNGNG
?"aaa" < "bb"
True
001614NGNG
>>14
>aaaとbbの中の文字列を抜き出して
aaaとbbを1文字ずつ抜き出してに訂正
001714NGNG
気になったのでとりあえず作ってみる。
ところで"AA"と"AAA"ではどっちが大きくなるの?
ここでは"AAA"の方を大きくしている。
同じときには"同じ"を返すようにしてる。
= 比較("aaa","bb")

Function 比較(A As String, B As String) As String
 Dim c As Integer, i As Integer, Ok As Byte
 If A = B Then 比較 = "同じ": Exit Function
 If Len(A) > Len(B) Then
  c = Len(B): 比較 = B
 Else
  c = Len(A): 比較 = A
 End If
 Ok = 0
 For i = 1 To c
  If Asc(Mid(A, i, 1)) <> Asc(Mid(B, i, 1)) Then
   If Asc(Mid(A, i, 1)) > Asc(Mid(B, i, 1)) Then
    比較 = A
   Else
    比較 = B
   End If
   Ok = 1
  End If
  If Ok = 1 Then Exit For
 Next i
End Function
001814NGNG
>>17
>ここでは"AAA"の方を大きくしている。
"AA"の間違い。
なんでこんなに間違えるんだろ。
001914NGNG
つーか今普通にif文で比較したら
"bb"の方が大きいんですけど。
わしって踊らされてたんですか?
0020デフォルトの名無しさんNGNG
>>14

>>15を見よ。
0021真厨房NGNG
VB6でCGIやるとしたら基礎モデル教えて
<P>タグ1行のHTML返ス例で
002214NGNG
>>20
うん。それで調べてみたんです。
気になって気になって検索かけまくったわしって一体…
0023デフォルトの名無しさんNGNG
>>21
悪いことは言わない。止めときなさい。
代わりにPHP使うのがいいよ。
002413NGNG
すみませんでした。文字数でなく、大文字小文字の違いでした。
"aaa" > "BBB" になってしまうのです。
その前にsortをしているのですが、ソートでは、
aaa
BBB
の順に並んでいるんですけど、
比較すると、aaaの方が大きくなってしまうので、
マッチングできないんです。。
0025デフォルトの名無しさんNGNG
ソートで使用している比較ルーチンを使用すればいいだけじゃないのかな。
まさかリストボックスでソートしているとか、そんな素人っぽいこと言わないよね。

単純に"aaa" < "BBB"にしたいなら、モジュールにOption Compare Textを書けばOK。
ただし、この方法はモジュール全体に適用されるので、StrComp関数を使用して
第三引数にvbTextCompareを指定した方が良い。

ただし、これをやってもソートで使用している比較ルーチンの結果と
同じになるとは限らないので注意すること。
0026デフォルトの名無しさんNGNG
>>21
標準出力を GetStdHandleして、WriteFileで文字列を送る。
 sHeader = "Content-type: text/html" & vbCrLf
 sHtml = "<HTML><HEAD><TITLE>test</TITLE></HEAD>" & vbCrLf & _
     "<BODY><P>This is a test.<BR></BODY></HTML>" & vbCrLf

0027デフォルトの名無しさんNGNG
Private Sub RichTextBox1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 9 Then
KeyCode = Asc(" ")
End If
End Sub

TABキー押されたとき、RichtextBoxにTabコード(&H9)を入れたいのですが、、、、
無理やりこんなこと(スペースに置き換え)やってます。
なんか方法ないのでしょうか?
0028デフォルトの名無しさんNGNG
VB6でデータベースを作っています。
MSFlexGridで、アンドゥリドゥを製作したいのですが、どうしたら良いでしょうか。
配列に入れて・・等考えましたが、複雑になりますし、簡単にコントロールの内容を保存させたりする関数や方法は無いのでしょうか。
それと、ネットの画像をDLしてMSFlexGridのセルに表示したいのですが・・
詳しい説明が載っている場所が無かったので、お願いします。
0029デフォルトの名無しさんNGNG
VBっていくらすんの?
ワードとかエクセルに付いてるVBAとかでも
同じ事できるかなぁ?
ちょっと勉強してみようかなと思っとる。
0030デフォルトの名無しさんNGNG
>>27
一旦バッファに取り込んで、tabを挿入して書き換える以外に方法は
ありません。 リッチではTabを挿入するのはあきらめましょう。
0031デフォルトの名無しさんNGNG
>>29
Delphiならタダです。断然そちらを強く推します。
0032デフォルトの名無しさんNGNG
>>28
VB6でデータベースの作成!! 凄い! 惚れたよ。
アンドゥ リドゥ がやりたいなら、[Commandパターン]を使うべし。
0033デフォルトの名無しさんNGNG
>>31
将来性を考慮したらC++BuilderやJBuilderの方がいいんでないかい。
0034デフォルトの名無しさんNGNG
>>27
RichTextBox以外TabStop=Trueのコントロールをフォーム上に置かなければ、
普通にTab入るはず。
0035デフォルトの名無しさんNGNG
>29
http://www.microsoft.com/japan/presspass/releases/021402msdn.htm
VB.NET Standardは\12,800-

003613NGNG
>25
thanks you.
比較はif文でLOOPさせてやってたんですけど、
その方法でやってみます。
0037デフォルトの名無しさんNGNG
>>32
"Memento" じゃねーの?
0038デフォルトの名無しさんNGNG
>>29
VBAでも大体一緒。結構違うけど。
003932NGNG
>>37
スマン、状態の保存はMementoパターンでした。
VBスレで指摘されるとは。なんか嬉しい。
004027NGNG
>>34 感謝 !!!!
 巧く行きました。
004128NGNG
レス有難うございます。Commandパターンですか・・少し調べてみます。
サンプル等在れば教えて欲しいのですが・・
MSFlexGridのNetでDLした画像表示ですが、
http://homepage2.nifty.com/inform/vbmania/source/geturl.htm
のを使ってローカルに保存し、表示も心見ましたが、別の方法が在ると思われるんですが・・
これだとちょっと遅いような気がするんですが、仕方ないでしょうか
0042デフォルトの名無しさんNGNG
textBoxコントロールを右クリックしたとき
PopupMenuを表示したいのですが、Eventが巧く取れません。
2回クリックしない反応しません。
バグなのでしょうか? 
どなたかお願いします。

Private Sub txtTheme_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 2 Then '右クリックをチェック
PopupMenu RightClick ’ポップアップメニュー表示
End If
End Sub
0043ヤンNGNG
今現在VBの勉強をしているのですが,良い参考書があれば教えてもらえないでしょうか?
0044デフォルトの名無しさんNGNG
Text1.textにno1という名前をつけました。
Text1.textの文字が0だった場合「正しいです」が表示されて、それ以外だった場合「違います」が表示されるのは出来ました。

If no1 = Chr(48) Then
MsgBox ("正しいです")
Else: MsgBox ("違います")
End If

Text1.textが0か1だった場合に「正しいです」が表示され、それ以外の場合に「違います」が表示されるようにするにはどうすればいいのでしょうか?
0045デフォルトの名無しさんNGNG
>>42

txtTheme.Enabled = False
txtTheme.Enabled = True
PopupMenu RightClick

>>43

VBの参考書なんてどーれも一緒

>>44

If no1 = "0" or no1 = "1" Then
MsgBox ("正しいです")
Else: MsgBox ("違います")
End If

0046デフォルトの名無しさんNGNG
>>43
プログラミング Microsoft VisualBasic6.0〈VOL.1〉基礎編 マイクロソフト公式解説書
http://www.amazon.co.jp/exec/obidos/ASIN/4891001348/qid%3D/250-0054436-1965029

この本以外は、糞。
004744NGNG
>>45
出来ました。 ありがとう!!
0048デフォルトの名無しさんNGNG
Frameコントロールの上に配置したコントロールって、
LeftとかTopとかのプロパティが変わったりFrameの
EnableをFalseにすると使用不可になったりするじゃないですか。
と言う訳で、Frameの上に配置したコントロールを取得したいのですが、
何かいい方法はないでしょうか?

0049デフォルトの名無しさんNGNG
>>48

こんなもんかねぇ。ヘルプも見てないで間違ってるかも。

For I = 0 To Form1.Controls.Count - 1
 If Form1.Controls(I).Container Is Frame1 Then

 ' 処理

 End If
Next
0050デフォルトの名無しさんNGNG
>マルチくん
Controlsコレクションで列挙して、Containerプロパティをチェック。
0051デフォルトの名無しさんNGNG
>>49
ありがとうございます

Containerに添字は必要なかったのですね。
(0)とか入れて地獄に逝ってました。
ありがとうございます
0052デフォルトの名無しさんNGNG
>>49
合ってるけど、Eachを使うほうがモアベター。
0053デフォルトの名無しさんNGNG
>>48
VB初心者掲示板の投稿消しとけよ
0054デフォルトの名無しさんNGNG
>>52
質問する時はコードを見せろ、バカ!
0055デフォルトの名無しさんNGNG
>>54
誤爆?
005641NGNG
すみません、Commandパターンってやっぱりよく分かりませんでした…
詳しい説明お願いします。
0057誤爆者NGNG
>>51 だった。
0058デフォルトの名無しさんNGNG
>>53
>VB初心者掲示板の投稿消しとけよ

V友の超初心者専用Q&A掲示板ではなく?こちらも同時期に回答ついてるぞ。

「VB初心者掲示板」がどこかは知らないけど、別の掲示板なら、
他所でもらった回答をまとめて、解決方法をレスしとけよ。>>49
0059デフォルトの名無しさんNGNG
>>58
マルチ坊やに理屈は通じない。
こないだから平気でマルチし続けてる。
006032NGNG
>56 (= >28 >41)
Commandパターンじゃなくて、>>37 が指摘したようにMementoパターンだった。
http://www.ff.iij4u.or.jp/~ahirusan/Java/patterns/memento.html
http://www11.u-page.so-net.ne.jp/tk9/ys_oota/mdp/Memento/index.htm
俺も勉強中だし、今、理解できなくてもいいよ。
20年後に、そういえば掲示板でMementoとか言ってたなと思い出してくれ。

さて、MSFlexGridで遅い件だけど、
HTTPのダウンロードが遅いの? MSFlexGridの表示が遅いの?
もうちょっと答えられるように質問してよ。
006149NGNG
>>58
ナンデ俺ナンダヨ…
006258NGNG
ごめんよ、誤爆だ。49じゃなく48でした。

他所でもらった回答をまとめて、解決方法をレスしとけよ。>>48
006356NGNG
>>60,37
Mementoパターンですか・・よく判りませんが見たり調べてみます。
遅い件は、多分DLしてファイルとして保存>開くのところが遅いんだと思いますが・・
ちょっとコードを変えてますが、こんな感じでやっています
Dim b() As Byte
b() = Inet.OpenURL("http://www.dd.iij4u.or.jp/~cap/images/logo.gif", 1)
Open "Date.jpg" For Binary Access Write As #1
Put #1, , b()
Close #1
On Error Resume Next
Picture1.Picture = LoadPicture("Date.jpg")
Set List1.CellPicture = Picture1.Picture
MSFlexGrid1.RowHeight(List1.Row) = Picture1.Height
もうちょっと簡単にすれば早くなると思うのですが・・・
0064デフォルトの名無しさんNGNG
>46
それはVBの本だと思うけど、VBAの本でなくて良いのですか?
006546NGNG
>>64
ん、>>43はVBAのお勧め本を聞いてたの?
俺は、ヘルプ見ながら、試行錯誤でやっちゃうからお勧め本はない。
0066名無しさんNGNG
VBを1から勉強するに適した本はありますか?
0067デフォルトの名無しさんNGNG
>>66
作って分かるVisual Basic
0068デフォルトの名無しさんNGNG
VBのマニュアルはDelphiと違ってよく出来てると思うけどなぁ。
一通り読んでみそ。
0069デフォルトの名無しさんNGNG
>>66
MSDN見ながら実際やってみることだな
それだけでジュウだな
APIはVB用の解説WEBでさがすことだな
007032NGNG
>>56
List1ってのが何かわからん。ListBox? でも、CellPictureなんてプロパティないしな。
なんでさ、ダウンロード と 表示を一つのサブルーチンでやっちゃうわけ?
そうやっちゃうから、どちらが遅いのかという質問に答えられないんだよ。
学生さん? ならば許す。

とりあえず、On Error Resume Next 以降を少し簡略化してみた。
Dim nRow As Long
Dim nCol As Long
nRow = 1
nCol = 1
With Me.MSFlexGrid1
.Row = nRow
.Col = nCol
Set .CellPicture = LoadPicture("logo.gif")
.ColWidth(1) = .CellPicture.Width
.RowHeight(1) = .CellPicture.Height
End With
俺の環境ではべつに遅くないけどな。
007132NGNG
あう、寝ぼけた。
× >>56
  ↓
○ >>63

× .ColWidth(1) = .CellPicture.Width
× .RowHeight(1) = .CellPicture.Height
  ↓
○ .ColWidth(nCol) = .CellPicture.Width
○ .RowHeight(nRow) = .CellPicture.Height
0072デフォルトの名無しさんNGNG
はじめまして
form1をロードして数秒後に(たとえば2秒後)
form2を立ち上げる。
というようなことをしたいんですがどうすればいいんでしょうか。
0073デフォルトの名無しさんNGNG
>>72
タイマーを使う。
0074デフォルトの名無しさんNGNG
>73
それはわかるんですが・・・。
0075デフォルトの名無しさんNGNG
>>74

んじゃ何がわからんのよ?
タイマーのIntervalを2000にして、

Private Sub Timer1_Timer()
Timer1.Enabled = False
Form2.Show
End Sub

とすりゃ完成やんけ。
0076デフォルトの名無しさんNGNG
>75
あっ!!
ホントだ!
感謝感謝です。
ありがとございました。
0077 NGNG
part1から見ようと思ったのですが、何やら表示されないわけで・・・
0078デフォルトの名無しさんNGNG
>>77
かちゅとか使ったら?
0079デフォルトの名無しさんNGNG
ここでうまいことインデントをするにはどうすればいいの?
if result=vbyes then
msgbox"",""
end if
↑たぶんあんまりあいてない・・・
008079NGNG
っていうか全然あいてないわ・・・。一応スペース4コ入れたんだけど・・・。
0081デフォルトの名無しさんNGNG
>>79
こんな感じ?
 
if result=vbyes then
  msgbox"",""
end if
 
それともこんな感じかな?
 
if result=vbyes then
    msgbox"",""
end if
0082デフォルトの名無しさんNGNG
>>81
上は半角スペース4つの代わりに全角スペース2個
下は半角スペースの代わりに「&nbsp;」を入れてみた
0083デフォルトの名無しさんNGNG
>>77
「そんなスレありません」と表示されても、
左下に倉庫のリンクがあるから、クリックしてみ!
008463NGNG
>>70
すみません、List1というのはMSFlexGridです。改名してたのを忘れてました・・
この処理を10回〜50回程度連続でやらせるんです。そうするとかなり低速で・・
いちいち保存>開く等せずにちょくせつピクチャボックスに入れられれば、早くなると思うのですが、どうなんでしょう。
ちなみに10代で学生ですが・・
008563NGNG
処理別にテストPG作ったところ、100回繰り返しNetの情報をDLするのが、17秒で、
それを保存し開いてMSFlexGridに設定するまでが7秒でした。こんな物なのかな・・
0086通りすがりNGNG
>>77
このスレの >>5-6 に書いときました。<Part1〜4のURL
0087デフォルトの名無しさんNGNG
プログラムが起動されている状態で、さらに起動された場合、
「既に起動されています」のメッセージを出力して、
既に起動されているプログラムをActiveにする。
という事をしたいのですが、どうすればよいのでしょうか?
0088デフォルトの名無しさんNGNG
こんにちは。はじめまして。
VB6のソフトウェアをつくったのですけれど、MMCONTROLを使って、
音が入るソフトを作るとVISUALSTUDIOをインストールしていない
パソコンでは動きません。これはどうやって解決したらいいんでしょうか??
ご指導お願いします。DLLをパックするような。。そんな気もするんですけど
どのDLLかもわかりません。
0089デフォルトの名無しさんNGNG
>>66
ディストリビューションウィザードとか使いましょう。
009079NGNG
>>81
>>82
ありがとお。   ありがとお。
0091デフォルトの名無しさんNGNG
こんなものが出てしまいました。何がいけなかったのでしょう?
[OK]ボタンを押してもゾンビの様に何度も表示されます。

----------------------------------------------------------
VB6 のページ違反です。
モジュール : KERNEL32.DLL、アドレス : 017f:bff7b9f5
Registers:
EAX=1001cdbc CS=017f EIP=bff7b9f5 EFLGS=00010202
EBX=007ffe28 SS=0187 ESP=00700000 EBP=00700024
ECX=1001cdbc DS=0187 ESI=00000001 FS=495f
EDX=00000001 ES=0187 EDI=8194055c GS=0000
Bytes at CS:EIP:
56 57 89 65 e8 75 04 33 c0 eb 54 85 c0 74 4b c7
Stack dump:
007ffe28 1001cdbc 00000001 007ffe28 1001cdbc 00701df8 bffc0ab0 bff79250 ffffffff 00701e08 bff7cef4 1001cdbc 00000001 1001e37d 1001cdbc 00701e30
0092デフォルトの名無しさんNGNG
>>91
せめてKERNEL32.DLLのソースコードをMSからもらってきてw
0093初心者NGNG
すいません質問です。
formにgifアニメを貼り付けるにはどうしたらいいんでしょうか。
0094デフォルトの名無しさんNGNG
>>93
gif -> aviコンバータをどこからか持ってきて、
Animationコンポに読ませる。

UNISYSの特許はまだ切れてないだろー。
0095初心者NGNG
>94
ありがとうございます。
0096名無しさんNGNG
人名を(テキストボックスに)入力してエクセルA2〜A101に出力するにはどうすればいいのですか?

Private Sub TextBox1_Change()
for i = 1 to 100
next i
End Sub
0097デフォルトの名無しさんNGNG
相手にPingを打ってそれがかえってくるかっていう単純なモノを
つくりたいんですがこれってどういうコマンドを使えばいいんですか?
009877NGNG
スレ見れました。
教えてくれた人ありがとう!
0099デフォルトの名無しさんNGNG
>>87
App.PrevInstance

>>97
pingをリダイレクトしたファイルを読み、削除する。
わりと短く書ける。
同じことをAPIでやると、100行以上になる。
0100デフォルトの名無しさんNGNG
>>87
App.PrevInstance
AppActivate

>>96
CreateObjectでExcel起動しておくこと。
指定のブックの指定のシートのRangeプロパティかCellsプロパティ使って、
For文の中でA2〜A101を指定する。
後は各セルにデータを代入するだけ。

Webで調べてみ。現状からはこれ以上回答できんし。

>>97
Shell関数でDOS経由でPingコマンド飛ばすとか。
リダイレクトでファイルに書き込むようにしておいて、
そのファイルをVBで読み込む。
0101100NGNG
>>100
97に関してだけどそれだとNT系のやつだとダメっぽくない?
■ このスレッドは過去ログ倉庫に格納されています