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

(*´д`*)アハァ… VB初心者質問スレ Part22

■ このスレッドは過去ログ倉庫に格納されています
0001HTML化チェック済みNGNG

  Part12 http://pc3.2ch.net/tech/kako/1026/10266/1026642565.html
  Part13 http://pc3.2ch.net/tech/kako/1029/10292/1029241786.html
  Part14 http://pc3.2ch.net/tech/kako/1030/10309/1030947162.html
  Part15 http://pc3.2ch.net/tech/kako/1032/10327/1032706491.html
  Part16 http://pc3.2ch.net/tech/kako/1034/10343/1034302532.html
  Part17 http://pc3.2ch.net/tech/kako/1036/10361/1036154952.html
  Part18 http://pc3.2ch.net/tech/kako/1038/10381/1038103769.html
  Part19 http://pc3.2ch.net/tech/kako/1039/10398/1039859691.html
  Part20 http://pc2.2ch.net/tech/kako/1041/10418/1041879465.html
  Part21 http://pc2.2ch.net/test/read.cgi/tech/1044028945/

VB.net関連スレ
【老若】VB.net質問スレ【男女】 (Part2)
http://pc2.2ch.net/test/read.cgi/tech/1043629429/

心得
壱.質問する前に過去ログにも目を通してみる。
弐.質問する前に MSDN などで調べてみる。
参.VBScript もこのスレでOK。
四.インストーラーなどの質問もOK。
五.下ネタもたまにならOK。
0459439NGNG
俺は変な日本語を書いているのか???

変な奴らが多い・・・・・。
0460デフォルトの名無しさんNGNG
>>458
無理。なぜなら2chだから。
0461デフォルトの名無しさんNGNG
オプションボタンをクリックしたときに、Shiftキーを
押したことにすることって出来るのかな?
0462444NGNG
>>445
普通に使えていたけど?
ビルド後にソースコードいじったりしてないよね?
あとコンパイルするときは最適化は当然はずしていると。
0463デフォルトの名無しさん NGNG
VB開発者は

アメリカでは、VBはプロ用
ジャパンでは、VBは素人用

という地位だそーです(.net magazine 4月号より)。
0464デフォルトの名無しさんNGNG
>>463
その勘違いが日本のVBユーザの技術不足を招いているんだろうね。
0465デフォルトの名無しさんNGNG
どの勘違いが?
0466デフォルトの名無しさんNGNG
>>464
素人が使う−>バカなので技術の積み重ねがない−>素人のまま−>どんどん素人が増える

悪循環だな。
0467デフォルトの名無しさんNGNG
まぁ、全角で「−>」こう書くほど馬鹿じゃないだろうがな。
糞見づらい。
0468デフォルトの名無しさんNGNG
>>467
慣れれば楽。
0469デフォルトの名無しさんNGNG
>>466
ちょっと違うよ。
馬鹿が使いやすい−>バカなので技術の積み重ねがない−>馬鹿のまま−>VBをかじった馬鹿がどんどん増える

やはり悪循環だな。
0470デフォルトの名無しさんNGNG
ここでは同じ質問を3回してようやく本当に知りたいんだなとわかる
0471デフォルトの名無しさんNGNG
すいません、いま仕事で各PCからプリンターに出力した件数を格納するソフトを作成しています。
それで、その出力したもののなかで、特定のソフトのものだけを抽出したいのですが、
これをジョブ名で特定しようとしたら他のソフトとジョブ名がかぶっちゃってたのです。
2ちゃんねらーのみなさま
なんとかして特定のソフトのみから打ち出したもののみをカウントする方法はありませんでしょうか?
0472デフォルトの名無しさんNGNG
>>461
SendKeys
0473デフォルトの名無しさんNGNG
Sub AAA()
Dim i
BBB
End Sub
-------------
Sub BBB()
Dim i
End Sub
------------
というように、あるプロシージャが別のプロシージャを呼ぶときに、両方で同じ名前の変数を使っちゃっても大丈夫なようなんだけど気のせい?
つまりAAAのiとBBBのiが独立に働いてくれてるような気がする。
0474デフォルトの名無しさんNGNG
>>473
変数の宣言レベルについて勉強しる。
0475デフォルトの名無しさんNGNG
>>474
スコープって言った方がいいと思う
0476473NGNG
>>474-475
スコープといってもダブっているiは気になるもの。
AAAのiの期限が切れてないうちにBBBのiを使えるということは、
VBはAAA.iとBBB.iという感じで複数箇所のiを分けて使っていてくれているようだ。
0477デフォルトの名無しさんNGNG
i++
のところでエラーが出た。
0478デフォルトの名無しさんNGNG
このスレには30歳以上が多いと見た
0479デフォルトの名無しさんNGNG
>>476
N88BASICでも使え
0480476NGNG
>>479
もういい。
0481デフォルトの名無しさんNGNG
>>476
スコープの意味を 100 万回調べれ。
0482デフォルトの名無しさんNGNG
>>476
山口さんちのツトム君と関口さんちのツトム君は別人ということだ。
0483476 ◆0d6Ohf/jLo NGNG
>>481-482
ローカルスコープの意味を知るのは簡単だ。
問題は
Call BBB
が単なるインクルードでないことだな。現在の位置にある情報を置いてけぼりにして別の場所にジャンプする、という感じだ。
0484デフォルトの名無しさんNGNG
一体誰が

Call BBB

をインクルードだと言ったの?
0485476 ◆0d6Ohf/jLo NGNG
>>484
だれもイワンが。
勝手にそう思い込むヤツがここにいただけの話。
0486デフォルトの名無しさんNGNG
>>472
初心者にSendKeysを奨めるのって、親切そうに見えてウラに悪意が感じられる(w

# keybd_event じゃダメ?
0487デフォルトの名無しさんNGNG
>>485
凄い勢いで馬鹿
0488476 ◆0d6Ohf/jLo NGNG
>>485
ひょっとしたらオレみたいのがいろんなソフトのバグを発見できるんだな。
0489476 訂正 ◆0d6Ohf/jLo NGNG
>>487へ
0490 NGNG
プロジェクトを削除したいんだけどさ、〜.vbpと 〜.vbwを削除すればいいの?
0491デフォルトの名無しさんNGNG
なんかいきなりトリップつけ出した偽476が煽っているみたいだが無視するがよろし。
0492デフォルトの名無しさんNGNG
>>490
意味不明。
Formだけ取り出したいなら.frmだけ隔離しる。
0493デフォルトの名無しさんNGNG
>>490
何がやりたいのかいまいちわからないけど、プロジェクトファイルを消したいのなら
それでいいんじゃないの?
0494デフォルトの名無しさんNGNG
もうすっかり春です
0495 NGNG
>>493
あんがと
0496476 ◆0d6Ohf/jLo NGNG
たくさんの大麻コントロールやDoEventsを使うとシングルスレッドのVBをマルチスレッドのような感じにできるみたいだがどうよ?
0497デフォルトの名無しさんNGNG
>>496
そら、マルチタスクってタイマー割り込みが元だからなぁ。
0498デフォルトの名無しさんNGNG
VB1.0でマターリと勉強してるんですが、なんか使いにくいです
もうこんな馬鹿らしいことは止めにします
0499476 ◆0d6Ohf/jLo NGNG
>>497
その裏技的割り込みで、
Timer1イベント。Inet1.OpenURLでjpgをダウンロードしつつ、
Timer2イベント。Inet2.OpenURLでzipをダウソできたりできそう。
0500デフォルトの名無しさんNGNG
>>498 ずいぶんと古いOS使ってるな(プ
0501デフォルトの名無しさんNGNG
>>499
でも、問題は非プリエンティブって事だな。

どこかで時間のかかる処理を入れると他のタイマーイベントの発生が遅れる。
まぁ、そのためのDoEventsか。

そう言えば、DoEventsした後に同じタイマーのイベントが発生したらややこしい気もするなぁ・・・。
再入可能をしっかり頭に入れて設計しないとはまりそう。
0502邪神476 ◆0d6Ohf/jLo NGNG
>>501
オレもややこしくなるとは思ってた。

またあとであばれる。
〜476さん外出中〜
0503デフォルトの名無しさんNGNG
リアルタイムシステムをVBで作るなよな〜
Windows自体もあやしいのに。
0504デフォルトの名無しさんNGNG
>>503
>リアルタイムシステムをVBで作るなよな〜

普通にそんな奴はいない。
0505デフォルトの名無しさんNGNG
>>504
ごめんなさい。
自分の思ったとおりに、見せようと思えばリアルタイムではなく、
台本を作って映画のようにプログラムを作らなければいきません。
と言いたかったのです。
0506デフォルトの名無しさんNGNG
>>505
>Windows自体もあやしいのに。

より、彼はハードリアルタイムかかなりシビアなソフトリアルタイムなシステムのことを言ってるんだと思われ。

騙ってまで設計の話に持って行こうとする理由がわからん。
0507471NGNG
だれか>>471の質問を答えることのできるかた教えてください(><
0508世直し一揆(コピペ推奨)NGNG
<血液型A型の一般的な特徴>(見せかけのもっともらしさ(偽善)に騙されるな!!)
●とにかく気が小さい(神経質、臆病、二言目には「世間」(「世間」と言っても、同じA型を中心とした一部の人間の動向に過ぎないのだが・・・)、了見が狭い)
●他人に異常に干渉し、しかも好戦的でファイト満々(キモイ、自己中心、硬直的でデリカシーがない)
●妙に気位が高く、自分が馬鹿にされると怒るくせに平気で他人を馬鹿にしようとする
(ただし、相手を表面的・形式的にしか判断できず(早合点・誤解の名人)、実際にはた
いてい、内面的・実質的に負けている)
●本音は、ものすごく幼稚で倫理意識が異常に低い(人にばれさえしなければOK!)
●権力、強者(警察、暴走族…etc)に弱く、弱者には威張り散らす(強い者にはへつらい、弱い者に対してはいじめる)
●あら探しだけは名人級でウザイ(例え10の長所があってもほめることをせず、たった1つの短所を見つけてはけなす)
●基本的に悲観主義でマイナス思考に支配されているため性格がうっとうしい(根暗)
●単独では何もできない(群れでしか行動できないヘタレ)
●少数派の異質、異文化を排斥する(差別主義者、狭量)
●集団によるいじめのパイオニア&天才(陰湿&陰険)
●悪口、陰口が大好き(A型が3人寄れば他人の悪口、裏表が激しい)
●他人からどう見られているか、人の目を異常に気にする(「〜みたい」とよく言う、
世間体命)
●自分の感情をうまく表現できず、コミュニケーション能力に乏しい(同じことを何度
も言ってキモイ)
●表面上協調・意気投合しているようでも、腹は各自バラバラで融通が利かず、頑固(本当は個性・アク強い)
●人を信じられず、疑い深い(自分自身裏表が激しいため、他人に対してもそう思う)
●自ら好んでストイックな生活をしストレスを溜めておきながら、他人に猛烈に嫉妬
する(不合理な馬鹿)  
●後で自分の誤りに気づいても、強引に筋を通し素直に謝れない(切腹するしかない!)●自分に甘く他人に厳しい(自分のことは棚に上げてまず他人を責める。包容力がなく冷酷)
●男は、女々しいあるいは女の腐ったみたいな考えのやつが多い(例:「俺のほうが男
前やのに、なんでや!(あの野郎の足を引っ張ってやる!!)」)
0509デフォルトの名無しさんNGNG
あまりにもタイマーにこだわっているもので、
ごめんなさい。
spawnすればいいな。
0510デフォルトの名無しさんNGNG
VBのタイマーは、割り込みではないから再入処理は考えなくても可。
コードの実行中には、タイマーは起動すらしません。

リアルタイム処理をやりたい場合は、Interval値を少なめにしておいて、
(たとえばInterval=10)
以下のように自前で実行タイミングを管理すればOK。


'一秒に1回の割合で動く処理の場合
Sub Timer1_Timer()
  Static Old as String

  If Time$ <> Old Then
    Old = Time$
    'ここに目的の処理を書く
  End If
End Sub
0511デフォルトの名無しさんNGNG
>>510
いや、途中でdoeventしたときのお話。
0512デフォルトの名無しさんNGNG
IEみたいな移動できるツールバーってできないんですか?
どなたかお願いします
0513デフォルトの名無しさんNGNG
>>512
こもんこんとろーるず-3のCoolBarのことですか?
0514デフォルトの名無しさんNGNG
>513
どうもありがとうございます
でも使い方が
0515デフォルトの名無しさんNGNG
Google逝k
0516デフォルトの名無しさんNGNG
"aaa + bbb" と言う文字列入力に対して、
変数aaaと変数bbbを合計した数値を出力する方法は無いでしょうか?
ただし、変数名(aaaやbbb)は、
別途に初期化された内、どの変数が指定されてくるか判らないとして。
(aaa + ccc とかもありえる)
よろしくお願いします。
0517デフォルトの名無しさんNGNG
>>516
よく分からないが、別途サブルーチン作って引数として渡せばいいんじゃん?
0518デフォルトの名無しさんNGNG
>>516
直接可能なやり方は知らぬが。
CallByName と Property を使って誤魔化せるかな
めんどくさいが。
0519デフォルトの名無しさんNGNG
>>516
文字列がかならずaaa+bbbという7文字で、さらに数字部分が001のような3桁表示と決まってるなら、Left関数とRight関数を使って、左から3文字、右から3文字抜き出すのが一番簡単だ。
0520516NGNG
レスありがとうございます。

>>517
そうです。引数などで渡して、その内容を判別させたいのです

>>518
CallByName・・
どうするにしてもクラスとかを一つ作ってからかぁ、たしかにめんどそうですねぇ
使った事無いのでてさぐりですが。

>>519
いえ、aaaなどは数字では無く、
正に英字の"aaa"などの文字列が来ます。
それを読み、aaaならば、
実際にプログラム内に持ってる変数「aaa」の内容を参照して……
とかしたいので、文字列とを内部変数と結びつける・・というかなんというか、そういう風なやり方知りませんでしょうか?


やはり、変数名を決めて、全てのパターンでif〜とかしかないんでしょうか・・
0521デフォルトの名無しさんNGNG
というか、そんな仕様でいいのかと。
0522ひきプロNGNG
>>520
type VAR_T
  name as string
  var as long
end type
みたいな構造体を作って、
Dim a(100) as VAR_T
で変数作成、実際にいじる時はループでnameを探すとか
0523デフォルトの名無しさんNGNG
コレクション作ってKeyに文字列突っ込め。
0524ひきプロNGNG
あー、コレクションだったら無尽蔵に要素を増やせそうですね。
管理する手間もなさそうだし
0525質問者代理NGNG
コレクション?
key?
両方ともよくわからないけど
aaa+bbbをどうプログラミングしていけばいいの?
0526デフォルトの名無しさんNGNG
前にも質問したんだけど
やっぱり分からない…だれか助けてくだされ(´・ω・`)

DBのテーブルに連結したMSHFrexGridの横に
チェックボックスを縦に並べて
ユーザに選択させる画面を作りたいんだけど
チェックボックスの状態とグリッドの各列を対応付けるいい方法が思いつかない。
グリッドがスクロールしたらチェックボックスの内容も
スクロールさせないといけないし…
マウス関係のイベントかタイマーでグリッドの表示してる部分(データセット内での位置)を
常に監視するしかないのかなぁ?
0527デフォルトの名無しさんNGNG
VB.NETのDBGridだとセルにチェックボックスが表示できる。
VBは捨てよう。
0528デフォルトの名無しさんNGNG
チェックボックス風の絵の切り替えではダメっすか?

0529 NGNG
>>526
リストボックスで代用すればいいよ。同時スクロールはAPI使うけども。
API使えないんなら、やめとき。
0530デフォルトの名無しさんNGNG
こんな時間に即レスサンクスコ。・゚・(ノД`)・゚・。

>>527
おぉなるほど!
…って残念ながら無理でつ
業務系アプリだしそんな許可おりないのさ。
なんとかVB6で…((((((^_^;)

>>528
ん〜結局は選択した時点でそのボックスがどのデータを指しているかを
知りたいのです。
Grid1画面分で表示できる件数ならなんとかなるけど、それ以上の件数で
スクロールバーで上下させられるとどうしようもなくてΣ(゚Д゚;≡;゚Д゚)アワアワ

FlexGridには「今表示しているデータの範囲」を知る手段が無いですよね?。
0531続いて526NGNG
>>529
なんつーかナイスアイデア!
かなりの手間になりそうですが、仕様決まってるから仕方ないか…
0532デフォルトの名無しさんNGNG
>>516 , >525
Dim vbs As Object
Set vbs = CreateObject("MSScriptControl.ScriptControl")
vbs.Language = "VBScript"
vbs.ExecuteStatement "aaa=1"
vbs.ExecuteStatement "bbb=2"
vbs.ExecuteStatement "ccc=3"
Label1.Caption = vbs.eval("aaa + bbb")
Label2.Caption = vbs.eval("aaa + ccc")
'過去ログから引っ張り出してきた、、、
0533デフォルトの名無しさんNGNG
追記するほどでもないけど
vbs.ExecuteStatement "aaa=" & CStr(a)
などで動的に数値は変えられるし、
Microsoft Script Control 1.0 の方を使っても作りやすいかも。
#Win95でうごいたっけかな、コレ
0534デフォルトの名無しさんNGNG
>>408
ありがとうございました。また質問ですが、RDBとは?なんでしょうか?
ヘルプを見てみましたがよくわかりませんでした。よろしければ教えてくだ
さい。
あと、WINSOCKでlistenメソッドで接続待ちをしていれば、特にイン
ターネットに接続する処理などをしなくても接続する事ができるのでしょう
か?
0535デフォルトの名無しさんNGNG
質問です。アウトプロセスで呼び出したactivex.exeの方から呼び出し元の
関数や変数を使うにはどうすればよいのでしょう?教えて!!
0536デフォルトの名無しさんNGNG
>>534
1 RDB Relational Data Base
2 試してみればいいだけの話でわ?
0537デフォルトの名無しさんNGNG
>>535
インターフェースを用意する。
0538デフォルトの名無しさんNGNG
Right関数ではまっているのですが

strTmp = "あ1い"
strTmp = StrConv(strTmp,vbFromUnicode)

strTmpEven = LenB(strTmp,3)
strChar = Right(strTmpEven,1)

この場合にstrCharに1文字読み込んで
最後が全角文字か判定したいのですが
strCharに"1"が入ってきません
Right関数をしようした場合の1文字ってのは
文字コード変換しても2バイト分取られるものなんですか?

環境はVB6,win2000です。

0539デフォルトの名無しさんNGNG
> strTmpEven = LenB(strTmp,3)

(゚Д゚)ハァ?
0540デフォルトの名無しさんNGNG
>>538
なんかものすごい勘違いが含まれてる気がするがw

  Debug.Print LenB(StrConv("A",vbFromUnicode))
  Debug.Print LenB(StrConv("あ",vbFromUnicode))

この違いを考えてみれ。
0541デフォルトの名無しさんNGNG
>>537
インターフェイスを用意するというのがよく分かりません。できれば
具体的に教えて頂けるとうれしいです。
0542デフォルトの名無しさんNGNG
>>538
やりたい事は
LenB(Right("あ1い", 1))
だけちゃうのん?
0543デフォルトの名無しさんNGNG
>>542
LenB(Right("あ1い2", 1))
0544538NGNG
>>539
>>540
>>542

激しくタイプミスでした

strTmp = "あ1い"
strTmp = StrConv(strTmp,vbFromUnicode)

strTmpEven = LeftB(strTmp,3)
strChar = Right(strTmpEven,1)

だった

0545デフォルトの名無しさんNGNG
>>544
あんた本当に >>540 見てる?
0546デフォルトの名無しさんNGNG
>>544 は仕様説明が十分でない
「二文字目」を取りたいなら "あ1い" -> "1", "abcde" -> "b"
strChar = Mid(strTmp,2,1)
「SJIS3バイト目」を取りたいなら "あ1い" -> "1", "abcde" -> "c"
strChar = StrConv(MidB(StrConv(strtmp, vbFromUnicode), 3, 1), vbUnicode)
0547デフォルトの名無しさんNGNG
>>546
あんた >>538 見てる?
0548デフォルトの名無しさんNGNG
海栗 <> 筋
0549デフォルトの名無しさんNGNG
>>548
あんたぬるぽ?
0550538NGNG
こういう問題なんだけど?

dim hoge as String

hoge = "aあ"
hoge = StrConv(hoge,vbFromUnicode)
debug.print LenB(Right(hoge,1))
'Sjisに変換した文字列より1文字取得する
'1文字なので"あ"を取得しLenBに渡す
'結果は2


hoge = "あa"
hoge = StrConv(hoge,vbFromUnicode)
debug.print LenB(Right(hoge,1))
'Sjisに変換した文字列より1文字取得する
'1文字なので"a"を取得しLenBに渡すのかと思ったら
'Rightは"a"を返さず2バイト返している
'結果は2

hoge = "a"
hoge = StrConv(hoge,vbFromUnicode)
debug.print LenB(Right(hoge,1))
'Sjisに変換した文字列より1文字取得する
'1文字しか無いからか"a"を取得しLenBに渡している
'結果は1

ていうことなんだけど
0551デフォルトの名無しさんNGNG
>>550
もしかして、Right が SJIS を考慮してくれると思ってるの?
Right は Unicode を想定してるから強制的に終端 2 byte を返すよ。
最後の例で 1 になってるのは、単にもともと Right にかける前の文字列長が
1 byte だから。
0552デフォルトの名無しさんNGNG
>>541
こんな感じ。

'----呼出元 Module1
Public TEST2B As String

Public Sub Main()
 Dim TEST3 As New Class2
 TEST2B = "ヅら"
 Set TEST3.C1 = New Class1
 TEST3.TEST
End Sub

Public Sub TEST1B()
 MsgBox "ふが!!"
End Sub

0553デフォルトの名無しさんNGNG

'----呼出元 Class1
Public Sub TEST1()
 Module1.TEST1B
End Sub
Public Property Get TEST2()
 TEST2 = Module1.TEST2B
End Property


'----呼出先 Class2
Public C1 As Object

Public Sub TEST()
 C1.TEST1
 MsgBox C1.TEST2
End Sub

普通は呼出元の値→呼出先のオブジェクトのプロパティに設定
呼出元のプロシージャ呼出→呼出先のイベントに反応とかする方が自然かな。
0554551NGNG
補足。

> 最後の例で 1 になってるのは、単にもともと Right にかける前の文字列長が
> 1 byte だから。

つまり、Len(Right("123", 5)) が 5 ではなく 3 になるのと同じ事。
0555550NGNG
>>551
あー文字コード変換しようが
Rightは1文字 = 2byteで処理するってことね

一度Unicodeに戻してからRightして
帰って来た値をsjisにしてLenBしたら出来たよ
サンクス
0556デフォルトの名無しさんNGNG
> 一度Unicodeに戻してからRightして

激しく意味ねー
>>540 はどうなったんだよ
0557デフォルトの名無しさんNGNG
ascとかじゃダメなんでしょかね
0558デフォルトの名無しさんNGNG
ニガサンヨ♪
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/
 (_フ彡        /  ←>>549
■ このスレッドは過去ログ倉庫に格納されています