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関数で回避できるのはなぜなんでしょう?
ひょっとしたらアホな質問をしているのかもしれませんが、
どなたかご回答いただければありがたいです。

A 回答 (1件)

lngDaySec = 60 * 60 * 24


式中の定数(60,60,24)が内部的に整数型(Integer)として扱われているせいです。

特に指定しない限り、VBのコンパイラは式の内容を見て定数の型を適当に設定します。
今回の場合、式中に含まれる全ての数値が32767以下であるため、これは整数型の演算であると判断されてしまったのでしょう。

こういった事態を回避するためには、定数の後ろに#を付けることにより、明示的に長整数型だと宣言してやればいいです。

こんな感じです。
lngDaySec = 60# * 60# * 24#
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。

>式中の定数(60,60,24)が内部的に整数型(Integer)
>として扱われているせいです
なるほどー。不便ですねー。
左辺を見て判断して欲しい……。

お礼日時:2001/04/22 16:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q「18禁」のビデオがもっともきれいに映る17型のPC用モニターはなんですか。

購入を検討してます。「18禁」のビデオがもっともきれいに映る17型のPC用モニターはなんですか。PC専用でいいです。「D-SUB、DVI」理由もお願いします。

Aベストアンサー

きれいという基準が難しいのですが、再現性を考えるとCRTモニターになります。
色再現性や応答速度が優れており、CRTなら2万円程度でいけるものが、液晶で同じものを求めれば10万円は越えてしまう。
大きいのが欠点ですけど。

http://www.watch.impress.co.jp/lcd-factory/qa/040614/index.htm

Qマクロ初心者です。 インデックスが有効範囲にありませんとエラーになりました。 Dim Open

マクロ初心者です。
インデックスが有効範囲にありませんとエラーになりました。



Dim OpenFileName As string
Dim book1 As Workbook
Dim sheet1 As worksheet

sub 問題 ()

OpenFileName = GetOpenFileName(”エクセルファイル,*.*”)
If OpenFileName <>”False” Then
workbooks.Open OpenFileName
Else
msgbox ”キャンセルしました”
Exit sub
EndIf

Set book1 = Activeworkbook

Activesheet.Copy Before:=Thisworkbook.sheet(1)

workbooks(”book1”).Close SaveChanges:=False

Set sheet1 = Activesheet

ここまで作りました。

管理台帳を開き、
別ファイルにコピーし
管理台帳は閉じる、というところで、
実行するとエラーとなり、
デバッグをクリックしたら、管理台帳を閉じるコードが黄色くなります。

()の中の”を消してもダメでした。
配列数が大きい時と存在しない名前を指定した時になるとのことですが、、
Set〜のコードは、取得できていないのでしょうか?

マクロ初心者です。
インデックスが有効範囲にありませんとエラーになりました。



Dim OpenFileName As string
Dim book1 As Workbook
Dim sheet1 As worksheet

sub 問題 ()

OpenFileName = GetOpenFileName(”エクセルファイル,*.*”)
If OpenFileName <>”False” Then
workbooks.Open OpenFileName
Else
msgbox ”キャンセルしました”
Exit sub
EndIf

Set book1 = Activeworkbook

Activesheet.Copy Before:=Thisworkbook.sheet(1)

workbooks(”book1”).Close SaveChanges:=False

Set sheet1 = Ac...続きを読む

Aベストアンサー

こんにちは

>Set〜のコードは、取得できていないのでしょうか?
ご提示のコードではbook1が変数(=ワークブック)として設定されており、
 Set book1 = Activeworkbook
によって、Activeworkbookのオブジェクトが代入されています。

それなので、このブックを閉じるのであれば
 book1.Close SaveChanges:=False
で良いはずです。

>ネットでは、workbook(book1).Close〜
>もしくはworkbook(”book1.xls”)など
workbooks(”book1.xls”).Closeは、”book1.xls”(=文字列)という名のブックを閉じる際に用いますし、workbooks(book1).Closeの場合は、book1が文字列変数等であると考えられます。
例えば
 book1 = ”book1.xls”
 workbooks(book1).Close
で、一行目と同じ意味になりますよね。

変数とその意味するところを理解して使い分けることが必要です。
というか、意味を決めているのはそのコードを作成している質問者様なのですが。

こんにちは

>Set〜のコードは、取得できていないのでしょうか?
ご提示のコードではbook1が変数(=ワークブック)として設定されており、
 Set book1 = Activeworkbook
によって、Activeworkbookのオブジェクトが代入されています。

それなので、このブックを閉じるのであれば
 book1.Close SaveChanges:=False
で良いはずです。

>ネットでは、workbook(book1).Close〜
>もしくはworkbook(”book1.xls”)など
workbooks(”book1.xls”).Closeは、”book1.xls”(=文字列)という名のブックを閉じる際に用います...続きを読む

QCS放送で映る局と映らない局は何故ですか

CS放送で無料開放デーと称して、オンエヤーされている番組で、映る局と映らない局があるのは何故ですか。
ちなみにスカパー等契約はしていまさえんが、CS局で無料と表示されている番組で映る局は334,335,343,800,256,312など他にもありますが、一方無料表示なのに257,300,303,323,324等は映りません。
アンテナは一つ屋根に付けてあり、ケーブルテレビ等ではありません。同じCS放送でもオワン型アンテナの角度が違いひとつでは全てがカバーされていないのですか。
どなたかこの点分かりやすくお教へ頂けないでしょうか。
どうか宜しくお願いいたします。

Aベストアンサー

スカパーには

本来の独自アンテナ・チューナー用いる

スカパー(SD)・スカパーHDと

BSデジタルとアンテナ共用し、テレビ・レコーダーの内蔵BSCSチューナーで見れる

スカパーe2

が、あります。

両方一台のアンテナで見れる設計のアンテナもありますが、その時も
スカパー(SD)・スカパーHDは専用チューナー必要です

zzzzzzzzzzzzzzzzzzzz

QMicroSoft BasicのDim文とVisualBasicのDim文の違い

私が20年前にMicroSoft Basicを使っていたときは、DIM文はDIMENSIONの略で配列型変数の宣言に使っていました。

最近VisualBasicの勉強を始めたのですが、変数の宣言はすべてDim文になっており、昔のMS BasicのDim文と意味合いが変わっているのに驚いています。

ここで質問させてください。
・なぜ配列を意味するDimension文が変数の宣言なのか?
・どのバージョンのBasicからDim文の意味が変わったのか?

私が使用していたのはNEC N-Basic,N-88Basic,N-98Basicです。

Aベストアンサー

VISUAL BASIC のDimは ディメンジョンの略です。
私の経験ではVB2.0時代からありました。

配列0を考えた場合変数とおなじであるからだとおもいます

Q地デジ対応テレビにしてから、いままで映らなかったテレビ埼玉が映るように

地デジ対応テレビにしてから、いままで映らなかったテレビ埼玉が映るようになりました。桐生中継局へアンテナを向けています。なぜ映るのでしょうか?東京タワーの電波を拾っていたとしてもテレビ埼玉は映りませんよね?スカイツリーになるともっと違うチャンネルが映るのかな?テレビ埼玉が映ると探偵ナイトスクープが見られるので助かります。群馬は放映していないのです。

Aベストアンサー

みどり市の方でしょうか?
埼玉TVは児玉中継局・浦和局からも送信しています。
桐生中継局の民放各局の信号は児玉局から受けた信号を再送信しています。
http://mitearuki2.sakura.ne.jp/sousintou-east/sousintou-east.html
茶臼山を左にみて正面に児玉局が来るようなローケーションの良い高台にお住まいなら埼玉TVも受信可能かと思われます。
アナログの埼玉TVは見えていたのに地Dにしたら見えなくなったという方が多い地区なのに逆のケースは
初めてです。
元家電量販店勤務者

QDim x As Integer = 0

いつもお世話になっております。

只今、本に記載してあるソースコードを手入力しています。
標記のように入力したら、『コンパイルエラー 修正候補:ステートメントの最後』というエラーが出ました。

(1)このエラーは無視してもよいのでしょうか?
(2)そもそも、変数の宣言文の後ろに=0をつけている意味がわかりません。当方VB初心者です。

よろしくお願いいたします。

Aベストアンサー

この点は(変数の宣言と初期化は)言語による、と考えるべきです。
この質問は何の質問か。
VB系統らしいことは判るが
VB以外のBASIC
VB6
VBA
VB.NET系統
のどれか質問に書くべき。質問者は経験が無くて、視野がそこまで行かないのかも知れないが。
ーーー
VBAでは(多分VBでも同じ。テスト環境がないので)
Sub test01()
Dim x As Integer
x = 0
MsgBox x
End Sub
はOK
ーー
Sub test01()
Dim x As Integer =0
MsgBox x
はDim x As Integer =0
と入力した段階でエラー。
http://www.bunsugi.ed.jp/vba4graduate/vba_hensuusyokika.htm
ーーー
定数のConstであればこういう書き方はOK
Sub test01()
Const x As Integer = 0
MsgBox x
End Sub
ーーー
VB.NETでは、OK
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
Dim x As Integer = 10
MsgBox(x)
End Sub
ーー
Javaでは可能であるようです
http://msugai.fc2web.com/java/var2.html
ーーーーー
>ろに=0をつけている意味がわかりません
宣言と同時に値を与える=初期化する

この点は(変数の宣言と初期化は)言語による、と考えるべきです。
この質問は何の質問か。
VB系統らしいことは判るが
VB以外のBASIC
VB6
VBA
VB.NET系統
のどれか質問に書くべき。質問者は経験が無くて、視野がそこまで行かないのかも知れないが。
ーーー
VBAでは(多分VBでも同じ。テスト環境がないので)
Sub test01()
Dim x As Integer
x = 0
MsgBox x
End Sub
はOK
ーー
Sub test01()
Dim x As Integer =0
MsgBox x
はDim x As Integer =0
と入力した段階でエラー。
http://www.bunsug...続きを読む

Q映らなくなっていたブラウン管テレビが映るようになりました・・

映らなくなっていたブラウン管テレビが映るようになりました・・

今から半年くらい前の話ですが、突然画面が乱れて数日経っても直らず、しまいには画面が真っ暗になってしまいました。
これでテレビは完全に壊れたと思い、サブであった14型のテレビをずっと使ってきました。

ですが今日、本当にこのテレビは壊れてしまったのか?と思い、テレビのアンテナの線を繋げてみたら映ったんです。
bsも映りました。
しかもノイズもなく、きれいに映っていました。

これはいったいどういうことなんでしょうか?
まったく映らなかったのにきれいに映っているのは不思議です。
ただ単に、壊れたと思ったときはアンテナ線が外れかけただけだったとかなのですか?
それでも、家ではBSも繋げていたのですが、そのときはBSも映ってなかったような・・
テレビの内部の接触不良だったんでしょうか?

接触不良だったのならまた映らなくなるのが怖いので、今は使っていません・・

Aベストアンサー

ブラウン管の電子ビーム管の接触不良かもしれません。
素人では、手をつけない方が良いです。高電圧ですから。
内のテレビも、雨の日は画面がぼやけます。偏光コイルが水分を吸っている状態です。時間がたつとはっきり映ります。
ちなみに、もうブラウン管の製造は、今年3月にソニーマレーシア工場の閉鎖でなくなりました。

Qマクロで100マス計算! Dim i,j As Integer For i = 2 ToRang

マクロで100マス計算!

Dim i,j As Integer

For i = 2 ToRange(”A1”).End(xlDown).Row
For j=2 To Range(”B1”).End(xlToRight).Column

Cells(i,j).Value = Cells(i,1).Value * Cells(1,j).Value
Next j
Next i
Endsub

上記のように記述しましたが、
iの最終行が2となってしまっていますがなぜこのコードが間違っているのか分からないです。。どなたか教えていただけたら嬉しいです!

Aベストアンサー

確認してはいませんが…


>改行、スペースは実際にはきちんととっていますので気にしないでください
とのことなので、違っているのかもしれませんが、

>For i = 2 ToRange(”A1”).End(xlDown).Row
         ↓
 For i = 2 To Range(”A1”).End(xlDown).Row
で、うまくいきませんか?
100マス(10×10)と最初から決まっているので、範囲は 2 To 11 でも良いように思いますが…

改行、スペースなどが正しくなっているなら、Range(”A1”).End(xlDown).Rowの値が2以下になっている可能性が考えられます。(ということは、A1が空白セル、または、A3が空白セルなどなど・・)
A1が空白セルの場合は、
 For i = 2 To Range(”A2”).End(xlDown).Row
とするか、
 For i = 2 To 11
などとすることで、動作するのではないかと推測します。

Q1鏡に映る自分

1鏡に映る自分
2手に持った携帯電話で取った写真に映る自分
3,2から3m離れたところにおいた携帯電話で撮った自分
4集合写真に映る自分
5免許証にある自分の写真
どれも見た目が全然違うんですが、どれが他人が見ている自分に一番近いですか?2mはなした携帯電話で撮った自分はまあまあなのに証明写真に映る自分や手に持った携帯に映る自分は整形を考えるほどひどく気持ち悪く、醜い自分が嫌になります…

Aベストアンサー

人を撮る場合、鏡がその人の視界の中にあると鏡に向かってポーズを作ってしまって失敗します。
つまり写真を撮っている人に向かって意識をしてくれないとうまく行かないのです。

そういうわけでその中では鏡に映る自分は違うと思います。

で免許証の写真もひどいのが多いわけですが、最近はまあまあ近く写っているのではないでしょうか。客観的にひどいのが多かったのは免許証拝見でぎょっとしている警官の多さと、その警官が結局偽物だと言わずに返してくる(こういうもんだと思い直す)事実から推察できます。原因は不明ですが、逮捕者の写真もひどいですから、心理状態と機械の事情のなせる技なのでしょう。

その中では集合写真がベストであるべきなのですが、人数が多いとどうしても見落としがあるのは事実ですね。

セルフタイマーで広角ではないレンズで撮った物もまあひとつの事実に近いのかもしれないです。
手に持って撮るのではカメラが近過ぎてどうしたって歪みが大きいと思います。メガネ屋にある撮影システムも激しく歪んでて何の参考にもなりませんでした。。

結局親しい人と話でもしながら、広角レンズを使わないで撮ってもらうのが近いのだろうと思いますが、しょせん写真は写真と考えるのも大事なのでしょう。
事実はひとつではないという事でもあるのだと思います。

まあ自分を見ていて気持ち悪くなるのはわりと普通の反応だと思います。自分にすごく似た人を観ていてもやはり気持ち悪くなりますから、思っている自分像と違う以外にも心理的な原因があるようです。

人を撮る場合、鏡がその人の視界の中にあると鏡に向かってポーズを作ってしまって失敗します。
つまり写真を撮っている人に向かって意識をしてくれないとうまく行かないのです。

そういうわけでその中では鏡に映る自分は違うと思います。

で免許証の写真もひどいのが多いわけですが、最近はまあまあ近く写っているのではないでしょうか。客観的にひどいのが多かったのは免許証拝見でぎょっとしている警官の多さと、その警官が結局偽物だと言わずに返してくる(こういうもんだと思い直す)事実から推察できます。原...続きを読む

QIf myCityBUNRUINO = 2 Then Cells(myPrefNO + 3 - 47 - myCityNu, 24) = myTantou こちらについて教えていただきたいです。

myTorikomibi = Range("A2").Value
If myCityBUNRUINO = 0 Then Cells(myPrefNO + 3, 4) = myTantou
If myCityBUNRUINO = 1 Then Cells(myPrefNO + 3 - 47, 14) = myTantou
If myCityBUNRUINO = 2 Then Cells(myPrefNO + 3 - 47 - myCityNu, 24) = myTantou
For i = 1 To 3
If myCityBUNRUINO = 0 Then Cells(myPrefNO + 3, i + 4) = myTorikomibi
If myCityBUNRUINO = 1 Then Cells(myPrefNO + 3 - 47, i + 14) = myTorikomibi
If myCityBUNRUINO = 2 Then Cells(myPrefNO + 3 - 47 - myCityNu, i + 24) = myTorikomibi
Next i
マクロを編集しようとしましたところこちらが解読できづに困っています。
こちらだけとりだして実行しながら解読していますが混乱してしまっています。ご存知の方いらっしゃいましたら教えてください。Then以降がわかりません。よろしくお願いいたします。

myTorikomibi = Range("A2").Value
If myCityBUNRUINO = 0 Then Cells(myPrefNO + 3, 4) = myTantou
If myCityBUNRUINO = 1 Then Cells(myPrefNO + 3 - 47, 14) = myTantou
If myCityBUNRUINO = 2 Then Cells(myPrefNO + 3 - 47 - myCityNu, 24) = myTantou
For i = 1 To 3
If myCityBUNRUINO = 0 Then Cells(myPrefNO + 3, i + 4) = myTorikomibi
If myCityBUNRUINO = 1 Then Cells(myPrefNO + 3 - 47, i + 14) = myTorikomibi
If myCityBUNRUINO = 2 Then Cells...続きを読む

Aベストアンサー

こんにちは。maruru01です。

ヘルプはご覧になりましたか?
特に、Cellsについて。
Cellsは、

Cells(行番号, 列番号)

で、セルを参照します。
なので、各条件の時に、変数「myTantou」や「myTorikomibi」に格納されている値をそれらのセルに代入しているだけですが。
ただし、行番号が、

「myPrefNO + 3 - 47」
「myPrefNO + 3 - 47 - myCityNu」

などとちょっとややこしくなっていますが。
これも、変数「myPrefNO」「myCityNu」に入っている値から行番号が決まるというだけです。
例えば、
myPrefNO=60
myCityNu=2
なら、下の例は、
60+3-47-2=14
で、14行目となるということです。


人気Q&Aランキング

おすすめ情報