トップページ⇒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。
0253デフォルトの名無しさんNGNG
すみません。めっちゃ素人の質問させてもらいます

ある文字列○○○の右から数個目のアルファベットを
アルファベットよって任意の数字をあたえる
プログラムってどうすればいいんですか?

例
○○○○○(単語)の右から3つ目のアルファベットが
A、b、c…1
d、e、f…2
その他…3
にしたい場合


本当お手数かけてすみません
0254デフォルトの名無しさんNGNG
str = "AbCdEf"
rightOne = Left(Right(str, 3), 1)

あとはてめえでやれ。

0255デフォルトの名無しさんNGNG
(・◇・)アヤヤー
0256デフォルトの名無しさんNGNG
>>253
素直にコードにするとこうなるわけだが

Select Case Mid$("ここに対象となる文字列", 3, 1)
Case "A", "b", "c"
hoge = 1
Case "d", "e", "f"
hoge = 2
Case Else
hoge = 3
End Select
0257253NGNG
>>254
>>256
何となくわかりました。
お手数かけてすみません

本当すぐおしえていただきありがとうございました
0258デフォルトの名無しさんNGNG
>>252
性器表現と同じお方のようだ
0259デフォルトの名無しさんNGNG
イベントの意味を優しく教えて下さい。
0260デフォルトの名無しさんNGNG
>>259
トイレでブツがぼっとんすればはねかえりがある、それがイベントだ
0261デフォルトの名無しさんNGNG
>>260
余計意味がわからなくなりそうなのですが・・・。
0262デフォルトの名無しさんNGNG
Form1 が ロード された
Form1 が 表示 された
Command1 が クリック された

こういうのがイベント
0263デフォルトの名無しさん NGNG
>>260
お前が「トイレでブツがぼっとん」しても
俺には「はねかえり」を感知できない。

よってそれはイベントではない。
0264デフォルトの名無しさんNGNG
>>261
オブジェクトでクライアントに有益な事象が発生したときに、クラスからクライアントへ通知する方法のこと
0265デフォルトの名無しさんNGNG
コンピュータに何かが起こればそれはすべてイベント
0266デフォルトの名無しさんNGNG
>>262がわかりやすい
0267デフォルトの名無しさんNGNG
>>265
アキュームレータがインクリメントされるのもイベントが?
0268デフォルトの名無しさんNGNG
サイモンとガーファンクルが来る、コンサートやる。これがイベント
0269265NGNG
>>267
VB限定のイベントという意味では、VBにとってはイベントでない、といえる。
0270デフォルトの名無しさんNGNG
壁がはがれた。色を塗りなおす。これがペイント。
0271253NGNG
質問君でごめんなさい
ある単語(例えば「opendata」)という言葉から
あるアルファベット(例えば「o、a」)の数の合計を数えるプログラムってどうすればいいんですか?

本当2回もすみません!!
0272デフォルトの名無しさんNGNG
イベントってイベントドリブンの略じゃねーの?
0273デフォルトの名無しさんNGNG
>>271
あなたの近くに何十人もわかる人がいるが、回答者は、自分以外の誰かが答えるだろうと思って自分では回答を見合わせている状態なのだ。
0274デフォルトの名無しさんNGNG
>>273
本当簡単な質問ですみません
独学でプログラム作り始めたんですけど
参考書のここまでのってなく詰まってしまって…
0275273NGNG
>>274
これは必ず答えが返ってくる質問だから、長い間待ってればだいじょぶ。
目的を達成する方法が何通りもありすぎてどれにしようかみんな迷っていると。
0276デフォルトの名無しさんNGNG
>>232

>FSOはノートンに実行許可を与えないと使えないぜ。
というのは、VB6.0で作った標準EXEの中で
FSO使うのもダメですか?
それともVBSの話でしょうか?
0277232NGNG
>>276
コンパイル後のexeファイルに関しては、
exeのバイナリパターンをノートンが危険だと感じたときだけ反応する。
vbsなんかだと
Dim FS
Set FS = CreateObject("Scripting.FileSystemObject")
FS.deletefile "aaa.txt"
これだけで警告画面が出ちゃうけど、
スクリプトでなくコンパイルしたファイルシステムオブジェクトならよっぽどのプログラム以外は反応しない。
何しろ頻繁に反応するのはノートンのオプションのスクリプト遮断機能だからコンパイルしたファイルは
DeleteFileメソッド程度では反応しない。
0278デフォルトの名無しさんNGNG
>>271
'Len関数をつかって単語の文字数を求める Len("opendata") = 8 この8を単語内の一文字ずつを比較するときのループプログラムで使う。
'o p e n d a t a
'のそれぞれの文字がoまたはaに一致するかどうかを比較する。
Dim i As Integer 'ループカウンタ
Dim n As Integer 'opendataに含まれているoとaの合計数
Dim S As String '一時的に文字を入れておく文字用変数
'Mid関数で一文字ずつ取り出していく。
'Mid("opendata",a,b)というのはopendataのa文字目からb文字取り出すという意味。
'だからMid("opendata",1,1)はopendataの1文字目から1文字だけ取り出すという意味で、1文字目から1文字目だけ取り出すとそれはoという文字になる。
'したがってS=Mid("opendata",1,1)となっているときは文字列変数Sにはoという文字が入っている。
'変数Sがoまたはaであるかどうかは
'If UCase(S)="o" or UCase(S)="a" then
'n=n+1
'End if
'のようにIF文を使って文字が同じかどうかを比較する。
'LCaseは大文字を小文字に変換する関数で、OpenDataというような大文字小文字が混じっている場合に対処する。
'大文字のAと小文字のaは違うものだからだ。
'大文字小文字の区別をつけたいときはLCace関数やUCase関数は使わないようにする。全角文字対処については省略。
For i = 1 To Len("opendata")
S = Mid("opendata", i, 1)
If LCase(S) = "o" Or LCase(S) = "a" Then
n = n + 1
End If
Next
Form1.Caption = n
'この方法のほかにInStr関数を使ったり正規表現を使ったりする方法がある。
0279276NGNG
>>277
返答どうもありがとうございます。
これで安心して寝れます。
(ちょうど最近仕事で、FSOを使ったプログラムを書いたので。)
0280277NGNG
>>279
詳細はノートン作成会社シマンテックに問い合わせないとなんともいえないけど体験的にはそんなかんじ。とにかくどういたしました。
0281105NGNG
>>188
Winsock.dllのAPIをコールする必要があるということですね。
それがわかっただけでも大収穫です。ありがとうございました。
0282278NGNG
>>271
281のプログラムは汎用性がないから、281のを多少なりとも改良すべし。
0283278 訂正NGNG
>>271
278のプログラムは汎用性がないから、278のを多少なりとも改良すべし。
0284デフォルトの名無しさんNGNG
すみません。初心者です。
VB6.0のData Reportですが自分のマシンでレポート込みのEXEを作成し
配布しようとした所別のマシン(VBはインストールされていません)で
「実行時エラー713
アプリケーション定義、またはオブジェクト定義のエラーです。」
と表示されたのですが、
Runtimeか何かをインストールしなくてはいけないのでしょうか。
すみませんが教えて頂けないでしょうか。
0285デフォルトの名無しさんNGNG
>>284
初心者は余計。
ちゃんとディストリビューションウィザードとか使ってセットアップした?
EXEだけ持っていっても、そりゃ動かんよ。
0286デフォルトの名無しさんNGNG
マウスを無効にすることってできますか?
EnableWindowってのだとキーボードもだめになっちまう
0287デフォルトの名無しさんNGNG
>>286
サブクラス化でマウス関係のメッセージを全部握りつぶす
0288286NGNG
>>287
やっぱそれしかないのか・・・
0289デフォルトの名無しさんNGNG
>>288
それでできると思ってたなら最初から手間を惜しまずに書きんさい。
無駄な解答しなくて済むから。
0290253NGNG
>>278
わかりやすく教えて下さってありがとうございました
これでなんとか出来そうです。

本当、わざわざ長文を書いてまで説明していただいて
感謝の2文字で一杯です。
0291デフォルトの名無しさんNGNG
>>286 で
スクリーンセーバアみたいにマウスポインタ消す。じゃだめかな
0292デフォルトの名無しさんNGNG
>286

マウスを抜け
0293278NGNG
>>290
了解。
0294294NGNG
>>292
了解。
0295284NGNG
>>285

ありがとうございます!試してみます。
0296デフォルトの名無しさんNGNG
FSOでショートカット作ろうとしたらノートン反応するよ。
0297デフォルトの名無しさんNGNG
ノートンはいい迷惑だなっと
0298デフォルトの名無しさんNGNG
VB6で、クラスのPublicプロシージャの引数に構造体を使おうとしたら、

「パブリックオブジェクトモジュールで定義されたパブリックユーザー定義型に限り、
クラスモジュール内のパブリックプロシージャの引数または戻り値、
またはパブリックユーザー定義型の要素として使用することができます。」と

エラーメッセージが出てしまいました。
今は標準モジュール内にPublicで構造体を定義しているのですが、
クラス内に定義しても

「プライベートオブジェクトモジュール内ではパブリックのユーザー定義型は
定義できません」

とエラーが出てしまいます。
クラスのPublicなプロシージャの引数に構造体を使うのは無理なのでしょうか?
0299デフォルトの名無しさんNGNG
>>298
標準モジュールのOption Explicitのすぐ下あたりに記述してみ
0300デフォルトの名無しさんNGNG
>>298
ActiveXのパブリッククラスに記述してみ
0301デフォルトの名無しさんNGNG
>298
Friendキーワードを調べよ。
0302298NGNG
>>299
今現在その状態でした。
「プライベートオブジェクトモジュール内ではパブリックのユーザー定義型は
定義できません」 のエラーが出てしまいます。

>>300
プロジェクトのタイプをActiveX EXE、クラスをPublicにして、
スタートモードを独立型にしたらエラーが出なくなりました。
ありがとうございました。
0303298NGNG
>>301
プロジェクトタイプを変更しないでもFriendキーワードでもうまくいきました。
ありがとうございます。
0304304NGNG
僕のVBは♂みたいですがみなさんのはどうですか?
0305デフォルトの名無しさんNGNG
XPユーザーならやってみる価値あり

1.適当なフォルダにあるEXEファイルを右クリック→[スタート]メニューにアイコンを追加を選択
2.先ほどのEXEファイルがあるフォルダ自身の名前を変更する
3.スタートメニューを開いて上記の手順で追加したリンクを右クリック→プロパティを選択
4.無効なリンクになっているので、[変更]ボタンを押す
5.該当ファイルの変更後の正しい場所を指定する
6.・・・なにぃ!!

 感想きぼんぬ

   ※ 一人でニヤニヤした後は設定を元に戻しておきましょう
0306デフォルトの名無しさんNGNG
>>305
試すのめんどくさい。
オチだけ教えて。
0307デフォルトの名無しさんNGNG
なんかアプリが起動するとかしないとか。
0308デフォルトの名無しさんNGNG
いまさらこういうコピペをにやけながら貼ってるヤシがいるかと思うと
頭が痛くなってくるな
0309デフォルトの名無しさんNGNG
VBscriptでテキストファイルの整形や保存などをしたいのですが、
できますでしょうか?
もしできるなら参考になりそうなHPを知ってたら教えていただけないでしょうか?
0310ひきプロNGNG
>309
http://www.roy.hi-ho.ne.jp/mutaguchi/wsh/refer/lesson15.htm
こういうのはどうでしょ
0311309NGNG
>>310
ありがとうございまーす。勉強してみます。
0312デフォルトの名無しさんNGNG
>>301
友達のいないオレにどうしろと?
0313デフォルトの名無しさんNGNG
標準モジュールからフォーム内のプロシジャーへユーザー定義型を渡すとエラーが出ました。
MSDNには
「フォーム モジュールで引数をユーザー定義型として渡す場合、引数を渡されるプロシージャはプライベートである必要があります。」
とかいてあります。
この場合皆さんどうされますか?
1.ユーザー定義型をパブリックにしてしまう。
2.標準モジュールから呼ぶのをあきらめて、ユーザー定義型をフォーム内でモジュールレベルOrローカルレベルで定義し、フォーム内からそのプロシジャーを呼び出す。
3.ほかに方法があるぞこら!教えてやるよしかたねぇなぁ

どれですか?
0314デフォルトの名無しさんNGNG
>>313
クラスを使う
0315デフォルトの名無しさんNGNG
>314

な・・・なるほど・・・・。
しかしユーザー定義型は何でこういう制限があるのだろうか・・・。
ユーザー定義型の使うところがなくなる・・・。
0316デフォルトの名無しさんNGNG
>313
ちょっと前にFriendって話が出てる訳なのだが。
0317デフォルトの名無しさんNGNG
>>315
COM絡みだと思う。ユーザー定義型は特殊な型だからね。
ちなみにクラスはすべてオブジェクト型
0318デフォルトの名無しさんNGNG
>316

いや、あれはクラスにユーザー定義型が渡せないっていってるんでしょ?
私がいってるのはフォームにユーザー定義型が渡せないといってる。
MSDNに書いてある制限だ。
MSDNには
「フォーム モジュールで引数をユーザー定義型として渡す場合、引数を渡されるプロシージャはプライベートである必要があります。」
って書いてるんだぞ?
フレンド使えるなんてどこに書いてる?「フォームは一種のクラスみたいなもんだ」見たいな中途な知識でいってるんじゃないのか?
ああ?ああ?ああ?

>317

それはCの構造体とも若干違うところがあるからということでしょうか・・・。
0319デフォルトの名無しさんNGNG
> 「フォームは一種のクラスみたいなもんだ」
極普通の知識じゃん。
0320デフォルトの名無しさんNGNG
>319

そこにフォーム内のプロシジャーにユーザー定義型を渡させないという知識がないから>316の発言になる
これが中途な知識からくる>316の発言ということだろ?
文章読解能力乏しいやつがいるな。
しったか君もいるしw
とんだ大恥かいちゃったなw
0321デフォルトの名無しさんNGNG
すいませんが、質問があります。
クリスタルレポート7を使ってレポート印刷しているのですが
mdb形式のODEC接続から、SQLServerのADO接続に変更
する際、できるだけクリスタルレポート自体はさわらずに
VBのソース内で変更する方法はあるのでしょうか?

今とりあえず
  CReport1.Connect = "DSN=" & DBNAME & ";UID=" & USER & ";PWD=" & PASS

で接続はできてるようなんですが、クエリの抽出結果のレコードセットなどは
当然ながら反映されていません。
Datasourceを使ってみましたが、うまくいきませんでした。

どうすれば変更できるでしょうか?
0322デフォルトの名無しさんNGNG
>>321
レポート側変えないと無理かと。
0323309NGNG
VBscriptってlistboxやcomboxは使えないのでしょうか?
0324デフォルトの名無しさんNGNG
>>323
コンボボックスはHTMLタグでつくり、コンボボックスの内容はVBScriptで出力できる。
0325309NGNG
>>324
わかりやした。ども。
0326デフォルトの名無しさんNGNG
>>305

ここにも貼ってるのか。
↓解決法
http://pc2.2ch.net/test/read.cgi/win/1043764586/l50
0327デフォルトの名無しさんNGNG
オーナーWindowに対してModalでないメッセージボックスって作れます?

一応、APIのMessageBoxA の第1引数(HWnd)をゼロにしたら、それっぽいように
見えるのですが、なんかインチキくさくて正しいコーディングとは思えないし、
常に最前面に表示させることができず、オーナーWindow(メモ帳です)をクリック
すると背後に隠れてしまいます。
0328デフォルトの名無しさんNGNG
>>327
補足です。イメージとしては、メモ帳の「検索」画面のような感じです。
要するに、常にオーナーWindowの前面に表示されるが、表示されている
間もオーナーの操作は可能・・・。
0329デフォルトの名無しさんNGNG
Shell で"mailto:Address?Subject=Title"を呼ぶと、「通常使うメールソフト」に
宛先と標題が記入済みの状態で起動できますが、本文にもテンプレートを初期値で
設定した状態で起動することは可能でしょうか?

特定のメーラ(OEとか)限定なら、SendMessageを駆使してできそうな気もするんです
が、「どのメールソフトでも」対応できる方法が可能かどうかわかりません。

ご存知の方、コメントください。
0330デフォルトの名無しさんNGNG
>>328
独自のフォームでいいの?
それなら、
  Form2.Show , Form1
みたいな感じでok。Form2は常にForm1より前面に表示されるはず。

MsgBoxでやる方法はシラネ。
MessageBoxのhWnd=NULLで問題無しならそれでいいんじゃない?
0331ひきプロNGNG
>329
http://www5e.biglobe.ne.jp/~access_r/hp/html/html_016.html
どうでしょか?OEならできそうな予感
0332デフォルトの名無しさんNGNG
>>331,329
OEならbodyでできるね。
でも、Shellでできたっけ? APIのShellExecuteじゃないと駄目じゃない?
0333ひきプロNGNG
>>332
うちの環境ではまずShell "mailto:Address?Subject=Title"が
呼び出せませんでした藁
329さん、どうやってるんだろうか。
0334デフォルトの名無しさんNGNG
2000/XPはしらないけど
Shell "start mailto:Address?Subject=Title"
で動いたかも
0335デフォルトの名無しさんNGNG
Shell "C:\temp.txt"
でファイルは開けるわけ?
0336デフォルトの名無しさんNGNG
みんな学校でVB勉強したの?
0337あNGNG
>336
半年前から仕事場で使い出した。
こっからどう話しが展開するの?
0338デフォルトの名無しさんNGNG
>335

ひらかない
0339316NGNG
>320
たしかにMSDNには
「フォーム モジュールで引数をユーザー定義型として渡す場合、引数を渡される
プロシージャはプライベートである必要があります。」
と書いてあるが、
「Friendであってはいけません」
と書いてはいない。

で、「フォームは一種のクラスみたいなもん」ではなく、明確にクラスだよ。
当然、Friendでプロシージャを定義することも出来る。
俺が中途半端な知識で物を言っているかどうか、試してみればすぐに分かるだろうに・・・
0340335NGNG
>>338
エクスプローラでファイルをクリックするみたいにはいかないんだのぅ。
0341329NGNG
>>330
コメントありがとうございます。
自アプリではなく、外部アプリ(メモ帳)をオーナーとするメッセージボックスを
出したいのです。(しかも、事情があって、VBではなく、AccessのVBAで)

>>331-332
ありがとうございます。後で調べてみます。(結果は後日・・・)

>>334
9x系ならそれで正解。
NT系ではStartコマンドが内部コマンドなので、
Shell(Environ("ComSpec") & " /C mailto:Address?Subject=Title", vbHide)
としないといけません。
0342329NGNG
>>331-332

ブラウザの A href ........ タグからは起動できるんですが、Shellからだと、
body以下を有効なコマンドとして認識しないようです。
(メールソフトは起動するが、本文が入らない)
でも、タグで実行できるなら、何か別の方法がありそう。

土日にでもゆっくり考えて見ます。
0343デフォルトの名無しさんNGNG
質問です。
テキストボックスにH2O等の化学記号の数字を小さくし入力、
表示させる事は可能でしょうか?
簡単に出来そうで難しいのですが・・・。
0344デフォルトの名無しさんNGNG
>>343
テキストボックスだと普通は無理
小さい文字を表示できるフォントを使うか
リッチテキストあたりをつかえ
0345デフォルトの名無しさんNGNG
>>344
ありがとうございます。
0346ひきプロNGNG
>>342
一回実験的にやってみたら、332さんのおっしゃる通り
ShellExecuteを使うとbody以下も認識しましたよ。(Win2000の時)
0347329NGNG
>>346
ありがとうございます。これで解決かな?
0348デフォルトの名無しさんNGNG
>339

    ||
    ||
  ∧||∧
  ( / ⌒ヽ 
   | |   | 
   ∪ / ノ
    | ||
    ∪∪
0349デフォルトの名無しさんNGNG
で、結局フレンドって何?
0350デフォルトの名無しさんNGNG
>>349
友達。
0351デフォルトの名無しさんNGNG
>>349

ここ↓を読めばわかるかも(w

ttp://www.hyuki.com/dp/cat_Memento.html
0352デフォルトの名無しさんNGNG
VBユーザにメメントパターン。


幼児にチェーンソーを持たせるような感覚だ。
■ このスレッドは過去ログ倉庫に格納されています