VB初心者のためのエラー解説と互換性についての質問

このQ&Aのポイント
  • VB初心者がエラーについて質問しています。特定のエラーが発生し、原因を知りたいとのことです。
  • また、VB2005とVB2010の互換性についても質問しています。リビルドすれば問題ないのか知りたいそうです。
  • さらに、VBのおすすめの書籍についても質問しています。初心者向けと、VBの知識を広げるための書籍を求めています。
回答を見る
  • ベストアンサー

VBの初心者で、仕事で必要になり、現在、勉強中です。

VBの初心者で、仕事で必要になり、現在、勉強中です。 VB2005で開発したシステムを、VB2010でリビルドして 実行してみたところ。 TypeInitializationException はハンドルされませんでした。 amest2.ModDeclare のタイプ初期化が例外をスローしました。 『 関連のあるソースは以下の通りです。 Option Strict On Option Explicit On Imports System.IO Module ModMain Sub Main() ' 起動カレントフルパスの取得 psFullPath = Application.StartupPath ←ここで発生。 End Sub ↓ End Module Option Strict On Option Explicit On Imports Microsoft.DirectX Module ModDeclare '共通領域宣言モジュール Public psFullPath As String = "" ' 起動端末のカレントフルパス End Module 』 のエラーがでて実行できませんでした。 このエラーは何が原因で発生するのでしょうか? また、VB2005とVB2010の互換性はどうなのでしょうか? リビルドすれば問題ないと思ったのですが? VBでお勧めの書籍があれば教えていただけませんか?  1)初心者向け   (初めてなので、まずは、初心者向けから)  2)VBのことなら何でも載っている   (何かわからないことがあった場合のために、辞典的に使用したい) よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Yorisin
  • ベストアンサー率54% (364/663)
回答No.1

このあたりが参考になるかも知れません。 http://msdn.microsoft.com/ja-jp/library/cc714070(v=VS.90).aspx http://msdn.microsoft.com/ja-jp/library/cc714070.aspx 参考書は目的にもよるので何とも言えませんが、 逆引き辞書は持っていると便利です。 僕は、その他はネットで調べて調整/修正でなんとか。

tatotu
質問者

お礼

ありがとうございます。 参考にさせていただきます。 簡単にはいきませんでした。

関連するQ&A

  • [VB6/VBA] Variant型配列リテラルの書き方

    http://oshiete1.goo.ne.jp/qa4043791.html の#1のURIに http://exceler.blog68.fc2.com/blog-entry-20.html Dim a() As Variant // As Variant追加。As Integerとかは無理っぽい a = [{32,5,0}] //これ というような表記があるのですが,msdn.comもしくはmicrosoft.comのどこかに,この書き方に関する解説はありますか? VB.NETで Option Explicit On Option Compare Binary Option Strict On Option Infer Off Module Program Sub Main() Dim a() As Integer a = new integer(){1,2,3} End Sub End Module というような書き方が出来るのは知っているのですが。

  • VB6.0 →VB2005 のアップグレードでエラー表示

    VB6.0の標準モジュールでは Private Type typset a As String b As String c As Integer End Type Public make() As typset と記述してエラーもなく正常なのですが、VB2005にアップグレードしたときに、 Option Strict Off Option Explicit On Module Module1 Private Structure typset Dim a As String Dim b As String Dim c As Integer End Structure Public make() As typset←▼エラー▼            End Module 【エラー内容】 'make' は、module 'Module1' をとおして型 'typset' を namespace 'WindowsApplication1' で公開することはできません。 structure部をPublicなどにしてもエラーは消えますが、参照先に影響が出てしまいます。 根本的な解決方法が分かりません。 教えていただけないでしょうか?

  • On Error Resume Nextを複数のプロシージャーで使うことは不可能ですか?

    Module1に ------------------------------------------- Option Compare Database Option Explicit Sub マクロ1() End Sub Sub マクロ2() End Sub ------------------------------------------- があるのですが ------------------------------------------- Option Compare Database Option Explicit Sub マクロ1() On Error Resume Next End Sub Sub マクロ2() On Error Resume Next End Sub ------------------------------------------- ではなく ------------------------------------------- On Error Resume Next Option Compare Database Option Explicit Sub マクロ1() End Sub Sub マクロ2() End Sub ------------------------------------------- これはできないのでしょうか? エラーになります。 dimもつけても駄目でした。 ひとつづつやっていくしかないのでしょうか?

  • VB.NETでDLL関数を呼び出すには

    VB.NETでDLLの関数を呼び出す時に、 NewではなくCreateObject()を使って呼び出すには、 どのように記述をすればよいのでしょうか。 具体的には、 ソリューション名 ClassLibrary1で ---------------------------------- Imports System.Windows.Forms Public Class Class1 Public Sub test() MessageBox.Show("テスト") End Sub End Class ---------------------------------- のコードをビルドしてClassLibrary1.dllを生成して、 ソリューション名 ConsoleApp1で ---------------------------------- Imports ClassLibrary1 Module Module1 Sub Main() Dim obj As Class1 obj = New Class1() 'obj = CreateObject("Class1") obj.test() End Sub End Module ---------------------------------- のコードをビルドして実行すると、 正しく実行できますが、 obj = New Class1() を obj = CreateObject("Class1") のようにすると図のようなエラーになります。 Newではなく、CreateObject()を使ってDLLを呼び出すには、 どのように記述をすればよいのでしょうか。 よろしくお願いします。 (Windows10)(Visual Studio 2022)

  • ウォッチ式について

     お世話になります。VB2005Expressです。  あるプロジェクトが、a.vb及びb.vbから構成されています。  a.vbの中身は、 Option Explicit On Option Strict Off Public Class a Public c As String End Class となっています。  これを、b.vb上で、 Module b Public Sub test() Dim t As String t = a.c End Sub End Module としているのですが、これはこれで期待通りの動作をしています。(cが"123"なら、tも"123"になる)  さて、デバッグのステップイン等を使う際に、test()中のコードを追いかけている時で、tの値を知りたい場合はウォッチ式に"t"を与えれば良いのですが、cの値を知りたい場合はウォッチ式に何を与えれば良いのでしょうか。  "c"だと、「名前cは宣言されていない」というエラーが出ます。  "a.c"だと、「非共有メンバを参照するには、オブジェクト参照が必要です」というエラーが出ます。

  • VB6.0 PowerPointの開閉

    VB6.0からPowerPointファイルの開閉を行っています。 問題なく動作するのですが、一点問題があります。 OPENの前に、別のPowerPointファイルが開いていた場合に、 QUITを実行すると、元々開いていたファイルも一緒に終了してしまうことです。 別のプロセスでPowerPointのアプリケーションを実行すれば、 解決できるのではないかと考えているのですが、 具体的にどのようにすればよいか分からず困っております。 大変恐縮ですが、アドバイスを頂ければ助かります。 環境:VB6.0(SP5) PowerPoint2002 ------------------------------------------------------------- Option Explicit Private WithEvents PPTApp As PowerPoint.Application '■パワポを開く Private Sub Command1_Click() Set PPTApp = New PowerPoint.Application PPTApp.Visible = True PPTApp.Presentations.Open (App.Path & "\test.ppt") End Sub '■パワポを閉じる Private Sub Command2_Click() PPTApp.Quit Set PPTApp = Nothing End Sub

  • VB.NETの正規表現をVBAで記述するには

    VB2010.NETのコードをExcel2010のVBAのコードに置き換える作業をしていますが、List1のようにVB.NETのコードには、Inports System.Text.RegularExpressions で.NET正規表現パッケージが使われて、この部分をVBAではどのように記述すればよいのでしょうか。 自分なりにList2のようにしてみましたが、Dim M As MatchのMatchの部分で「ユーザ定義型は定義されていません」というコンパイルエラーが発生します。 参照設定にはSystem.Text.RegularExpressionsが見当たりませんが何を指定すればよいのでしょうか。 Microsoft VBScript Regular Expressions 5.5のRegExpオブジェクトでは後読みができないので大変困っています。 よろしくお願いします。(Windows7) ---List1:VB.NET(正常)--------------- Option Explicit On Option Strict On Imports System.Text.RegularExpressions Module Module1  Sub Main()   Dim SampleText As String = "今日は西暦2014年6月20日です"   Dim M As Match = Regex.Match(SampleText, "(?<=西暦)\d+")   If Not M.Success Then    Console.WriteLine("no match")   Else    Dim MatchedText As String = M.Value    Dim MatchedFrom As Integer = M.Index    Dim MatchedLen As Integer = M.Length    MsgBox("matched [" & MatchedText & "]" & _        " from char#" & MatchedFrom.ToString() & _        " for " & MatchedLen.ToString() & " chars.")   End If  End Sub End Module ---List2:VBA(このコードではエラーになる)----- Option Explicit Sub test()  Dim SampleText As String  Dim M As Match  Dim R As New Regex  Dim MatchedText As String  Dim MatchedFrom As Integer  Dim MatchedLen As Integer  SampleText = "今日は西暦2014年6月20日です"  R = Regex("(?<=西暦)\d+")  M = R.Match(SampleText)  If Not M.Success Then   MsgBox ("no match")  Else   MatchedText = M.Value   MatchedFrom = M.Index   MatchedLen = M.Length   MsgBox("matched [" & MatchedText & "]" & _       " from char#" & MatchedFrom.ToString() & _       " for " & MatchedLen.ToString() & " chars.")  End If End Sub ------------------------------------------

  • VB初心者です。コードの書き方が分かりません。

    VB初心者です。 VBで(zのn乗)-(xのn乗+yのn乗)の計算が出来るようにしたいのですが、答えが必ず-1になってしまいます。 Option Explicit On Public Class Form1 Dim x As Long Dim y As Long Dim z As Long Dim n As Long Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Me.Close() End Sub Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged End Sub Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged End Sub Private Sub TextBox3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox3.TextChanged End Sub Private Sub TextBox4_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox4.TextChanged End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click TextBox5.Text = (z ^ n) - (x ^ n + y ^ n) End Sub End Class 正しいコードの書き方を教えて下さい。 また特定の答えのときにメッセージを表示したいのですが、どうすればいいですか?

  • VB.2005でXMLを読み込む時のパス設定

    Javaで作成されたXMLをVB.net2005で読み取る際にVBでのXMLへのパス指定に関する質問です。開発環境はVisualStadio2005です。 javaで「D\Sample.xml」(適当なフォルダーに)を吐き出し。 ***VB***↓ Imports System.Xml Module Module1 Sub Main(ByVal args() As String) 'XMLファイルの読取り Dim xmlRdr As New XmlTextReader(args(0).Trim()) xmlRdr.Read() Console.WriteLine("タグ名:" + xmlRdr.LocalName) Console.WriteLine("値:" + xmlRdr.ReadString()) xmlRdr.Close() EnD Sub End Module プロジェクトのプロパティページのデバッグでコマンドライン引数指定で「D\Sample.xml」を指定。 しかし、読み込まれるのは\objの\Releaseと\のDebug上のxmlを読み込んでしまいます。しかも自動バックアップ?の関係で上記コードに無い作動(上記だと読み込みだけだが、先に作ったXML作成モジュールを実行してしまう)でXMLを自動作成してしまいます。 好きな場所のファイル名を指定させる方法を教えて下さい。 普段はEclipse+Javaで開発を行っていてEclipseのパス設定感覚ではうまくいかないのですか?

  • VBで理解ができないところがあります

    初めまして、Y-Kobayashiです。 私はVisualBasicを勉強しているのですが、行き詰っております。 なぜかと言いますと、サンプルプログラムを打ち込んでも、そのままでは実行ができないからです。 使用している書籍は「かんたんVisual Basic(技術評論社)」というものです。 以下が、そのサンプルです。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー Module Module1 Private mName As String = "YOSHI" Sub Main() Dim SUJI As Integer = 3 If SUJI = 3 Then Console.WriteLine(mName) End If '-> Console.ReadLine() End Sub Sub DispMsg() Console.WriteLine("Hello {0}", mName) End Sub End Module ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー Sub Main()内のmNameは表示されるのですが、Sub DispMsg()内のものが表示されないのです。 一応、「'->」のある位置に「DispMsg()」と入れれば実行されるのですが、書籍にはそういった記載がありません。 どうすれば良いのでしょうか? 他にも、Subとはどういう意味なのか、Moduleとはどういう意味なのか、それらはどの様な働きをするのか等、最初から使う物にも関わらず記載がなされていないので、明確に認識ができない状態です。 SubはC言語でいうところの、関数の様なもの。 Moduleはそれらをまとめるグループ(?)もしくは関数の様なもの。 NameSpeaceはModuleをまとめるグループ(?)もしくは関数の様なもの。 という認識を持ちつつありますが、これで合っているのでしょうか? VBの参考書はこういった説明が省かれる傾向があるのでしょうか? 図書館で何冊か見ましたが、途中から出てくる単語の解説が無くなって行きます。 それらは大抵自動で入力されるのですが、意味が分からないと気持ち悪いです。 おすすめの参考書があれば教えてください。 よろしくお願いします。 乱文失礼しました。

専門家に質問してみよう