Muni Bus

パソコンの操作方法や設定方法を忘れないようにメモしています。ブログを一回引っ越ししているので、所々表示がかなり乱れています・・・

Visual Basic

【Visual Basic】実行中のプログラムのフルパス、プログラムが置かれているフォルダーを得る

System.Windows.Forms.Application.ExecutablePathとSystem.Windows.Forms.Application.StartupPathを使えばよい。 例として、C:\DEMO\program.exeというプログラムで実行した場合、以下のようになる。 Console.WriteLine(System.Windows.Forms.Application.…

【Visual Basic】正規表現による文字列の置換

System.Text.RegularExpressions名前空間のRegex.Replaceメソッドを使えばよい。 Dim st1, st2, st3 As Stringst1 = "ABCDEFGH.IJK"st2 = System.Text.RegularExpressions.Regex.Replace(st1, "\.IJK$", ".123")st3 = System.Text.RegularExpressions.Regex.…

【Visual Basic】自作のフォームを開こうとすると(○○.show())プログラムが強制終了する(型 'System.NullReferenceException' の初回例外が ○○.exe で発生しました)

自作をしたフォーム(○○.vb)をプログラムで開こうとすると(○○.show())、以下のようなエラーメッセージを表示してプログラムが強制終了することがある。以下はForm2.vbというフォームを作成しており、それを別のフォームから開こうとしたときの例。 Dim fo…

【Visual Basic】指定をした数の半角スペースを得る

Strings.Spaceメソッドを使えばよい。以下の例は、文字型変数stには、AとBの間に10個の半角スペースを挟んだ文字列が作成される。 Dim st As Stringst = "A" & Strings.Space(10) & "B" MSDNは以下のページを参照のこと。 http://msdn.microsoft.com/ja-jp/l…

【Visual Basic】日時の最大値、最小値、平均を得る

DateTime構造体は簡単に比較できる。また、平均の日付の計算にはDateTime.Ticksプロパティを使用すればよい。以下は、4つの日付から、最小の日付、最大の日付、これら日付群の平均に相当する日付の計算例。 Dim i As IntegerDim mydate(4), mindate, maxdate…

【Visual Basic】リストボックスの中の項目をプログラムで強制的に選択する

SetSelected()を使えばよい。以下は、ListBox1というリストボックスのリストの、一番上の項目を選択するときの例。項目番号は1ではなく0から始まることに注意。 Me.ListBox1.SetSelected(0, True) ' 1番上の項目を選択

【Visual Basic】ボタンを押したというイベントをプログラムで強制的に発生させる

PerformClick()を使えばよい。 Me.Button1.PerformClick() ' ボタンButton1をクリックしたのと同じイベントを発生させる

【Visual Basic】タブコントロールのタブをプログラムで切り替える

SelectedTabを使えばよい。これに切り替えたいタブページ(のName)を指定すればよい。 Me.TabControl1.SelectedTab = Me.TabPage2 ' タブをタブページTabPage2に切り替える

【Windows】エラーメッセージ「Component 'COMDLG32.OCX' or one of its dependencies not correctly registered: a file is missing or invalid」

このエラーメッセージはこちらと同じ。こちらを参照のこと。

【Windows】エラーメッセージ「コンポーネント'COMDLG32.OCX'、またはその依存関係のひとつが適切に登録されていません。ファイルが存在しないか、あるいは不正です。」

古いバージョンのVisual Basicで作成されたプログラムを起動したが、COMDLG32.OCXというファイルがインストールされていないとこのメッセージが出る。 バージョン6までのMicrosoft Visual Basic で作成されたプログラムは、動作させるのに別ファイルが必要な…

【Visual Basic】エラーメッセージ「非共有メンバーを参照するには、オブジェクト参照が必要です。」

メソッドを使用するときに、引数が足らないときなどにこのエラーメッセージが表示されることもある。メソッドの引数の数などをチェックする。

【Visual Basic 2010 Express】エラーメッセージ

エラーメッセージ 「プロジェクトを実行しようとしているときにエラーが発生しました:デバッグを開始できません。デバッグを行うアセンブリは、現在のシステムと互換性のないプラットフォームでビルドされました。」 【理由】 特定の環境でしか動作しないプ…

【Visual Basic】デザインで追加をしたタブコントロールの、タブの順番を変える

デザインで、ツールボックスからタブコントロール(Tab Control)を追加し、ページをいくつか追加した後に、そのタブページの並び(表示)の順番を替えたり、入れ替えたりしたいときがある。 デザインの画面でマウス操作により順番を変えることはできない。…

【Visual Basic】エラーメッセージ「COMException はハンドルされませんでした、HRESULT からの例外: 0x800A03EC」

Visual BasicのプログラムからExcelのファイル(xls、xlsx)内のセルの値を読み出すときに、このエラーメッセージが出るときがある。Cellsを使用して行と桁を指定してセル内の値を読み出すときに、行や桁の数値に自然数以外の値を与えると、このエラーメッセ…

【Visual Basic】プログラムからExcelのファイルの中身(セルの値など)を読み出す方法

以下が手順。なお、Visual Studio 2010 ProfessionalおよびVisual Basic 2010 Expressで確認している。 1.ソリューションエクススローラーでソリューションを右クリックして「プロパティ」を左クリック。 2.現れたタブのうち「参照」を選択。 3.インス…

【Visual Basic】整数型(Integer)の大きさ

Visual Basic 2008や2010における整数型(Integer)の大きさは32ビット(4バイト)。つまり、使用できる範囲が-2,147,483,648~2,147,483,647である符号付きの整数。 一方で、Microsoft Excelなどで使用できるVisual Basic for Applications(通称VBA)の整…

【Visual Basic】全角半角文字混在の文字列に空白を足して指定の長さ(バイト長)で出力する

文字列を出力する際に、Format関数を用いて表示する文字列長を調整することができるが、全角文字と半角文字が混在している文字列を扱う時には、うまくいなかい。現在のVisual Basicは文字を統合的に扱うことから、半角文字(1バイト文字、「A」など)と全角…

【Visual Basic】全角半角文字混在の文字列の長さをバイト長で得る

かつてのVisual Basic(特にVer.6以前)では、文字列は1バイト文字(「A」、「a」、「@」など)と2バイト文字(「あ」、「亜」、「%」など)を混在して扱っていたが、現在のVisual Basicは文字を統合的に扱うことから、例えば文字列の長さをlen関数で得ると…

【Visual Basic】開発の対象となる.NET(フレームワーク)を開発途中に変更する

ソリューション(プロジェクト)作成時に開発対象を指定する.NET(フレームワーク)を開発途中で変更するには、以下の手順を行うこと。2010で確認をしている。 1.メニューから、「プロジェクト(P)」→「XXXのプロパティ(P)...」(←XXXにはプロジェクト名が…

【Visual Basic】グラフィックスの描画(線、楕円、長方形など)を試そうとするが、全然描画されない

Visual Basicの入門書に従って、線や長方形などグラフィックスの描画のテストを行おうとして、全然描画されないことがある。 グラフィックスの描画には所定の手順があるため原因はいろいろ考えられるが、初歩的なミスとして、フォームがロードされたときに実…

【Visual Basic】Consoleクラスにより出力がされる出力ウィンドウを表示する、非表示にする、など操作する

Consoleクラスにより出力結果が表示される出力ウィンドウは、Ctrl+Alt+Oで現れる(CtrlキーとAltキーを押しながらアルファベットのO(オー)を押す)。既にウィンドウが表示されているときは、ウィンドウにフォーカスが移る。非表示にする場合は、ウィンドウ…

【Visual Basic】標準出力に出力する

Consoleクラスを使えばよい。出力結果は出力ウィンドウに出力される。 Console.WriteLine("標準出力に出力")

【Visual Basic】イミディエイトウィンドウを表示する、非表示にする、など操作する

Debugコマンドで出力する結果は、イミディエイトウィンドウに表示される。このウィンドウを簡単に表示させるためのショートカットキーがある。Ctrl+G(Ctrlキーを押しながらアルファベットのGを押す)を押せばよい。そうするとイミディエイトウィンドウが現…

【Visual Basic】エラーメッセージ「オブジェクト参照がオブジェクト インスタンスに設定されていません。」

理由はいろいろ考えられるが、ありがちな原因として、要素数を指定しない配列に値を代入すると、このメッセージが出る。 下記の例では表題のエラーメッセージが出るが、ReDimコマンドで要素数を指定し忘れているのが原因である。 Dim d() As Double ' ここは…

複数のプロジェクト(ソリューション)でソースファイルを共有する。

複数のプロジェクト(ソリューション)でソースファイル(*.vb)を共有して使いたいときは、そのファイルをリンクとして追加すればよい。 ソリューションエクスプローラー(通常、画面右端。表示されていなければ、Ctrl+Rを押す)で、プロジェクト名のところ…

宣言していないローカル変数を使えてしまう

Visual Basic 2010では、作成直後のプロジェクトで、宣言していないローカル変数が使えてしまう。例えば以下の例のようにfor文で繰り返しに使用する変数を事前にdim文で宣言しなくても使えてしまう。これはExplicitがOnになっていても、ローカル変数の推論機…

配列の要素数と、要素番号の開始番号と終了番号

Visual Basic 2010では、配列をたとえば以下のように宣言をする。 Dim d(3) as Double この場合、要素数は4個となる。これを変えることはできない。当然、lengthで要素数を得ようとすると、「4」が帰ってくる。 CやJavaの使用に慣れている場合、For構文など…