[表示 : 全て 最新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/

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

231 名前:デフォルトの名無しさん mailto:sage [2011/06/19(日) 19:22:02.49 ]
Select Case ucase(q$)
  Case "false","true": is_bool = True
  Case else: is_bool = IsNumeric(q$)
end select


232 名前:デフォルトの名無しさん mailto:sage [2011/06/19(日) 19:31:44.23 ]
あら、TrueやFalseは文字列にするとIsNumericに反応しなくなるのね。
じゃ多分>>231の人が言ってるUCaseのをLCaseにしたのがFAだわさ。

233 名前:デフォルトの名無しさん mailto:sage [2011/06/19(日) 19:58:20.77 ]
>>225
もうそろそろ引っ込んだら?
どう見ても哀れだよ、君。

234 名前:デフォルトの名無しさん mailto:sage [2011/06/19(日) 20:06:36.54 ]
またスレが伸びてるから言い争いしてると予想したが、裏切ってくれなかったか。
毎回同じ人が煽ってんのかな。

235 名前:デフォルトの名無しさん mailto:sage [2011/06/20(月) 00:52:07.32 ]
>>226,228
もしかしてVB6より前のVB?
>>208のコードをCommand1_Clickにいれて何度か押したけど
Rnd -1のある場合の10個の数字と、ない場合の10個の数字は違うけれど
Rnd -1のあるなし関わらずコマンド何度クリックしても同じ10個の数字しか出なかった(Randomizeで初期化されてる)けど

236 名前:デフォルトの名無しさん mailto:sage [2011/06/20(月) 09:21:33.52 ]
下記サイトを参考に任意の日付までのシリアル値の計算はできたのですが、
逆にシリアル値からyyyy/mm/dd hh:mm:ssというように変換するにはどのように
すればよいのでしょうか?

VB6を使用しています。
よろしくお願いします。

www.happy2-island.com/access/gogo03/capter01001.shtml
'----------------------------------------------------------------------
'任意の日時までのシリアル値を求める
'----------------------------------------------------------------------
Public Function getTimeB(pNow As Date) As Currency

Dim lngTime As Currency

'pNowまでの経過秒数を求める
lngTime = DateDiff("s" _
, "1970/1/1 9:0:0" _
, pNow)

'1/1000秒部分を求める
':元の値を1000倍する
lngTime = lngTime * 1000
':Timer関数で求めた1/1000秒部分を加える
lngTime = lngTime + Fix((CDbl(Timer) - Fix(CDbl(Timer))) * 1000)

getTimeB = lngTime

End Function

237 名前:デフォルトの名無しさん mailto:sage [2011/06/20(月) 19:58:50.60 ]
>>236
MSDNの説明ではDate型の実体はDoubleだとあるから、
ある意味Date型そのものが既にシリアル値であるといえる。

自前でシリアル値に変換する意味がわからない。

238 名前:デフォルトの名無しさん mailto:sage [2011/06/20(月) 22:25:52.66 ]
Debug.Print CDbl(Now)
Debug.Print CSng(Now)
Debug.Print CDec(Now)
Debug.Print CLng(Now)

Dim v
v = Now
Debug.Print v
Debug.Print CDec(v)

239 名前:デフォルトの名無しさん [2011/06/20(月) 23:33:02.67 ]
>>235
VB6だけど何で違うんだろ〜
Private Sub Command1_Click()
Dim i%
  Debug.Print "---"
  Randomize 123
  For i% = 1 To 3: Debug.Print Rnd: Next
End Sub
---
0.7545646
0.5271199
0.3011898
---
0.1030034
0.2489544
0.3967338
-Rndしないと毎回違うパターンがでる



240 名前:236 mailto:sage [2011/06/21(火) 01:31:17.21 ]
>>237
レスありがとうございます。
私がやりたいのはシリアル値に変換するのではなくて、
シリアル値からyyyy/mm/dd hh:mm:ssというように変換したいのです。

241 名前:デフォルトの名無しさん mailto:sage [2011/06/21(火) 02:22:59.69 ]
Win32APIとかでそういうの扱えるの無かったっけ?よく覚えてないけど

242 名前:デフォルトの名無しさん mailto:sage [2011/06/21(火) 02:24:20.96 ]
SystemTimeToFileTime
FileTimeToSystemTime
あたり?

243 名前:デフォルトの名無しさん mailto:sage [2011/06/21(火) 02:45:14.26 ]
>>236の逆変換をやるの?
dt = DataAdd("s", lngTime \ 1000, "1970/1/1 9:0:0")
これでいい?


244 名前:デフォルトの名無しさん mailto:sage [2011/06/21(火) 02:47:55.34 ]
>ngTime = lngTime + Fix((CDbl(Timer) - Fix(CDbl(Timer))) * 1000)

これTimer2回呼び出してるけど問題ないの?

245 名前:デフォルトの名無しさん mailto:sage [2011/06/21(火) 02:57:11.65 ]
>>239
もう一度やってみたら貴公の言うとおり再現した
でも>>235のレスしたときは>>235のとおりだった。>>235のレスしたときコメントアウトし忘れてたのかもしれない
疑ってすまなかった

246 名前:デフォルトの名無しさん mailto:sage [2011/06/21(火) 03:00:03.19 ]
あれ、でもコメントアウトの問題なら表示される数字はどちらの試行でも同じはずなのに違ってたな。なんでだろう


247 名前:デフォルトの名無しさん mailto:sage [2011/06/21(火) 03:04:06.73 ]
あ、原因判明したかも。コメントアウトの問題じゃなくてイミディエイトのカーソル位置の問題だ。おそらく。
カーソルが一番下じゃなく一回分の試行の手前あたりにあったんだなきっと

248 名前:デフォルトの名無しさん mailto:sage [2011/06/21(火) 11:47:09.85 ]
あれはカーソル位置から書き始めるから困る

249 名前:236 mailto:sage [2011/06/21(火) 14:45:46.70 ]
>>243
ありがとうございました。
教えていただいた通り以下の通りで出来ました。
DataAddという物があったのですねー。
236で書いたのは、シリアル値から日付へ変換する方法を
探している際に見つけて、これの逆をやればできるかなと
思ったんですが、差分の部分でつまづいていました。
本当にどうもありがとうございました!

'---------------------------------
'シリアル値から日付へ
'---------------------------------
Function STD(SR As Double)


Dim lngTime As Double
lngTime = SR

Dim DT As Variant
DT = DateAdd("s", (lngTime / 1000), "1970/1/1 9:0:0")

STD = DT


End Function



250 名前:デフォルトの名無しさん mailto:sage [2011/06/21(火) 16:13:03.13 ]
>>244
最初のTimerの呼び出し時に 1234.999秒ですぐ次の呼び出しで1235.000になっていた場合、さてどうなるかな?

251 名前:デフォルトの名無しさん mailto:sage [2011/06/21(火) 16:15:41.80 ]
その理屈ならミリ秒取得前に引数で日付取得じゃ秒のズレが起きたりしないの?
t1 = Timer
n = Now
t2 = Timer
とかして挟んでt1とt2からミリ秒取得したほうが

252 名前:デフォルトの名無しさん mailto:sage [2011/06/21(火) 19:15:05.59 ]
だからData自体が最初からシリアル値になってるのにどこに自前で変換かます必用があるのかと...
頭悪いのかな

253 名前:デフォルトの名無しさん [2011/06/22(水) 00:28:38.30 ]
頭悪いのかな
だって
一言多いのねこの人
コンプレックスを抱えてる人間のようです
だから誰かを貶さないといられないのです
自分だって無知な頃があったはずなのに
いや、今も無知だから心が狭くなっているのでしょうか
もっと精進すべきです

254 名前:デフォルトの名無しさん mailto:sage [2011/06/22(水) 00:45:52.70 ]
Dataの中身のDouble値そのままじゃ他の言語と互換性無いからじゃね
小数点以下が時間とかどうなの?

255 名前:デフォルトの名無しさん mailto:sage [2011/06/22(水) 01:13:50.55 ]
質問です。

JP1(日立の運用ツール)からVBSを起動し、
VBSからExcelマクロを起動しようとしています。

つい最近、WinServer2003からWinServer2008のサーバーへと
環境が移ったのですが、移行後にJP1からVBSを起動したところ、
"Workbooks クラスの Open プロパティを取得できません"
とエラーを吐きExcelマクロが起動できなくなりました。
似たような経験をお持ちの方がいましたら、
どうやって解決したかを教えてもらえないでしょうか。

256 名前:255 mailto:sage [2011/06/22(水) 01:16:18.70 ]
以下のソースコードの「ワークブックを開く」の箇所で
"Workbooks クラスの Open プロパティを取得できません"
とエラーになるようです。

<VBS ソースコード>

'Excel
Set objExcelApp = CreateObject("Excel.Application")

'ワークブックを開く
Set objExcelBook = objExcelApp.Workbooks.Open("C:\workspace\perl_test\test_vba.xls", , True)

'Excel側マクロ(main)を起動
objExcelApp.Run "'" & "test_vba.xls" & "'!main", 2

257 名前:255 mailto:sage [2011/06/22(水) 01:18:28.93 ]
<参考>
・手動実行なら問題なく起動します。
・旧環境、新環境ともにJP1がインストールされている
 サーバーにはExcelがインストールされていないが、
 実行先のサーバーにはExcelがインストールされている。

よろしくお願いします。

258 名前:249 mailto:sage [2011/06/22(水) 01:19:11.34 ]
>>252
わたしへのレスですか?
もしそうだとしたら、HelloWorld!卒業くらいのレベルなので、
おっしゃっている事がさっぱり分からないです。

私がやりたいのは、あるシリアル値があったとして、それが
何年何月何日なのか分からないため、それを日付にしたいんです。

もっとスマート?な方法があったら、ご教示いただければ幸いです。

259 名前:デフォルトの名無しさん mailto:sage [2011/06/22(水) 01:23:38.59 ]
>>257
適当だけど、実行元のサーバーにEXCELのランタイムは設定されてる?



260 名前:デフォルトの名無しさん mailto:sage [2011/06/22(水) 01:23:53.23 ]
なるほど、自分で>>239に書いた内容はもう忘れたわけですか。

261 名前:デフォルトの名無しさん mailto:sage [2011/06/22(水) 01:25:27.92 ]
いや>>239じゃなくて>>236

262 名前:255 mailto:sage [2011/06/22(水) 01:40:11.91 ]
>>259
確認しないとわからないですが、
ないかもしれません。
明日調べてみます。
ありがとうございます。

263 名前:249 mailto:sage [2011/06/22(水) 01:53:29.94 ]
>>260-261
失礼ですが、>>249の4-6行目をよく読んでみてください。
それで双方理解できないならば、いづれかもしくは双方の
理解力に問題があるということで。

ちなみに、>>258で書いたスマート?な方法はご存知ないですか。

264 名前:デフォルトの名無しさん mailto:sage [2011/06/22(水) 01:57:08.22 ]
"シリアル値"が分からない私も初心者

265 名前:デフォルトの名無しさん [2011/06/22(水) 02:47:12.69 ]
>>252
シリアル値の時刻を求める(DateDiff, Timer)
www.happy2-island.com/access/gogo03/capter01001.shtml
> JavaScriptのDate/getTimeと同じシリアル値の日時を求める方法です。





266 名前:デフォルトの名無しさん mailto:sage [2011/06/22(水) 13:49:31.56 ]
時刻のシリアル値ってふつー秒単位じゃないのか

267 名前:デフォルトの名無しさん mailto:sage [2011/06/22(水) 17:25:47.73 ]
なにいってんだこいつ

268 名前:デフォルトの名無しさん mailto:sage [2011/06/22(水) 21:38:11.18 ]
VBやエクセルなどのVBAではシリアル値とは整数部が1970/1/1からの日付で、小数部が時間を表すフォーマット
エクセルの普及からシリアル値といったらこっちになることが多い

269 名前:デフォルトの名無しさん [2011/06/22(水) 21:48:02.32 ]
>>256
プロジェクト→参照設定
でエクセルのライブラリ参照とかじゃない?



270 名前:デフォルトの名無しさん [2011/06/22(水) 22:04:33.32 ]
>>263
文字列に変換するなら
Debug.Print Format(DT, "yyyy/mm/dd(AAA)")

271 名前:デフォルトの名無しさん mailto:sage [2011/06/22(水) 22:38:20.41 ]
>>270
いや、俺も最初そう思ったけど、ある年月日から現在までの期間を"YYYY/MM/DD hh:mm:ss"のフォーマットで
何年、何ヶ月、何日の何時間、何分、何秒経ったかを表示したいって言ってるんじゃないの?

272 名前:デフォルトの名無しさん mailto:sage [2011/06/22(水) 22:57:14.49 ]
それ、「ある年月日から現在までの期間」が例えば 31日だったとして、
今日だったら、1ヵ月と表示するけど、同じ期間でも来月だったら、
1ヵ月と1日って表示するってこと?

うるう年まで考慮するなると、一発でちゃんとしたものができるか俺
には自信がない...。

273 名前:デフォルトの名無しさん mailto:sage [2011/06/22(水) 23:04:35.40 ]
>>255
>サーバーにはExcelがインストールされていないが、
>実行先のサーバーにはExcelがインストールされている。
これ、1行目はJP1の管理サーバーって事で良いんだよね?
Excelは実行先だけで良いはず。気になるのは、手動で動かした
ときは上手くいって、JP1から起動させるとダメだってとこだな。
思いつくのは、JP1からキックしたときの権限じゃないかな。
実行ユーザーを指定できるなら、手動で動かしたときと同じ
ユーザーで起動するようにしてみたらどうだろ。
後は、objExcelAppにちゃんとインスタンスが入ってるか(nullじゃないか)
と、FileSystemObjectで、Excelファイルが開けるか試してみて
CreateObject周りでおかしいのか、Excelオブジェクトの何かが
いけないのかを切り分けるかな。

274 名前:デフォルトの名無しさん [2011/06/22(水) 23:13:20.30 ]
ある時刻のt1 as dateがあって、そこから今までの時間なら
Dim sec&
sec& = DateDiff("s", t1, Now)
秒はこれで出るけど
月は30.5日くらいにしとく?って客先に聞かないと

んん?これって求めたいものはt1そのもの・・謎は深まるばかり・・

275 名前:デフォルトの名無しさん mailto:sage [2011/06/22(水) 23:50:29.54 ]
>>236のコードは>>265のサイトのコードのようだが

276 名前:263 mailto:sage [2011/06/22(水) 23:56:16.48 ]
>>270
レスありがとうございます。
エクセルで日付にしていましたが、Format関数?で出来るんですね。
わざわざありがとうございました。

>>271
説明が駄目駄目ですみません。
>>258にも書いたのですが、
このように説明すれば分かりやすいでしょうか。
例えば、Q.次のシリアル値は何年/何月/何日 何時:何分:何秒を表しているかを求めるコードを書け。
という事をお聞きしたかったのです。
日付のデータが記録されているファイルを操作するのに、その中身がシリアル値だったので、日付形式
に変換したかったのです。


ところで、>>252氏は私へのレスではなかったのでしょうか、アンカーもなくIDのないスレッドだったの
でよく分からなくて。
>だからData自体が最初からシリアル値になってるのにどこに自前で変換かます必用があるのかと...
>頭悪いのかな

277 名前:デフォルトの名無しさん mailto:sage [2011/06/22(水) 23:59:51.75 ]
>>236 はさ、
>>238を読んでんのかな。

1970/1/1 09:00:00を基準としたのが重要なの?
もしそこにこだわらなくて良いなら、
Dim dateVal As Date
Dim dblVal As Double

dateVal = Now()
dblVal = CDbl(dateVal)

Call MsgBox(dblVal)
Call MsgBox(CDate(dblVal))
これで、やりたい事はできんじゃねーの?
236がいうシリアル値ってのが、万国共通か規格があんのかな。
googleで上位に来るのは1900/01/01なんだけどな。

278 名前:デフォルトの名無しさん mailto:sage [2011/06/23(木) 00:07:06.39 ]
>>277
シリアル値の時刻を求める(DateDiff, Timer)
www.happy2-island.com/access/gogo03/capter01001.shtml
> JavaScriptのDate/getTimeと同じシリアル値の日時を求める方法です。


279 名前:デフォルトの名無しさん mailto:sage [2011/06/23(木) 00:08:31.18 ]
>>276
何か面倒臭そうな人なので一応レスしとくかな....

ひょっとして既に何らかの方式による既存のシリアル値のデータがあって、
それを日付に戻す方法が知りたかったのかも知れないけど、>>236からそれを読み取れって
そりゃ無理難題。

シリアル値っていったっていろんな方式があるんだから、>>236みたいに
日付⇒シリアル値はできたが逆はできないって書かれたら、要は2つの日時の大小比較とかスパンが
計算できる値なら何でもいいはずだと普通は思うんじゃないの?



280 名前:263 mailto:sage [2011/06/23(木) 00:24:33.93 ]
>>277
無知故にアンカーがないとレス内容だけでは、
私へ対してのレスか分からず>>238自体は見ましたが、
別の人へのレスだと思ってしまいました。
あと、最初に書いたサンプルサイトの値のUTCというのでしょうか、
その値を基準にしたかったのです。
今この書き込みを見るまで、1970年1月1日0時0分0秒がシリアル値
の基準で1つしかないものと思っていました。
(+9されているのは日本時間?をしているようでしたのでそのままに)

>>279
>>252氏でしょうか?
レスありがとうございます。
うまく説明できなくてすみません。
私としては、「任意の日時までのシリアル値」を求められれば、それは
逆を行えばシリアル値からyyyy/mm/dd hh:mm:ssと日時を求められると
単純に思ったのです。

サンプルサイトの例で下記のようにできたので、
2011/06/01 12:34:56 → 1306899296000
上に書いた通り、逆を行えば不明なシリアル値を下記のように日時に
できるものとばかり。
1308799500000(何日の値か不明) → 2011/6/23 12:25:00

続きます。

281 名前:249 mailto:sage [2011/06/23(木) 00:27:55.96 ]
変な流れにしてしまってすみませんでしたが、
>>243氏のレスで私にも理解でき、>>246の通りできましたので、
皆さんに再度お礼を言って質問を終了させていただきたいと思います。

本当にどうもありがとうございました!

282 名前:デフォルトの名無しさん mailto:sage [2011/06/23(木) 00:30:33.31 ]
度々すみません訂正です。

誤:>>246の通りできましたので、
正:>>249の通りできましたので、

失礼しました。
ありがとうございました。

283 名前:デフォルトの名無しさん mailto:sage [2011/06/23(木) 00:42:05.54 ]
lngTimeがLong型じゃないことのほうが気になっている俺がいる

284 名前:デフォルトの名無しさん mailto:sage [2011/06/23(木) 00:50:59.32 ]
VB6付属のMSDNライブラリのVBの項目の定数と変数の名前付け基準によるとプリフィックスには
Long型はlng
Currency型はcur
Double型はdbl
をつけた方が分かりやすいとある



285 名前:デフォルトの名無しさん mailto:sage [2011/06/23(木) 00:51:48.77 ]
Variant型はvnt
Date型はdtm

286 名前:デフォルトの名無しさん mailto:sage [2011/06/23(木) 07:08:53.68 ]
お前らさすがにレベル低すぎて開いた口が塞がらないぞ。

287 名前:デフォルトの名無しさん mailto:sage [2011/06/23(木) 08:09:18.92 ]
>>286のレベルの高いネタ振りに期待

288 名前:デフォルトの名無しさん mailto:sage [2011/06/23(木) 14:05:52.11 ]
>>236はさ、>>278のサイトの掲載されているコードを使ったの?



289 名前:デフォルトの名無しさん mailto:sage [2011/06/23(木) 14:14:49.65 ]
>>278のサイトのはVBAっぽいような気がするんだけど
プリフィックスが気持ち悪いな。Long型でもないのにlngを使うのはよくないと思う(誤解を招きかねない)
getTime関数でTimerを2回呼び出すのは時刻の正確さを欠く可能性があると思う
同様の理由でNowとTimerを併用するのも時刻の正確さを欠く可能性があると思う
getTimeB関数は任意の日時とあるのにTimerでミリ秒を補完するのはおかしいと思う
getTime関数はWin32APIのGetSystemTimeAsFileTime関数、getTimeB関数はWin32APIのSystemTimeToFileTime関数を使えばいいと思う




290 名前:デフォルトの名無しさん mailto:sage [2011/06/23(木) 20:34:10.83 ]
UTCの事を言っている人がいるのにそれには触れない件。
というか気付いていないんだろうな。
何にでも例外はあるがこのスレの連中はやっぱりほぼ・・・
続く。

291 名前:デフォルトの名無しさん mailto:sage [2011/06/23(木) 20:51:46.69 ]
UTCのことは>>278のサイトの冒頭に書いてあるが?

292 名前:デフォルトの名無しさん mailto:sage [2011/06/24(金) 12:15:28.11 ]
ここまで>>291の自演。

293 名前:デフォルトの名無しさん [2011/06/25(土) 06:08:22.32 ]
Form2.Show vbModal 'Form2をモーダルで呼ぶ

Form2にはボタンが複数あって、状況によってデフォルトのボタンを設定したい
Private Sub Form_Load()
  'Me.Show ' ← Modal時は実行できない
  Command1.SetFocus
End Sub

Form_Load中でSetFocusしようと思ったら、その前にMe.Showしないといけない
でもModalで呼ばれるからMe.Showはできない

★ ModalなForm2のCommand1をSetFocusする方法はありますか?

294 名前:デフォルトの名無しさん mailto:sage [2011/06/25(土) 13:32:36.53 ]
>>293
デザイン時にTabIndexの0をあえて欠番にしておいて、Loadイベントで
フォーム表示時に最初にフォーカスを設定したいコントロールのTabIndexを0にする。

VBを2年ぶりで触った俺でもすぐにできたぞ。

ところで、そういうのって「デフォルトのボタン」って言うのか....?

295 名前:デフォルトの名無しさん mailto:sage [2011/06/25(土) 13:44:37.84 ]
TabIndexなんか触りたくないと言いそうだから別解

'Form2
Private mShown As Boolean

Private Sub Form_Activate()
  If Not mShown Then
    OnShown
  End If
End Sub

Private Sub OnShown()
  mShown = True
  Command1.SetFocus
End Sub

296 名前:デフォルトの名無しさん [2011/06/25(土) 15:57:49.62 ]
>>294,295
なるほどActivateでしたか、ありがとうございました!
Modalなのでその1回だけ実行するというロジックは不要と思います
やるとしたらStatic変数が好きです
デフォルトのボタンと言ったのは、要は自作のメッセージボックスを作っていたので・・

297 名前:デフォルトの名無しさん mailto:sage [2011/06/25(土) 16:31:29.25 ]
デザイン時のコマンドボタンのプロパティでDefaultをTrueにすればいいんでないの?

298 名前:デフォルトの名無しさん [2011/06/25(土) 16:37:28.78 ]
申し訳ない
コマンドボタンにDefaultプロパティというのがあって、
これをTrueにすることでデフォルトボタンにできるという初歩的な見落としがありました
でもActivateは勉強になりました、Form_Loadの後に来るのはResizeかPaintかとか探してはいたのですが

299 名前:デフォルトの名無しさん mailto:sage [2011/06/25(土) 16:51:47.19 ]
Defaultプロパティの本来の使い方は、Enterキー入力を受け取るボタンを決めること。

これは>>293の言っていることと違うと思ったから、Defaultは知ってたけど紹介しなかったんだけど....



300 名前:デフォルトの名無しさん mailto:sage [2011/06/25(土) 16:58:50.28 ]
ActivateはそのModalなFormからさらにModalな別のFormを開きそこから戻ってきたときにも発生するよ
例えば下の例ならForm1からForm2を呼び出したときとForm3からForm2に戻ったときにActivateが呼び出されるよ

'Form1
Private Sub Command1_Click()
Form2.Show vbModal
End Sub

'Form2
Private Sub Command1_Click()
Form3.Show
End Sub

Private Sub Form_Activate()
Debug.Print "Activate", Now
End Sub

301 名前:デフォルトの名無しさん mailto:sage [2011/06/25(土) 17:00:08.84 ]
>Form2にはボタンが複数あって、状況によってデフォルトのボタンを設定したい

これから察するにプロパティのDefaultじゃちょっと違うよね?

302 名前:デフォルトの名無しさん mailto:sage [2011/06/25(土) 17:28:43.40 ]
Default設定したら状況によってとかいうのが出来ないよね

303 名前:デフォルトの名無しさん [2011/06/26(日) 02:23:41.63 ]
テストプログラム作ってForm_Load中でボタンのDefultプロパティを設定してみましたが
Form1ではボタン周りに黒枠が表示されてEnterキーが効くのに
Form2ではDefultプロパティの設定が無視される
ヘルプではフォーム毎にEnterを受け付けるボタンが設定できると書いてあるのに
どうもDefultプロパティの挙動がわからない・・
ボタンのキャプション周りのフォーカス枠表示も欲しいし、やはりSetFocusにします

304 名前:デフォルトの名無しさん mailto:sage [2011/06/26(日) 22:05:37.83 ]
Defaultってデザイン時だけじゃなくて実行時にも変更可能なのか
知らなかったわ

305 名前:デフォルトの名無しさん [2011/06/28(火) 21:39:38.66 ]
アプリの起動時に、ComboBox1に商品の情報を追加したいのですが
「ニンジン」、「かぼちゃ」、「キャベツ」の3品を追加するにはどうすればいいか。
また、初期表示として「ニンジン」が表示されているようにするにはどうすればいいですか
教えていただきたいです。メソッドの部分はどう書けばいいのでしょうか。
Private Sub frmMain_Load(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles MyBase.Load




End Sub

306 名前:デフォルトの名無しさん mailto:sage [2011/06/28(火) 22:01:25.21 ]
>>305
vb.netみたいだから、次からはこちらへ
hibari.2ch.net/test/read.cgi/tech/1301828549/

'追加
Me.ComboBox1.Items.Add("ニンジン")
Me.ComboBox1.Items.Add("かぼちゃ")
Me.ComboBox1.Items.Add("キャベツ")

'初期表示
Me.ComboBox1.Text = "かぼちゃ"

307 名前:デフォルトの名無しさん mailto:sage [2011/06/28(火) 22:04:02.00 ]
すまん
ニンジンが初期表示だった!

Me.ComboBox1.Text = "ニンジン"

308 名前:デフォルトの名無しさん [2011/06/28(火) 22:38:14.08 ]
>>306-307
ありがとうございます。

309 名前:デフォルトの名無しさん [2011/06/30(木) 15:21:23.15 ]
For i%=1 to 4: Combo1.AddItem Choose(i%, "ニンジン","かぼちゃ","キャベツ","たまねぎ"): Next



310 名前:デフォルトの名無しさん [2011/06/30(木) 15:28:29.93 ]
Dim t$,buf$(),i%
t$="ニンジン,かぼちゃ,キャベツ,たまねぎ,セロリ,パセリ,ピーマン,ごぼう"
buf$=Split(t$,",")
for i%=0 to Ubound(buf$):Combo1.AddItem buf$(i%):next

311 名前:デフォルトの名無しさん mailto:sage [2011/06/30(木) 15:45:18.92 ]
ひさびさに AS の無い宣言を見たw

312 名前:デフォルトの名無しさん [2011/06/30(木) 17:18:31.01 ]
%とか&とか$とか#とか昔のBASICみたいで嫌う人がいるけど
これはコード中で型が判るから絶対に有効だよ
変数名にいちいちstrnameとかlongpointとか入れる人もいるけど実に可読性が悪くて腹立つ

313 名前:デフォルトの名無しさん mailto:sage [2011/06/30(木) 17:30:20.52 ]
strnameとname$のどっちが可読性が上かは
読む人の慣れとかクセとかでどっちが上とは言えないと思うが

世の中にはstrnameとかいう名前の数値型の変数を定義するような奴がいたりするからなぁ

314 名前:デフォルトの名無しさん mailto:sage [2011/06/30(木) 18:41:31.75 ]
型のある変数を使わなければ解決だな
毎回長文コーディングになるけど
objectとかは知らん

315 名前:デフォルトの名無しさん mailto:sage [2011/06/30(木) 19:44:59.73 ]
10年遅れのハンガリアン
っていうか、>>310のようなマクロてんこ盛りのアセンブラみたいなコード読みたくないw

316 名前:デフォルトの名無しさん mailto:sage [2011/06/30(木) 23:35:59.77 ]
記号打つときシフトキー押すのしんどい
Dim以外では変数名を途中入力で補完できりゃいいのに

317 名前:デフォルトの名無しさん mailto:sage [2011/06/30(木) 23:54:24.40 ]
あずにゃ・・・じゃなくて、As 〜で型によって色が変われば分かりやすくね?
つか、変えられなかったっけ?
おれは、dblExsample lngExsample intExsample strExsample とか先頭みるだけで
すぐわかるけどなー。
%とか&とか$とか#とか初めて知ったw
低レベルでさーせん。

318 名前:デフォルトの名無しさん mailto:sage [2011/07/01(金) 00:15:45.44 ]
俺は$が文字型ってくらいしか知らないな。ポケコン世代だけど

319 名前:デフォルトの名無しさん mailto:sage [2011/07/01(金) 14:08:40.58 ]
その手の記号もAsと同じだから宣言時だけつけてりゃ使えたような気がする
Dim name$, unko&(10)
name = "namae"
unko(5) = 1000

って





320 名前:デフォルトの名無しさん mailto:sage [2011/07/01(金) 14:10:25.36 ]
>>317
>>265のサイト見てみ。lngというプリフィックスが

321 名前:デフォルトの名無しさん mailto:sage [2011/07/01(金) 14:20:08.06 ]
format$
とかで明示的にStringだってのも懐かしい話だな・・
MSDNもVariantのString みたいな言い回しがめんどくさかったなぁ

322 名前:デフォルトの名無しさん [2011/07/01(金) 19:47:55.35 ]
割り算で結果がどうもおかしいと思ったらIntegerで受けてたとか良くあるじゃん
wari! = a% / b%
ならそんな間違いは起こらないし、なんでこれが流行らなかったのか不思議

323 名前:デフォルトの名無しさん mailto:sage [2011/07/01(金) 19:55:21.14 ]
そんな間違いあんただけだってw

324 名前:デフォルトの名無しさん mailto:sage [2011/07/01(金) 21:01:31.55 ]
&とか%とかそういので型変換もできたらいいなと思う

325 名前:デフォルトの名無しさん mailto:sage [2011/07/01(金) 21:50:12.69 ]
VB6.XまたはSP7に期待ですね
そんなもの出ないけど

326 名前:デフォルトの名無しさん [2011/07/04(月) 18:41:27.30 ]
時々、Lineメソッドで間違ってないのにパラメータがどうこうってエラーが出る?
プロジェクトを一旦閉じてから開き直すと直るけど

327 名前:デフォルトの名無しさん mailto:sage [2011/07/04(月) 20:27:45.01 ]
>>326
エラーが出るのならば、どこかしらが「間違ってる」と思った方がいいよ。

詳細が分からないから勘だけど、どっかでメモリリーク起こしてるんじゃないかな。


328 名前:デフォルトの名無しさん mailto:sage [2011/07/04(月) 20:30:15.50 ]
馬鹿っぽい質問に馬鹿っぽい回答だな....

329 名前:デフォルトの名無しさん mailto:sage [2011/07/04(月) 20:38:46.74 ]
>>326
変数はもちろん Variant 型だよな!



330 名前:デフォルトの名無しさん mailto:sage [2011/07/04(月) 21:19:46.26 ]
>>326
>使用しているOS、VBのバージョン、サービスパックのバージョン

331 名前:327 mailto:sage [2011/07/04(月) 22:59:04.79 ]
馬鹿っぽくて悪かったな。






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

前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