• ベストアンサー

VisualBasic 2005 にてプログラミングの学習をしています

VisualBasic 2005 にてプログラミングの学習をしています。 以下のようなコードを見かけたのですが、いったいどんな値が代入されるのか 分かりませんでした。自宅に環境が動作させる無いので、どなたか分かる方が いらっしゃればと思い、質問させて頂きます。 <抜粋> Dim hensu1 As Long Dim hensu2 As Long hensu1 = &H40S hensu2 = &H1S

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

  • ベストアンサー
回答No.1

「&H」は16進数のリテラルを、「S」はShort型のリテラルを示しています。 したがって、 &H40SはShort型の16進数で40(10進数で64)の定数値、 &H1SはShort型の16進数で1(10進数でも1)の定数値、 を表しています。 質問のコードではどちらもLong型の変数に代入されているので型変換が生じます。 (わざわざ「S」を付けてる意味がありません。むしろ「L」を付けるべきです)

関連するQ&A

  • VisualBasic 2005 にてプログラミングの学習を行っている

    VisualBasic 2005 にてプログラミングの学習を行っているのですが、 疑問があるので質問させて頂きました。 以下のようなコードで 1 Dim aa As Integer 2 Dim lFlg As Long 3 aa = &H80I 4 Label1.Text = aa.ToString 5 lFlg = aa And &HFFFFFFFFL 6 Label2.Text = aa.ToString 5行目の「And &HFFFFFFFFL」にて論理積を求めているかと思うのですが、 何故このような処理が必要であるかが、分かりません。 仮に「And &HFFFFFFFFL」の記述が無くても変数「lFlg」には128が入って いました。 理由が分かる方がいらっしゃれば教えてもらえると助かります。 以上です。

  • VisualBasic 2005 にてプログラミングの学習をしていて、

    VisualBasic 2005 にてプログラミングの学習をしていて、疑問に思った点がありましたので質問させて頂きました。 Form1とForm2を作成しています。 その時にForm2を非表示で起動したいと考えた(Form2_Loadイベントを実行したい)のですが、 Form2を非表示で起動させる事が出来ません。 <Form1側 Button1_Click> 'モーダル表示 Dim frm2 As New Form2 frm2.ShowDialog() <Form2_Load> '非表示 Me.Visible = False 上記コードだと、Form2が表示されてしまいます。 これを非表示でLoadイベントを実行させる方法をご存知の方がいらっしゃれば教えて頂きたい と思います。 初歩的な質問で申し訳ないのですが、よろしくお願いいたします。

  • Access-VBAのPublic変数について =基本的な事です=

    フォームAのテキストボックスに入力された値をフォームBで使用したいのですが、調べるとPublic変数に値を代入しておけばフォームAを閉じても値を保持できるとの事でした。 そこで、 (1) 標準モジュール(My_Moduleという名前)を作成しそこに1行Public Hensu as Long と定義しました。 (2) フォームAにボタンを作成し、そのクリックイベントに、 Hensu=Text1.Value というコードを記述しました。 (3) フォームBにボタンを作成し、そのクリックイベントに、 Text1.Value=Hensu というコードを記述しました。 フォームBのボタンをクリックすると、Text1に値が代入されるかと思いましたが、意に反しHensuの中身はNullでした。 どのようにすればフォームBで変数の値を取得することが出来るのでしょうか? ちなみにフォームAからPublic Hensuには値が代入されているようで、イミディトウインドウで?Hensuとするとちゃんと代入された値が表示されます。

  • ゲームプログラミングの学習について

    ゲームプログラミングの学習の進め方についての質問です。 最近ゲームプログラミングを始めたばかりで、現在サンプル付きのゲームプログラミングの本を見ながら、学習を進めています。 基本的な関数も覚え、サンプルとして付いていたミニゲームのコードを見ても、大体は理解できます。しかし、何も見ずにゼロからミニゲームをつくってみろと言われれば無理。という状態です。 そこで質問なのですが、 ・自力で全部作成できるまで繰り返し学習するべきでしょうか。 それとも ・こういう動作をさせたいときは、こういうコードがあるということだけ覚えておき 知識の幅を広げていくことを重視すべきでしょうか。 (大まかな仕組みだけを理解しておき、細かい内容の記憶はパソコンにまかせる。という感じです) その他、お薦めの学習方法がありましたら、是非をよろしくお願いします。

  • 変数への数式の代入でオーバーフローします

    Dim lngDaySec as Long lngDaySec = 60 * 60 * 24 以上のコードでオーバーフローします。 しかし、2行目を以下のように書き換えると lngDaySec = Clng(60 * 60) * 24 正常に値が代入されます。 Long型の値の範囲は「-2,147,483,648 ~ 2,147,483,647」 となっており、「60×60×24」は「86,400」だから 範囲を逸脱しているとは思えません。 どうしてオーバーフローするのでしょうか? そして、Clng関数で回避できるのはなぜなんでしょう? ひょっとしたらアホな質問をしているのかもしれませんが、 どなたかご回答いただければありがたいです。

  • VisualBasic2010 関数の呼び出し

    VisualBasic2010を利用してシステム開発を行っているのですが、 特定の条件に従いFUNCTIONを呼び出したいと考えております。 呼び出すFUNCTIONが多数存在するため、FUNCTION名を変数で 保持しておき、呼出し時にその変数を利用して呼び出せないかと 思案しております。  ★呼出し側 Dim wk as integer   wk = TEST_A()   wk = TEST_B()  ※上記の「TEST_A()」「TEST_B()」を変数を利用して   wk = HENSU()のように呼び出せないかと考えております。 Private Function TEST_A() As Integer Return 0 End Function Private Function TEST_B() As Integer Return 1 End Function 分る方がいらっしゃいましたらご教授頂けますと幸いです。

  • 定義した関数がフォームで使用できません。

    Visual Basic初心者です。 VB6.0を使用しています。 標準モジュールで関数を定義したのですが、フォームでその関数を使用することができません。 標準モジュールで定義した関数をフォーム上で使用するには、どのような点を変更すればよろしいでしょうか。 フォーム上コード抜粋 Sub test() Dim stats As Long Dim vi As Long stats = viVPrintf(vi, "*RST" + Chr$(10), 0) End Sub 標準モジュール上コード抜粋 Global Const VI_SPEC_VERSION = &H400000 Declare Function viVPrintf Lib "VISA32.DLL" Alias "#270" (ByVal vi As Long, ByVal writeFmt As String, params As Any) As Long

  • COMプログラミング教えてください。

    //COMプログラミングVC->VB6.0 Visual C++で、 main.cpp , NumberClass.h , NumberClass.cpp , NumberIDL.idl ファイルを以下のコードで作成し、 実行しましたら、正常にコンソールアプリケーションが動作しました。 次に、 VisualBasic6.0から参照設定で、Number.tlbというタイプライブラリを読み込ませて実行させたところ、「Functionまたは変数が必要です。」とエラーが表示されました。 どうすれば解決できますか?よろしくお願いします。 VB6.0のコード Private Sub Command1_Click() Dim a As NumberLibrary.NumberClass Dim b As Long b = a.Add(15, 35) End Sub //main.cpp #include<stdio.h> #include<string.h> #include"NumberClass.h" int main() { NumberClass Number; printf("%d",Number.Add(10,90)); getchar(); return 0; } //NumberClass.h class NumberClass { private: int num; public: int Add(int a,int b); void Save(int a); void Load(int *a); }; //NumberClass.cpp #include"NumberClass.h" int NumberClass::Add(int a,int b) { return a+b; } void NumberClass::Save(int a) { num=a; return; } void NumberClass::Load(int *a) { *a=num; return; } //NumberIDL.idl import "oaidl.idl"; import "ocidl.idl"; [uuid(xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx),version(1.0)] library NumberLibrary { importlib("stdole2.tlb"); [uuid(xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx), object] interface INumber : IUnknown { HRESULT Add([in]int a,[in]int b); HRESULT Save([in]int a); HRESULT Load([out]int *a); }; [uuid(xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)] coclass NumberClass { interface INumber; } };

  • VisualBasic2008で、Graphicsについての質問です。

    VisualBasic2008で、Graphicsについての質問です。 私は今、Graphics描画の勉強をしているのですが、下のコードを書くと『使用されたパラメータが有効ではありません。』というエラーが出ます。 エラー行は、g.FillEllipse()の行なのですが、修正箇所が解らず苦しんでいます。 どなたか教えてください。よろしくお願いします。 Dim MyBrush As Brush = New Drawing2D.LinearGradientBrush(New Rectangle(5, 5, 120, 60), Color.Yellow, Color.Black, 40) g.FillEllipse(MyBrush, New Rectangle(5, 5, 120, 60))

  • VisualBasic2008でWord2003を制御したいです。

    現在、VisualBasic2008でWord2003で作成した表を段落記号で区切って解除するプログラムを作成しています。Wordのマクロでもできるのですが、VisualBasic2008でもWordのマクロと同じようにWordドキュメントを制御できるのか、勉強したくて作成しています。 以下は一部を抜粋したものですが、「名前Selectionは宣言されていません」というエラーがでてしまいます。他の箇所でも「Selection」を使っている部分ではエラーがでます。 どなたかご存知の方対処方法を教えていただけないでしょうか。 なにぶん初心者なもので、わかりやすくご指導いただけると幸いです。 Dim wdDoc As Microsoft.Office.Interop.Word.Document For Each tbl In wdDoc.Tables '表を選択 tbl.Select() '段落記号で区切って表を解除する Selection.Rows.ConvertToText(Separator:=wdSeparateByParagraphs) Next

専門家に質問してみよう