• ベストアンサー
  • 困ってます

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

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

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数194
  • ありがとう数1

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

  • ベストアンサー
  • 回答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 分る方がいらっしゃいましたらご教授頂けますと幸いです。

  • お勧めのプログラミング有料自宅学習

    プログラミングを習得したいのですが、独学ではどうしても 最初の環境構築が難しくてできません。 そこで、環境構築を含む最初のところだけでもプロに学ぼうと 考えているのですが、スクールはかなり高いので、有料で 指導してもらえるオンデマンドの自宅学習をやろうと考えています。 お勧めのサイトがあれば、ご紹介頂けないでしょうか。 以上、何卒よろしくお願いいたします。

  • Optional について

    エクセルのvbaエキスパートのスタンダードの問題でわからないのがあります。 Sub M_Proc ()  Dim a As Long  a = F_Proc(3)  MsgBox a End Sub Function F_Proc(Optional x As Long = 5) As Long  F_Proc = x * 2 End Function というコードで 質問1  Optional はどういう意味でしょうか? 質問2 Optional x As Long = 5 となっているのに xには3が代入されています。 この5は意味がないのでしょうか? よろしくお願いします。

  • VBAプログラミングの質問です。

    Sheet1の第2列に行番号、4列に列番号、5列にそこの値が書かれたデータが並んでいます。 1 1 967 2 1 687 ……… x y 802 ……… x行、y列に802を代入するという感じです。全部で57985データあります。 前の回答を参考にして、48881データまではSheet2に For k = 1 To 48881 Worksheets("Sheet2").Cells(1 + Worksheets("Sheet1").Cells(k, 2), 1 + Worksheets("Sheet1").Cells(k, 4)) = Worksheets("Sheet1").Cells(k, 5) Next k このようにプログラムを書いて納まって、残りの57985-48881=9104データの行列はSheet2に納まらなかったので、Sheet3に書こうと思い、下のように書きましたがプログラムがうまく動きませんでした。他にも試しましたが初心者のためダメでした。 Dim n As Long Dim m As Long n = 9104 m = 48881 For k = 1 To n Worksheets("Sheet3").Cells(1 + Worksheets("Sheet1").Cells(k + m, 2), 1 + Worksheets("Sheet1").Cells(k + m, 4)) = Worksheets("Sheet1").Cells(k + m, 5) Next k 48881というのが大きいため動かないと考えられますが、どのように対処したらよいかわかりません。教えてください。お願いします。

  • 変数から命令?

    例えば dim a as String a="dim b as Long" という風にしてみて aの値に入ってるやつを実行(?)するようなことができますか? つまり、ここでいうなら aに"dim b as Long"をいれて なんらかの処理を行って 変数bを作成することはできますか?

  • VB.NETで子ウィンドウの列挙の仕方がわかりません。

    VB.NET+FrameWork1.1環境なのですが、 子ウィンドウの取得の仕方がどうしてもわからず教えて頂きたいです。 Dim Oya As Long Oya = FindWindow(vbNullString, "電卓") Dim Ret As Long Ret = EnumChildWindows(Oya, AddressOf EnumChildWnd, 0) このようにして使うAPIのようなのですが、 デリゲート型をLong型に変換できませんと出てしまいます。 色々検索してみたのですが、それらしい記事が見つかるも どうしても理解できず、正常に動作させることが出来ませんでした。 もうしわけございませんが、どなたか実行可能なコードを書いて いただけないでしょうか。 出力結果はConsole.WriteLineに出るようにして頂けると助かります。 よろしくお願いいたします。m(__)m