A Day In The Life

とあるプログラマの備忘録

vb

.NETで四捨五入

Math.Roundメソッドを使うと四捨五入ができると思いきやできません。 .NETで四捨五入用のメソッドは今のところないようです(ていうかVB6の時からなかったような)。 Math.Roundメソッドはいったい何をしてくれているかというと近似値へのまるめを行ってくれま…

久々にVBA

vb

今日は久しぶりにExcelのマクロを作成しました。 とあるExcelシートから別のシートにセルの内容をコピーするプログラムで Private Const START_FROM As Integer = 4 Private Const START_TO As Integer = 3 Private Sub Start_Click() Dim copyTo As Workboo…

文字列の比較

Javaで文字列を比較するとき String moji = "aaa"; if(moji == "aaa") { 何らかの処理... } と書いてしまいます。 もろVBからの癖です。Javaでは"=="を使うとオブジェクトの同一性を比較するため思ったように比較できないんです。 文字列の比較をするとき…

再帰処理

開発をしていると再帰処理をする場面が必ず出てきます。 初めて作った再帰プログラムは、とある工場の稼動日計算。 カレンダーの平日休日をたどって稼働日を計算するのに使いました。 前のプロジェクトではフォームのコントロールに一括でプロパティをセット…

NullPointerExceptionと遭遇

最近、NullPointerExceptionによく出会います。 String型の変数でNullチェックを怠っているからです。 VB.NETの時は.ToStringをするだけで簡単に空文字に変わってくれたのに...。 いちいちif文でNullかどうか書くのはめんどくさい。 なんかいいやり方ない…

日付のフォーマット

日付のフォーマットを行うときは、String.Formatメソッドを使用します。 具体的にはString.Format("{0:yyyy/MM/dd}",日付)と記述します。 よく使う表記は以下の6つだと思います。 yyyy年(西暦4桁) MM月 dd日 HH時(24時間制) mm分 ss秒 注意点は大文字と小文…

OpenFileDialogで予期せぬエラー

同じソリューション内でファイル取得を相対パスで行うとOpenFileDialog,SaveFileDialogのShowDialogメソッドでエラーが発生します。 ファイル取得を相対パスで行うとその情報を保持してしまうようです。 ファイルの取得を絶対パスにするかApplication.Startu…

コンボボックスのTextChangedイベント

コンボボックスにDropDownStyleというプロパティがあります。 このプロパティをDropDownListにするとTextChangedイベントが発生しなくなります。 SelectedIndexChangedまたはSelectedValueChangedを使用しましょう。

データグリッドのキーイベントが発生しない

データグリッドでキーイベントが発生しないという現象が起こります。 データグリッドProcessCmdKeyメソッドをオーバーライドして入力キーを拾えるようにします。 Public Class ExDataGrid Inherits System.Windows.Forms.DataGrid Public Event KeyEvent(ByV…

久々にハマっちゃいました。

とある画面のTrueDBGridをクリックするとインデックスが範囲を超えています。負でない値で、コレクションのサイズよりも小さくなければなりません。 パラメータ:indexというエラーが出てしまいます。 クリックイベントを使用しているわけでもなくなぜか落ち…

結果は同じだけど...。

vb

僕も初心者のころよく書いたんですが、 If a = 0 Then Else Method1() End IF のようにIf文のElse以下にだけ処理を書いてしまうケースを頻繁に見ます。 本来なら If a <> 0 Then Method1() End IF このように書けば済みます。 プログラムは動けばいいってモ…

VB2005のフォーム

VB2005ではフォームをインスタンス化しなくて良いそうです。 VB6みたいになってやだなぁ...。 VB6の時、標準モジュールでコントロールに直接値を入れるソースを見たときはビビッたけど、 おんなじ様なことが起きそうで恐い。 ネタ元:じゃんぬさん http:/…

カスタムコントロール

最近、VB.NET(Windows Form)のカスタムコントロール作成をしています。 プロジェクト特有の規則・法則があったり、 使い勝手が悪いところはコントロールを積極的に直しています。 基本はTさんがいろいろとアイデアを出して作ってくれたのを修正しています。 …

データグリッドやめます

現在vb.netでデータグリッドを使っています。 お客様からの要望で列固定で表示してほしい項目があるとのことでした。 .NET Framework標準のデータグリッドで列固定の実装は実現不可能とのこと...。 というわけでグレープシティが発売しているTrueDBGridを…

DateTimePickerの背景色が変わらない

vb.netにDateTimePickerというコントロールがありますが、 なかなか使い勝手が悪いです。 空文字が入力できない。(必ず日付を指定しないといけない) 入力操作がいまいちやりにくい。 背景色が変更できない。 3番目は.NET Frameworkのバグです。 使い勝手のい…

MDI子フォームでEnterキーが拾えない。

MDI フォームにおいて、2つのMDI 子フォームを作成しました。 MDI子フォームAとBがありまして A画面にB画面を開くボタンが配置されています。 A画面からB画面を開きB画面を閉じてA画面に戻ります。 その後、A画面のテキストボックスでEnterキーを押すとなぜ…

コーディングルールを決めるなら

超図解VB.NETルールブックエクスメディアこのアイテムの詳細を見るVB.NETのコーディング規約が細かく紹介されています。 基本的な内容から、少し深い内容まで幅広く網羅されています。 内容がわかりやすいのと図解で丁寧に説明してあるのでかなりお薦めです…

If文での文字の比較

if文でテキストボックスの値を比較する時は気をつけましょう。 テキストボックスに入力されている数値の大小関係を判定する時 If txtSuji1.Text > txtSuji2.Text Then 処理1 end if と書くと間違った判定をしてしまう時があります。 txtSuji1に9、txtSuji2…