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

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

209 名前:デフォルトの名無しさん mailto:sage [2011/06/19(日) 09:25:09.86 ]
VB6SP6で、ある文字列値がCBoolで変換できる値か否かを調べる関数とかって無いの?

"0"、"1"、"false"とかならTrueを返し
""、"a"、"t"とかならFalseを返すみたいな

今はOn Error Resume NextでCBoolに掛けちゃってるけど、もっと良い方法ある?

210 名前:デフォルトの名無しさん mailto:sage [2011/06/19(日) 12:11:39.83 ]
俺様しか使わないような機能が実装されるはずだとかかもしれんとか思うのは軽い病気だと思う。
っていうか、関数の一覧見れば分かるだろ。
VBってもう死亡宣告されて10年経過してる言語だぞ

211 名前:デフォルトの名無しさん mailto:sage [2011/06/19(日) 12:39:11.53 ]
ないなら作ればいいじゃない

212 名前:デフォルトの名無しさん mailto:sage [2011/06/19(日) 12:59:22.41 ]
>>210
>>209 の書き込みから、「実装されるはずだとかかもしれんとか思う」と
読み取れちゃうのはちょっと重い病気だと思う。

適切な病院に行くか、小学校からやり直すべき。

>>209
なんでそんなことする必要があるのか気になるが、「CBool() で変換でき
ること」が絶対条件なら On Error にするしかないと思う。

213 名前:デフォルトの名無しさん mailto:sage [2011/06/19(日) 13:25:14.89 ]
>212
馬鹿だろお前。

214 名前:デフォルトの名無しさん mailto:sage [2011/06/19(日) 13:43:07.32 ]
>>212 の書き込みに対して「馬鹿」としか言えない >>213
ちょっとかわいそうだ。

早い目に、小学校からやり直せよ。(w

215 名前:デフォルトの名無しさん mailto:sage [2011/06/19(日) 13:46:09.83 ]
(お前が)言われなきゃ分からない、の間違いじゃないのかしら。

逆に聞くが、存在するはずが無いと思ってる機能が存在するかどうか人に聞く馬鹿がいるのか。
あるはずとかあるかもしれないと思ってるから聞くんだろうが。

本当馬鹿だろお前。

216 名前:デフォルトの名無しさん mailto:sage [2011/06/19(日) 14:08:32.40 ]
>>215
ないと思ってても、だめ元で聞いてみる奴はいくらでもいるだろ。

小学校に行って、勉強はもとより友達と会話するところからやり直してこい。

217 名前:デフォルトの名無しさん mailto:sage [2011/06/19(日) 14:15:46.08 ]
[だめ元] ⊆ [あるかもしれない]
人に手取り足取り一から十まで全部説明されないと理解できないのは馬鹿の特徴か。



218 名前:デフォルトの名無しさん mailto:sage [2011/06/19(日) 14:28:58.25 ]
>>217
>> 存在するはずが (*無いと思って*) る機能が存在するかどうか人に聞く馬鹿がいるのか。
> ないと思ってても、だめ元で聞いてみる奴はいくらでもいるだろ。

自分の書いたことには責任を持ちましょう。(w

219 名前:デフォルトの名無しさん mailto:sage [2011/06/19(日) 14:33:26.21 ]
意味不明。
高校の数Iでやるような論理学が理解できないのも馬鹿の特徴の一つだな

220 名前:デフォルトの名無しさん mailto:sage [2011/06/19(日) 16:06:27.63 ]
>>219
日本語が理解できてないクズよりましだけどな。

221 名前:デフォルトの名無しさん mailto:sage [2011/06/19(日) 16:46:23.41 ]
>俺様しか使わないような機能が実装されるはずだとかかもしれんとか思うのは軽い病気
非常に解りにくい日本語なのですが
実装されるはずだと思う、あるいは、実装されてるかもしれんと思う だと解釈しよう

俺が使いたい機能なんだから絶対に実装されてるはずだ、と思うのは病気かもしれんが
こんな機能があったらいいな、すでに実装されてないかな?と思うのは病気でもなんでもないと思うが


222 名前:デフォルトの名無しさん mailto:sage [2011/06/19(日) 16:55:44.86 ]
アスペルガーの人は病識がない。
自分を客観的に見られないという自覚が一切ない。

どう考えても一般性がない(そんな機能お前以外誰が必用とするんだってこと)
機能を、普通の人は「すでに実装されてないかな?」なんて思わないんだよ。
絶対に。

そう思うのは病気だから。
まあ病識がない人に自覚しろって言っても無理だろうけどねえ

223 名前:デフォルトの名無しさん mailto:sage [2011/06/19(日) 17:26:57.93 ]
>>222
>アスペルガーの人は病識がない。
>自分を客観的に見られないという自覚が一切ない。

自己紹介乙。

224 名前:デフォルトの名無しさん mailto:sage [2011/06/19(日) 17:46:17.47 ]
つか、>222は
ある変数がほかの型に変換可能かどうかチェックする機能
は一般性がないと思うのか


225 名前:デフォルトの名無しさん mailto:sage [2011/06/19(日) 18:01:11.11 ]
変数って何だよ。
それを言うなら"値"じゃないのか。

そもそも>>209のいうような機能の需要が一般的かどうかの話をしているのであって、
「ある変数がほかの型に変換可能かどうかチェックする機能」の話なんかしてない。

馬鹿じゃないのか。

226 名前:デフォルトの名無しさん [2011/06/19(日) 18:56:17.63 ]
>>208
やっぱり分かり難いでしょ
Randomizeのヘルプの文章なんだけど

×Number に同じ値を指定して Randomize ステートメントを使用しても、
 前の乱数系列を繰り返すことはできません。
○Number に同じ値を指定して Randomize ステートメントを使用しただけでは、
 前の乱数系列を繰り返すことはできません。

昔のBASIC知ってる人には何でRandomizeだけで乱数系列初期化してくれないの?と思ってしまう
ヘルプも分かり難いけどVBの仕様も変

227 名前:デフォルトの名無しさん mailto:sage [2011/06/19(日) 18:57:57.97 ]
あのね、二人とも。
そんなに喧嘩する程のものでは無いと思うんだ。
CBoolで変換出来るものを判定すればいいだけでしょ?
それってIsNumericでいいんじゃないかと思うんだ。
たしかCboolで変換出来るものって数値型で、0ならFalse、0以外ならTrueだったんじゃないかと思うんだけど。
もっとも、厳密にTrueやFalseを判定したいなら0か-1と言う条件を付け加えることになるけど、
今回はそうじゃなさそうだし。
違ってたらごめんね。

みんな仲良くやるわさ。



228 名前:デフォルトの名無しさん [2011/06/19(日) 19:00:55.40 ]
>>208
あ、毎回同じ乱数を発生させたい場合ね
例えばプロシージャ中で3回乱数を使ったとして
そのプロシージャを何回実行させても、いつも同じ乱数値を使いたい場合

229 名前:デフォルトの名無しさん [2011/06/19(日) 19:09:41.30 ]
>>209
Option Compare Text
private function is_bool(byval q$) as boolean
Select Case q$
  Case "1","0","false","true": is_bool = True
  Case else: is_bool = False
end select
end function

230 名前:デフォルトの名無しさん [2011/06/19(日) 19:12:16.34 ]
Select Case q$
  Case "1","0","false","true": is_bool = True
end select


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






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

前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