--.--.--

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

2009.12.22

第351夜

vbのお勉強1日目・・・。

年明けからまた違う仕事か・・・。

こんどはVBやVBSやbatらしい。
しかもお客さんから要件聞きながらやる必要もあるらしい。
さらに複数のお客さんがいるらしいからスケジューリングもしないといけないらしい。

ほいほい受けるとえらいことになる・・・らしい。

はぁ・・・やだやだw
知らない言語や環境で、どう見積だして受けてよいかどうかの判定しろっていうんだろうか?
特に今回は色々なツールを作成ということらしいので、単にvbを知っていればいいわけじゃない(知ってさえもないけど)。

サーバの起動ツールひとつにしても、そのサーバの起動オプションとかリモート接続とか色々???が多い。
時間もないし、なんでもかんでもは出来ないけど、vbの触りぐらい知ってないとまずい。
知ってても既にまずい予感がするけども(*´Д`*)

って笑える状況でもないので、こつこつとがんばろう。
しばらく自分用のメモが続きます(/ω\)

ちなみに半年ぐらい書いてなかったのは、今のプロジェクトが忙しかったからですYO
terasorunaやspringなどをやってました。
色々分からないことを調べたので今後のためにまとめたかったけど、そんな余裕はなさそうです。
この記事へのトラックバックURL
http://hexagram.blog41.fc2.com/tb.php/373-9a3da637
この記事へのトラックバック
この記事へのコメント
Q.型宣言を強制したい場合

A.Option Explicit Onを記述する。

ちなみにvbのバージョンは2008で勉強中です。
まだバージョンが不明なのですが、新しい方ではないかということでしたので。
Posted by hexagram at 2009.12.22 20:01 | 編集
Q.例外処理をしたい場合

A.Try構文 または On Error Resume NextやOn Error Gotoを記述する。

Try構文はjavaのと同じ感じかな。

On Error Resume Nextは記述以降の処理のエラーは無視される。
Errオブジェクトを参照して、エラーの有無を確認してエラー処理を行うようだ。
VBSにもあった気がするけど、あっちにはエラーを無視する境界を設定できた気がする。
VBでもそういうここまで無視するって設定ができるのかは不明。

On Error GoTo ErrorHandle名はエラー時にラベル?に飛ばしてエラー処理を行う感じかな。

Try

エラーになる行

Catch ex As Exception



End Try

On Error Resume Next

エラーになる行

If Err = 11 Then



Err.Clear
End If

On Error GoTo ErrorHandle

エラーになる行

ErrorHandle:


Posted by hexagram at 2009.12.22 22:11 | 編集
Q.日付型の変数を設定したい場合

A.#月/日/年#で設定する。

プログラムの内部では必ず#月/日/年#という形式で記述するらしい。
ちなみに年を4桁以外で入力しようとすると、自動的に保管された(04としたら2004など)。
Posted by hexagram at 2009.12.22 23:55 | 編集
Q.日付型を表示する場合

A.よく使う形式は下記になる。
yyyy 年を4桁 例:2004
yy 年を2桁 例:04
MM 月を2桁 例:06
M 月を1桁または2桁 例:6
dd 日を2桁 例:27
d 日を1桁または2桁 例:27
dddd 曜日 例:火曜日
ddd 曜日の短縮形 例:火
HH 24時間制の時間を2桁 例:20
H 24時間制の時間を1桁 例:20
hh 12時間制の時間を2桁 例:08
h 12時間制の時間を1桁または2桁 例:8
mm 分を2桁 例:05
m 分を1桁 例:5
ss 秒を2桁 例:46
s 秒を1桁 例:46

※ 大文字小文字は区別される。
※ 1文字のパターン文字は%を前につける。
※ 区切り文字の"/"た":"などは誤表示を避けるため"/"("/"の前にエンマークがあるんだけど、登録時に消されてしまう;)とする。

和暦について
西暦と違って手順が必要らしい。

例)
Dim Culture As Globalization.CultureInfo = New Globalization.CultureInfo("ja-JP", True)
Culture.DateTimeFormat.Calendar = New Globalization.JapaneseCalendar()

MsgBox(#6/27/2004#.ToString("ggyy年M月d日", Culture))

※ggは元号を表すパターン文字


日付や時刻の表示形式はWindowsの設定に大きく依存するらしい。
例えば"yyyy/MM/dd"とした場合でもWindowsの設定によってはyyyy年MM月dd日になるなど。

下記のように区切り文字の指定ではなく、区切り文字の設定までする必要があるかは不明だが、Windowsの設定に依存しない表示の指定はできるようなので、必要があれば別途調べる。
通常は個々で指定("/"のように)するだけで問題ないと思うけれど。

Dim myculture As System.Globalization.CultureInfo
myculture = Application.CurrentCulture.Clone()
myculture.DateTimeFormat.DateSeparator = "★"
Application.CurrentCulture = myculture

MsgBox(#6/27/2004#.ToString("yyyy/MM/dd"))

ちなみに設定を変えるといっても、Windowsの設定自体を変えるわけではなく、このプログラム内だけの話なので安心しましょう(*´Д`*)
Posted by hexagram at 2009.12.23 00:40 | 編集
Q.ヘルプを見たい場合

A.2008の無料ダウロード版のヘルプは簡易版らしいので、完全版と思われるヘルプ(MSDN)をダウンロードしてみる。

定期的に更新されているらしいけど、取り合えず現時点の最新版は下記のようだ。

ttp://www.microsoft.com/downloads/details.aspx?FamilyID=7bbe5eda-5062-4ebb-83c7-d3c5ff92a373&DisplayLang=ja

どうもisoファイルのようなので、DVDに焼いてから実行する必要がありそう?
今日は遅いからダウンロードのみにして、後日試してみよう。
isoをDVDに焼くツール、インストールしてたかな~。
Posted by hexagram at 2009.12.23 02:16 | 編集
Q.ifの分岐の注意は?

A.どの時点で評価を中止するかに違いがある。

AndAlso、OrElseは条件が真になるのが決定した時点で評価を止める。
AndとOrは最後まで評価を止めない。

よくある「null または 空文字の場合」でOrを使用すると、nullが来た場合も評価を止めないで空文字の判定をしようとして、たぶんエラーになる。
javaと同じように扱うならAndAlso、OrElseになるのかな?
Posted by hexagram at 2009.12.23 17:31 | 編集
Q.入力キーを制御したい場合は?

A.未調査

KeyPressイベントでe.KeyCharから入力文字が判定できるので、入力不可文字の場合はe.Handled = Trueにすればキーを受け付けない制御は可能。

ただマウスからの貼り付けや、[Shift] + [Insert]キーによる貼り付け、[Ctrl] + vによる貼り付けの制御は未調査。
Posted by hexagram at 2009.12.23 20:36 | 編集
管理者にだけ表示を許可する
 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。