VBのコードでVBをけなすスレ

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
If MsgBox("VBを糞言語だと思いますか?",vbYseNo,"2ch") = vbYes Then
MsgBox "あなたは正しい。" & vbCrLf & "今すぐこのスレに書き込みをしよう!",vbInformation,"2ch"
Else
Do While(1)
Loop
End If
2:02/02/09 17:31
よっこらしょ、っと。
3。

MsgBox "************ 終了 ***********"
4デフォルトの名無しさん:02/02/09 17:39
Dim 2ch As String
Dim I As Integer

2ch = ""

For I = 1 To 90000
2ch = 2ch & "VBは糞!!"
MsgBox 2ch
Next I
' xxxをこの世に生成。生成してごめんなさい。
Set aXxx = new Xxx

aXxx.Name = "1"
aXxx.Say "私はxxxです。言うまでもありませんが。"

' あぼーん
Set aXxx = Nothing

    ∧ ∧___  バカみたい♪
   /(*゚ー゚) /\
 /| ̄∪∪ ̄|\/
   |        |/
     ̄ ̄ ̄ ̄
Dim programmingLanguage As ProgrammingLanguage

Set programmingLanguage = BillGates.getBasicInstance("Visual Basic")
If Basic(programmingLanguage).Speed = vbSlow Then
MsgBox "それが何か?"
End If

Set programmingLanguage = Nothing

Set programmingLanguage = new Java
Set programmingLanguage = new Ruby

Set programmingLanguage = Nothing

8デフォルトの名無しさん:02/02/09 18:04
'ここから変数宣言
Dim a As Variant '変数a
Dim b As Variant '変数b
Dim c As Variant '変数c
Dim d As Variant '変数d
Dim e As Variant '変数e
Dim f As Variant '変数f
Dim g As Variant '変数g
Dim h As Variant '変数h
'ここまで変数宣言
Dim answer As DialogResult = _
  MessageBox.Show("VB.NET使ってる?", "質問", MessageBoxButtons.YesNo, MessageBoxIcon.Question)

If answer = DialogResult.Yes Then
  MessageBox.Show("よろしい。", "( ´∀`)")
Else
  MessageBox.Show("時代遅れ。氏ね", "(゚Д゚)")
End If
>>8
最高w
VBはスクリプトな気がする人〜?

(*゚ー゚)ノハーイ
>>9
VB.NETは記述が冗長で生産性が悪いね。
13c++:02/02/09 18:14
もうわすれちゃった
VBって再帰のコードって書けるの?
あと、関数のポインタが無いとつらいんだけど、
VB5からだっけ?
>>14
関数ポインタなんか使えねーよ。
使うんならVC++使え。
AddressOf
>>15
VB6は関数ポインタ使えるよ
>>17
ああ、そうだったな。ゴメソ
19デフォルトの名無しさん:02/02/09 19:03
AddressOfはAPIに引き渡す用で、VB5から使える。
?でも、関数ポインタから自分で呼べたっけ
API使うとき専用だったような。
ま、AddressOfは自前の関数のアドレスが分かるだけで
VBからじゃあ使えない。呼び出し先には渡せるけど。
>>20
たぶん当り。単に関数のアドレスを引数に取るAPIが使えるだけ。
>>20-22
ワラタ
>>14
再帰は普通にかけるよ。
関数ポインタってどういうときに使う?
代替方法はあると思う。
Dim memory(1)

memory= "何か"
Debug.print "VB使いは" & memory(1) & "を覚えている。"
Redim memory(2)
Debug.print "VB使いは" & memory(1) & "を覚えている。"

'・・・なにも覚えちゃいない。
26デフォルトの名無しさん:02/02/09 21:57
Dim Mozi(5) As String
Dim Str As String

Mozi(1) = "VB氏ね氏ね"
Mozi(2) = "VC最高!"
Mozi(3) = "糞糞VB"
Mozi(4) = "VBは反面教師"
Mozi(5) = "VBプログラマーは逝ってよし"

Radamize

Do While (1)
Str = Str & Mozi((Rnd * 5) + 1)
MsgBox Str
Loop
お前ら、VB すら使えんのかよ。

>>25
> Dim memory(1)
> memory= "何か"

何したいのかわからん。天然ボケか ?

>>26
Randamize ってなんだよ ?
2825:02/02/09 22:37
memory= "何か"

memory(1)= "何か"

の間違い。鬱だ、逝ってくる。
29デフォルトの名無しさん:02/02/09 22:41
>>27
>>Randamize ってなんだよ ?
微妙に26のと違ってるのがワラタ。
30デフォルトの名無しさん:02/02/09 22:43
しぇーかいは、Randomizeな。
>>25

つーかまじで何をやりたいのかわからんコードだな。
Redimで配列のサイズを変えたいんなら、
Dim Memory() で宣言しとかなきゃダメだぞ。
あと Redim Preserve しなきゃ Memory(1)の内容は消えるぞ。
32デフォルトの名無しさん:02/02/09 22:58
>>31
コードがおかしいのはおいといて、25がやりたかったことは
>あと Redim Preserve しなきゃ Memory(1)の内容は消えるぞ。
の部分でわざとだと思われ。
どうでもいいが

Do While (1)
Loop

っつー書き方ってVB的にはノーマルなの?
>26
Arrayツカエ
3525:02/02/09 23:30
>32
その通りDeath。
マジで逝って来る。
>>33
俺は

Do
Loop



Do While True
Loop

って書く。
37デフォルトの名無しさん:02/02/09 23:41
無限ループはゲーム系ではあえて使うこともあるけど、
それ以外のアプリでは使わないな。
>>34
5つ位なら見やすくていいんじゃない?
26のだと配列に入れる文章量から考えると
Array関数使ってもあんまり見やすくならんかもね。
40デフォルトの名無しさん:02/02/09 23:56
Sub Kakunin()
 Label1 = "あれ"
 Label2 = "これ"
 Call VBProgramar()
End Sub

Sub VBProgramar()
 Data1.RecordSource = "サードパーティ製品"
 Data1.Recordset.MoveFirst
 Do Until Data1.Recordset.EOF
  If Data1.Recordset![使いみち] = (Label1 & Label2) Then
   Label3 = "できます"
   Exit Sub
  End If
  Data1.Recordset.MoveNext
 Loop
 Label3 = "できません"
End Sub
VBで見やすいコードなんて無駄な努力を・・・
for (int i = 0; i < 10; i++) {
  if (funcA(i) && funcB()) { continue; }
   :
   :
}

For i = 0 To 9
  If Not FuncA(i) Then
    If Not FuncB() Then
     :
     :
    End If
  End If
Next i

短絡評価も continue もなくてどうやってプログラムを組めと・・・・・・・。
>>42
すなおにGOTO使おうよ。
>>短絡評価も continue もなくてどうやってプログラムを組めと・・・・・・・。
ロジックの見直しでなんとかならんか?

なんともならんなら、42で書いてるような感じだのう。
45DAO使おうよ:02/02/10 01:25
>>42
***********************************************************************
For i = 0 To 9
  If Not FuncA(i) Then
    If Not FuncB() Then
     :
     :
    End If
  End If
Next i

短絡評価も continue もなくてどうやってプログラムを組めと・・・・・・・。
***********************************************************************

For i=0 To 9
If Not (FuncA(i) Or FuncB()) Then
:
:
End If
Next

これじゃいけないのかえ? 間違ったら住まん
46デフォルトの名無しさん:02/02/10 01:53
>>27
貴様の方がVB使えてないじゃないかボケェ!
Randamizeも知らないで「VBすら使えんのか」とはなんじゃい。
己のようなアフォは逝ってよし
4729,30:02/02/10 01:56
>>46
27の指摘はどっちも概ね正しいよ。
ちゃんと見な。
>>46
プ。英和辞典でも引きなさい
49デフォルトの名無しさん:02/02/10 02:37
×Randam
○Random

の事を言っているのカイ?
50デフォルトの名無しさん:02/02/10 09:34
>>45

まずは、continue の話...

もちろん...

> If Not (FuncA(i) Or FuncB()) Then

でいいんだけど、条件がたくさんある時 C なら...

 if(cond1){ continue; }
 ...
 if(cond2){ continue; }
 ...

と書けるけど、VB では...

 If Not Cond1 Then
  ...
  If Not Cond2 Then
   ...

と、どんどんネストが深くなっちゃうよね。これがちょっとね...。

で、短絡評価の方だけど...

if (funcA(i) && funcB()) { /* C 言語ね */



> If FuncA(i) And FuncB() Then ' VB ね。

って同じじゃないよ。C の方は、funcA(i) が 0 を返したら funcB() が呼ばれ
ないことが保証されている。これに対して、VB は FuncA(i) と FuncB() の両方
を呼んでから AND とるから必ず両方を呼んでしまう。この例じゃちょっとわかり
にくいけど、例えば「配列の中身が 0 だったら何かをする、ただし与えられる添
え字が配列の範囲外の時もある...」って言う時は C なら...

if(0 <= i && i < sizeof(a) && a[i] == 0){

と書けるけど、VB で...

If Lbound(a) <= i And i <= UBound(a) And a(i) = 0 Then

と書いちゃうと、i が範囲外の時に a(i) がエラーになってしまう。だから VB
では...

If Lbound(a) <= i And i <= UBound(a) Then
 If a(i) = 0 Then

と書かないといけない。これがちょっと面倒だよね。
>>50
GoTo使ったらダメなの?規則?
規則じゃないなら使いなよ。マシン語レベルじゃ同じこと。
52デフォルトの名無しさん:02/02/10 16:08
Dim File As String
Dim nCount As Integer
Dim Str As String
Dim i As Integer

If MsgBox("VB最高ですか〜!",vbYesNo,"2ch") = vbYes Then

Do

nCount = nCount + 1
File = "C:\Windows\デスクトップ\" & nCount & ".txt"
Str = ""

For i = 1 To 2000
Str = Str & Chr(Rnd * 25 + 65)
Next i

Open File For Output As #1
Print #1, Str
Close #1

Loop

End If
53デフォルトの名無しさん:02/02/10 16:10
>>52
Randomize入れ忘れた。。。
54デフォルトの名無しさん:02/02/10 17:25
>>52
動く環境はなさそうね。
55デフォルトの名無しさん:02/02/10 19:00
>>50
なぜGOTOを使わん?
Cのcontinueは非構造化制御という意味ではGOTOと同類じゃん。
Cなら非構造化処理を導入してもよいがBASICではだめという論理がわからん。
>50はラベルが思いつかないとか
5750:02/02/10 21:47
>>51
まあ、Goto 使うかどうかは、その時次第。処理を途中で打ち切るなんかの場合
は、C なら continue、VB なら Goto だろうね。

>>55, >>56
> C の continue は非構造化制御という意味では GOTO と同類じゃん。
あんたら頭大丈夫 ? continue ってやれること決まってんだよ。どこでも飛べる
Goto となんで同類なんだ ? 大体、そう言うならなんで C に continue がある
んだよ。C だって goto があることぐらい知ってるよな。
なんか暴れ出したぞ
For i = 0 To 9
Do
If foo() = False Then Exit Do
If bar() = False Then Exit Do

Loop While False
Next i
まっあんまりいいとは思えないテクニックだけどね。
GOTOの方がましかな。
60デフォルトの名無しさん:02/02/10 22:49
何気に良スレ化?
6150:02/02/10 22:52
>>59
Goto の方がマシでしょ。結局 Loop まで見ないと何やってるかわからないから。
その点、continue ならそれ見ただけでわかると言うことが優れているんですけど、
これすら理解できない >>55, >>56, >>58 はヴァカ決定と言うことで良いです
か ?
っていうか Exit For, Exit Do の類を知らないのか?
6350:02/02/10 23:09
>>62
頼むから、VB しか知らないんならでしゃばるなよ。C の continue と
break の違いはわかってんの ?
>>50は電波の香りがする…
ネストが深くなるのが嫌なんじゃなかったのか?
6559:02/02/10 23:16
ちなみに、俺は普通こう書いている。
continueであることを名前で判断している

For i = 0 To 9
 If foo() = False Then Goto Continue
 If bar() = False Then Goto Continue

Continue:
Next i
>>65
普通はそうやるわな。すっきりしてるし。
>>50はわがまますぎー。
67デフォルトの名無しさん:02/02/10 23:24
>>61

俺は55,56,58じゃないけど、

>その点、continue ならそれ見ただけでわかると言うことが優れているんですけど、

gotoよりは優れているとうだけで、
ループから単に抜ける(cならbreak, VBならExit 〜)よりも、
機能的にgotoに最も近いから、似たようなもんだろうってことが言いたいのでは?

#実際、短いfor文ならいいが、へたれな長いfor文でcontinue連発されたら、
#読むのダルいし。
6850:02/02/10 23:40
>>67
まあ、>>56, >>58 はほっとくとして、>>55 がおかしいのは...
> C の continue は非構造化制御という意味では GOTO と同類じゃん
と言うところ。構造化という意味において、continue と Goto を同類と言うこと
が本質を理解していないと言いたいだけ。別に俺は、>>50 のように書いてるわけ
じゃない。>>45 の書き方について多重ループになったらダメだよって言ってるだ
け。通常は、>>57 に書いたように、その条件文の意味で書き方を変える。例外処
理みたいなものなら、>>65 みたいにすると思う。ただ、どうせ Goto 使うなら
Continue なんて言う名前より...

For i = 0 To 9
 If foo() = False Then Goto SkipProcess
 If bar() = False Then Goto SkipProcess

SkipProcess:
Next i

とかと言う名前にする。

あと、If Foo() = False Then ... と言う書き方はちょっと違和感ある。何で、
If Not Foo() Then と書かないのか ? (まあ、= False ならまだマシだが、
If Foo() = True Then ... とかく奴の気が知れない。)
6967:02/02/10 23:56
>>68
> >>65 みたいにすると思う。ただ、どうせ Goto 使うなら
> Continue なんて言う名前より...

65がContinueって名前にしているのは、Cのcontinueと同じ使い方で
このGoto文は使っているのだという主張を込めていることを表現したいからだと思う。
(って、他のVB使いにそういう意図が伝わるかどうかは別にして(^^;;)

そう考えるとSkipProcessだと名称が汎用的で、どこへジャンプしても
SkipProcessというラベル名に偽りなしなわけで、
本来のGotoの使い方であるかのような意図にも読み取れてしまうよ。

#まぁ代替手段でしかないので、ラベル名がContinueでもSkipProcessでも実際には大差ないけど。
結局、VBしかしらない相手も含めて考えたら、SkipProcessの方がよいのかもしれない。

>If Not Foo() Then と書かないのか ?
複数の条件を書くときにそういう書き方から拡張して
はまっている初心者をよく見かけるよ。

関数のときは問題ないが、ビット演算と絡んだときにはまる。
7050:02/02/11 00:42
>>69
> そう考えるとSkipProcessだと名称が汎用的で、どこへジャンプしても
> SkipProcessというラベル名に偽りなしなわけで、
> 本来のGotoの使い方であるかのような意図にも読み取れてしまうよ。

うむ、言われてみればそうだな。どっちがわかりやすいかは読み手のスキ
ルにもよるな。ちょっと反省した。

If Not については...
> 関数のときは問題ないが、ビット演算と絡んだときにはまる。
の意味がわからん。関数からの戻り値がビット演算と絡むこともある
が...。まあ、根本的には、VB が論理演算をビット演算子でやること
にあるとは思う。C みたいに論理演算子とビット演算子をべつべつに
するか、Boolean と言う型があるんだから条件式には Boolean しか
ダメとかすればいいと思う。(まあ、そんなことしたら VB 厨がパニ
くるだろうが...。)
7167:02/02/11 00:57
>> 関数のときは問題ないが、ビット演算と絡んだときにはまる。
>の意味がわからん。関数からの戻り値がビット演算と絡むこともある

すまん、これは勘違いだ。条件式がTrue/Falseでない場合だ。
なので、関数のときに問題がないのではなく、
>If Not Foo() Then
Foo()の戻り値がBooleanのときは問題なしってことで。

> VB が論理演算をビット演算子でやることにあるとは思う。
言いたかったところはこれ。

ただ、条件式で比較演算する部分を省略しなければ、
問題は起きないので、True/Falseでも一貫して省略しない方法を推すと。
7259:02/02/11 00:58
>>68
Foo()という名前じゃ何を返すか分からないから。
もしかしたらIntegerを返すかもしれないしBooleanを返すかもしれない。
それが定義を見ないとわからないから=True/Falseって書いてる。
もちろん、名前がIs〜とかだったらIf IsNumeric("123") Thenってかく。
もしFoo()がTrue/False/Nullを返したらどうする?
If Compare(a, b) Thenというのをどのように解釈する?

>>69
> (って、他のVB使いにそういう意図が伝わるかどうかは別にして(^^;;)
俺もそう思う。VBにはないしね。
あとContinueが将来予約語にならないか心配していたけど大丈夫そうだな。
73デフォルトの名無しさん:02/02/11 01:10
VB厨がVBを批判するスレはここですか?
>もしFoo()がTrue/False/Nullを返したらどうする?
VBってつくづくうんこですね
>>74
なぜ?データベースとかでもよくあるよね。
はいか、いいえか、未入力か。
7675:02/02/11 01:26
そうそう、関数がBooleanを返すようになっていればNullは返らないから。
True/False/Null(とそれ以外)が返るときは関数がVariantに
なっている場合のみ。
7775:02/02/11 01:27
×関数がVariantになっている場合のみ。
○関数がVariantを返すようになっている場合のみ。
7850:02/02/11 01:36
>>71
俺の意図は、伝わっていると思うが...
> 条件式がTrue/Falseでない場合だ。
がよくわからん。Foo() が Integer を返すように作っておいて、Foo()
の作成を C 厨に任せたら、True の時に 1 を返すように作る可能性大だよ。
で、戻った所に If Foo() = True Then ... ああ恐ろしや...。

>>72
> もしFoo()がTrue/False/Nullを返したらどうする?
そもそもそんな関数仕様にするのがおかしいとは思わない ? そう言う関
数仕様が良いと言う時もあるが、例外的だろ ?

結論として、If Foo() And Bar() Then なんて書く時の Foo() とか
Bar() の型は Boolean であるべきでしょ ?

>>73
何も言えないんだったら、無理して書かんで良いぞ。
>>74
3パターンの値を返すという話なら、C/C++ならintになるだけじゃ?
お前らが何の話で盛り上がってるのかイマイチわからん。
そんなのただのバグじゃん、で済む話じゃないのか?
8180:02/02/11 01:56
ざっと見たけど50の「意図」って?
>>42 ←これ?それともこれの話は終わったの?
>>80
済まない。
8367:02/02/11 02:08
>>78
> 条件式がTrue/Falseでない場合だ。
条件式がTrue/Falseでない場合に問題になるという意味は、
a = 1
b = 2
If a Then Debug.Print "表示される"
If b Then Debug.Print "表示される"
If a And b Then Debug.Print "表示されない"
If a = 1 And b = 2 Then Debug.Print "表示される"
ということ。
「a = 1」といった比較の式は結果としてTrue/Falseを返すのでOK。

70で50が言っている
> VB が論理演算をビット演算子でやることにあるとは思う。
の通り。

>Foo() が Integer を返すように作っておいて、Foo()
>の作成を C 厨に任せたら、True の時に 1 を返すように作る可能性大だよ。
1を返すように作ったんなら、
>で、戻った所に If Foo() = True Then ... ああ恐ろしや...。
Trueと比較してるのが単なる間違いだし、
Trueと比較したいなら、関数Fooの戻り値がbooleanでないのが間違いなだけでは?

戻り値Integerの1だとして、
If Foo() Then
と書いてたまたま問題なく動いても、それはこの関数単独で条件になっているから
たまたま動いているだけで、余計に怖いよ。
8450:02/02/11 02:42
>>83
ますますわからん...

とりあえず、話の前半は理解してるつもり (>>70 参照) だから良い。後半
は、別にこれが正しいと言ってるわけじゃなくて、こうなりがちだからやば
いと言う話。結論としては、条件式に Boolean 以外を書くのは良くないと
思っている。

で、...
> Trueと比較したいなら、関数Fooの戻り値がbooleanでないのが間違いな
> だけでは?
と書いてあるからには、関数 Foo() の戻り値の型は Boolean なんだよ
ね ? それとも、Boolean 型の Variant ってこと ?

Boolean 型なら、わざわざ True とか False と比較するのか意図がわか
りません。

Variant 型なら、Null = True の結果って何になるか知ってます ?
8567:02/02/11 02:55
>>84
>Boolean 型なら、わざわざ True とか False と比較するのか意図がわかりません。

単にBoolean型以外の場合と統一して、一貫性を持たせたいだけっす。
#個人の趣味でやるときは、省略する方です。
でも、仕事でやる場合は、多少くどくても誤解の少なくなる方向性で書きます。

72で59の言っているようにIs〜な関数ならまぁ誤解の生じる余地はないと思いますが、
Foo()のような関数だとその関数名からBoolean型の戻り値かどうか自明じゃないので、
後で見る人が困らないように=Trueなり=Falseを付けると。

#書き換える時間とテストする時間があれば、関数名から変えたいけど、そこは我慢。

>Variant 型なら、Null = True の結果って何になるか知ってます ?
Nullです。

8659:02/02/11 02:57
※私は67,83じゃないです。

> と書いてあるからには、関数 Foo() の戻り値の型は Boolean なんだよね ?
そう、まさにここが重要なのです。関数の戻り値が分からない。
単に書き忘れなのかもしれないし、意図したことなのかもしれない。
プロジェクト全体で完全に決まっており、全ての人が完全に守っているのなら
問題ないけど、現にあなたはここで混乱しましたね。
だから、=True/Falseを省略するのは書き忘れ。修正すべき。という理由になるのです。

ところで、
If Compare(a, b) Thenというのをどのように解釈する?
について誰か答えてくれないかなぁ。結構面白い問題だと思うんだけど。
8767:02/02/11 03:11
>>86
解釈・・・というのとは違う?かもしれないけど、
1,0,-1を期待するかな?

しかし、59も50も暇よのぉ。おれもなー。
8850:02/02/11 03:15
>>85
ああなるほど、If Foo() = True Then って書いてあったら、Foo() は
Boolean、If Bar() Then って書いてあったら Bar() は数値型ってことね。
まあ、統一されてれば一理あるとは思う。俺は、If Foo() Then って書いて
あったら Foo() は、Boolean で、数値型の Bar() を If Bar() Then と書く
ことは認めない方針だけどね。何故かって言うと、数値型の Bar() を
If Bar() Then って書いた時、意味的には当然 If Bar() <> 0 Then なんだ
けど、If 0 < Bar() なんかでも If Bar() Then なんて書く人がいるから、
ちゃんと書き分けた方が良いと思ってからね。

>> Variant 型なら、Null = True の結果って何になるか知ってます ?
> Nullです。

だよね。だから、>>72 の...
> もしFoo()がTrue/False/Nullを返したらどうする?
と言うのは、ちょっとまずいと思ってる。Compare() が True/False/Null を
返す時 If Compare(a, b) = True Then と書くと Compare() が Null 返した
時 If Null = True Then → If Null Then となって、結果的には思った通り
Else 側に行くわけだけど、初心者が...

Dim R As Variant

R = Compare(a, b)
If R = Null Then
...
ElseIf R = True Then
...
Else
...
End If

とか、

Select Case Compare(a, b)
Case True:
...
Case False:
...
Case Null:
...
End Select

なんてコーディングしてバグりそう。
8959:02/02/11 03:41
>>88
> ああなるほど、If Foo() = True Then って書いてあったら、Foo() は
> Boolean、If Bar() Then って書いてあったら Bar() は数値型ってことね。
ちょっと違います。Bar()って書いてあったら、書き忘れ。修正せよです。
Foo() = True (関数はBooleanを返すんだな。)
Foo() <> 0(関数は数値を返すんだな。)
Foo() (関数何を返すんだ?修正せよ)
となります。

>>67
わーい。答えてくれた。私もCompareは-1,0,1を返すと思っていたんです。
しかしC/C++のSTLのcompareはboolを返すんです。
関数名から何を返すか分からないという一例です。
C#みたいにIf文にかけるのがboolだけなら
TrueやFalseと比較する必要ない?
暗黙の型変換はできませんって怒られるね>C#
VB.NETのOption Script Onの場合でも同じそうだね。
(Offの場合は怒られないけど)
9290:02/02/11 06:24
あっほんとだ。VB.NETでも怒られた。(ScriptじゃなくてScrictですね)
Option Script Onはデフォですね。
ところでVB6みたいにファイル追加されたら勝手に
書いてくれる設定はどこにあるんだろう・・・。
9350:02/02/11 10:11
>>89
ああなるほど、了解しました。俺的には、若干冗長表現っぽく見えるので採用し
ないけど、そう言う考え方もありですね。

本質的には >>90, >>91 が書いてるように C# みたいな方向 (If には Boolean
しか書けない) が正しいと思う。
9490:02/02/11 11:35
> ScriptじゃなくてScrictですね
> Option Script Onはデフォですね。
自分で修正しといて間違えてるし・・・。
9590:02/02/11 12:14
つーかScriptでもScrictでもなくてStrictじゃん。
疲れているらしい、月曜だし。
9691:02/02/11 12:48
早朝のスケート見ながら書いてたから、
タイプミスにまったく気づかんかった。すまそ。

しかも、Scriptって・・・(--;
頭の中ではStrictのつもりだったんだけど。
遊びに逝ってきます。
97デフォルトの名無しさん:02/02/11 13:24
VB最強 = "んなわきゃねーだろ"



MsgBox VB最強
98やる気なし:02/02/11 13:40

寒 Maiソ()
  畏怖 ガイシュツ Then
    Beep
    Call MsgBox("ネタです。スマソ。m(_ _)m", vbSystemModal, "(-_-;;")
    遠藤
  遠藤 畏怖
遠藤 寒
99デフォルトの名無しさん:02/02/11 18:22
If VB = 最悪 Then
アンタ = 正しいアルね。
Else
アンタ = 逝ってよし
End If
100デフォルトの名無しさん:02/02/11 18:24
If VB = 氏ね Then
アンタ = 100ゲットしてよし
Else
アンタ = 氏んどけ
End If
101デフォルトの名無しさん:02/02/11 23:31
If VB = ViberatorBondage Then
IkuIku!
Else
NaeNae...
End If
102デフォルトの名無しさん:02/02/13 00:53
>99-101 アンタに代入している謎の変数(定数?)の中身が知りたい(w
大文字予約語カコワルイ!
97以降一気にクソ化
>104 クソ化っていうかそれが趣旨じゃん
>>104
実は中盤がスレ違いという罠
10767:02/02/13 22:48
>>106 しぇーかい!
108デフォルトの名無しさん:02/02/14 02:16
個人的に思うんだけど、
Foo() = True とか Foo() <> 0 とか書いたら
コンパイラが勝手に最適化してくれると思ってるんだけど、
もしかして最適化してくれないの?どう考えても最適化の対象だよね?
可読性を高めるために俺はいつもつけてるんだけど。
そもそもVBに速度を求めるのが間違っている
110デフォルトの名無しさん:02/02/14 09:15
 VBすら使えない奴が混じってないか、ココ?

>4
>Dim 2ch As String

 数字アタマの変数なんて使えるわけない。
         ・ 
         ・
 もしかして、誰もツッコまないのはワナ?ワナなのか?
実はFor〜Nextより、Goto駆使した方が速くなるって知ってた?
>>111 デバーグ時間を含めてもか?
>>110
ネタにきまってるじゃん。
114111:02/02/14 11:36
>>112
才能によります。
>>111
実はヴイビより、C駆使した方がずっと速くなるって知ってた?



116111:02/02/14 11:58
>>115
才能によります。
>>115
実はC駆使したより、アセンブラ駆使した方がずっと速くなるって知ってた?
118デフォルトの名無しさん:02/02/14 12:17
>>117
最近のWin系じゃないならあるかもね。
>>117
実はアセンブラ駆使するより、CPU買い換えた方がずっと速くなるって知ってた?
>>119
実はプログラム替えるより、プログラマ替えた方がずっと速くなるって知ってた?
才能によりますなぁ
>>120
史上最速!
>>120
実はプログラマ替えるより、仕事辞めた方がずっと楽になるって知ってた?
>123
実は仕事辞めるより、首吊ったほうが(略
これが再帰という奴でしょうか
>>108
Foo() = True と書いたら、エラーになるだろうと言うお約束の突っ込みは別にし
て、Foo() <> 0 が最適化されるかなんて気になるんならアセンブラ使うべし。

> 可読性を高めるために俺はいつもつけてるんだけど。

で、良いと思うよ。
127デフォルトの名無しさん:02/02/15 01:13
>>126
>Foo() = True と書いたら、エラーになるだろうと言うお約束の突っ込み

はい?エラーにならんだろ。
実は要求仕様削った方が・・・
129デフォルトの名無しさん:02/02/15 01:17
>>128
何へのレスなのかも、マジレスなのかもネタなのかも
さっぱりぱりぱりぱりっぱり。ぱりぱり。
130終了:02/02/15 01:31
Option Exit
130の頭がな。
132デフォルトの名無しさん:02/02/15 03:09
>>126
あなた、C言語とかしかやったことないの?
VBでは「Foo() = True」
という文で代入も比較も出来るんです。
記述する場所によって意味が変わるのよ。
AndとかNotも同じね。
133デフォルトの名無しさん:02/02/15 03:34
>>132
前半は正しが、後半は墓穴掘ってるぞ。

>AndとかNotも同じね。
こいつらはビット演算しかしてねーっつうの。
最近のBASICでも、代入の
A=B

LET A=B
の省略形と解釈されているのだろうか、、、
>>132

>VBでは「Foo() = True」という文で代入も比較も出来るんです。
これ、鬱陶しいよな。予想と違う処理になったりするんだもん。
おかげで評価の中に関数を使わない癖がついちゃったよ。
>>135
評価の中で代入をしなければいいだけじゃないのか?
一体どんな予想をしていたのやら。
>>135
Cのあの仕様はウンコだと思います。
Option Base 138
139デフォルトの名無しさん:02/02/16 16:19
Call age

Private Function age()

Buntton書き込む.SetFocus

End Function
個人的に、FunctionをCallするのは好かん。
っつーかFunctionに統一してくれりゃいいのに。
Cでvoidなんざいらん、何か返すようにしろ!
ってのと同じことを言っていることになる。
Cプログラマにvoidなんざいらん、誰か帰るように言え!
ってのと同じことを言っていることにもなる。
143デフォルトの名無しさん:02/02/18 22:27
VBクソage
144デフォルトの名無しさん:02/02/19 00:36
>25
そりゃそうだ。わらたよ。
Dim VB as Variant
Set VB = Nothing
End
146デフォルトの名無しさん:02/02/22 16:11
Format("0.5", "#,##0") '0 が返ります
Format("1.5", "#,##0") '2 が返ります
Format("2.5", "#,##0") '2 が返ります
Format("3.5", "#,##0") '4 が返ります

だからM$は嫌いなんだよ!!
http://www.microsoft.com/JAPAN/support/kb/articles/j070/0/82.asp
VBじゃなくてXPの問題なんだけどさ…
>>146

まさかそれに引っかかるようなコード書いてたの?
表示の仕様が整数値なら、文字列にする前にまずLongに変換するでしょ。
>>147
これはKBからそのまま引用してきただけだけど。
問題はこれを四捨五入するために使ってたの。
ちゃんとVBのヘルプにも「四捨五入する」って
書いてあるのに、XPで「丸め」になるなんて(泣
>>148
>問題はこれを四捨五入するために使ってたの。

やっぱりおかしいよ。
そもそもFormatは文字列整形のために使う関数なんだから、副作用に頼った利用
方法はなるべく避けるべきでしょ。
"#,##0"という書式も小数点以下の扱いには言及してないんだからね。
>>149
確かに本来の目的はそうだけど、「四捨五入する」ってヘルプに書いて
あったのに、その動作がOSで変わるってのが気に入らなかったの。

まあ、ここでグダグダ書いててもしょうがないので、力作業でやるしか
ないんだけどね。この件はもうおしまい。

できればM$にはExcelのRound/RoundUp/RoundDownと同様の関数を
追加して欲しい。自分で用意してもいいんだけど。
PRINT
152デフォルトの名無しさん:02/04/21 15:06
ぷぷ。VB使っている奴ってこの程度なんだ、やっぱ。
>>152
   ∧_∧  / ̄ ̄ ̄ ̄ ̄
  ( ´∀`)< オマエヨリは全員マシだがな(w
  (    )  \_____
  | | |
  (__)_)
149はアホ
155 GOTO 155
サイコロを振って 6 が出たら 149 へ戻る

VBスレ上げてるやつ死ね
>>157
   ∧_∧  / ̄ ̄ ̄ ̄ ̄
  ( ´∀`)< オマエガ氏ね(w
  (    )  \_____
  | | |
  (__)_)
みんなで一緒に氏のう。
   ∧_∧  / ̄ ̄ ̄ ̄ ̄
  ( ´∀`)< ヒトリで氏ね(w
  (    )  \_____
  | | |
  (__)_)