Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


3675 / 13644 ツリー ←次へ | 前へ→

【60756】タイプを変更することは、できるんでしょうか? haru 09/3/13(金) 10:59 質問[未読]
【60758】Re:タイプを変更することは、できるんでし... つん 09/3/13(金) 11:29 発言[未読]
【60761】Re:タイプを変更することは、できるんでし... haru 09/3/13(金) 13:14 質問[未読]
【60762】Re:タイプを変更することは、できるんでし... つん 09/3/13(金) 13:50 発言[未読]
【60764】Re:タイプを変更することは、できるんでし... マクロマン 09/3/13(金) 14:43 発言[未読]
【60766】Re:タイプを変更することは、できるんでし... haru 09/3/13(金) 15:17 お礼[未読]
【60770】Re:タイプを変更することは、できるんでし... ichinose@もう仕事に飽きた 09/3/13(金) 16:32 発言[未読]
【60771】Re:タイプを変更することは、できるんでし... マクロマン 09/3/13(金) 16:34 発言[未読]
【60772】Re:タイプを変更することは、できるんでし... マクロマン 09/3/13(金) 16:42 発言[未読]
【60773】Re:タイプを変更することは、できるんでし... マクロマン 09/3/13(金) 16:45 発言[未読]
【60774】Re:タイプを変更することは、できるんでし... neptune 09/3/13(金) 16:59 発言[未読]
【60769】Re:タイプを変更することは、できるんでし... マクロマン 09/3/13(金) 16:28 発言[未読]

【60756】タイプを変更することは、できるんでしょ...
質問  haru  - 09/3/13(金) 10:59 -

引用なし
パスワード
    TypeNameで、セルのタイプを調べます。
 このセルのタイプを変更することは、できるんでしょうか?
 よろしくお願いします。

【60758】Re:タイプを変更することは、できるんで...
発言  つん  - 09/3/13(金) 11:29 -

引用なし
パスワード
   ▼haru さん
こんにちは^^

> TypeNameで、セルのタイプを調べます。
> このセルのタイプを変更することは、できるんでしょうか?
> よろしくお願いします。

えーと、

TypeName(Range("a1"))

で、調べると、「Range」が返ってくるわけで・・・
これを変更するってのは考えられないので


TypeName(Range("a1").Value)


で、セルに入力された値を調べるんだと思いますが、
そこから、どうされたいのかイマイチわかりづらいです。

【60761】Re:タイプを変更することは、できるんで...
質問  haru  - 09/3/13(金) 13:14 -

引用なし
パスワード
    セルA2をダブルクリックすると、その上のセルA1の値(整数)か
ら-0.1^10マイナスさせます。
 もう一度、セルをダブルクリックすると、A1を元の値(整数)に
戻す、というマクロを作っています。
 今、セルA1が、整数かどうかを調べて、マイナスさせるか、決め
ようとしています。
 アドバイスを頂けると、幸いです。

【60762】Re:タイプを変更することは、できるんで...
発言  つん  - 09/3/13(金) 13:50 -

引用なし
パスワード
   > セルA2をダブルクリックすると、その上のセルA1の値(整数)か
>ら-0.1^10マイナスさせます。
> もう一度、セルをダブルクリックすると、A1を元の値(整数)に
>戻す、というマクロを作っています。
> 今、セルA1が、整数かどうかを調べて、マイナスさせるか、決め
>ようとしています。
> アドバイスを頂けると、幸いです。

「整数」かどうか調べるのは、TypeNameでは不適切のようです。
数値が入っていれば、整数でもそうでもなくて「Double」が返ってきます。
「整数」かどうか判定する関数があるんちゃうかと調べてみたけど、なさそうな感じ。
小数点があるかどうか?で判定するしかないのかなあ・・・

頼りなくてすんません。
達人の方のご出馬を待ちましょう^^;

私ももちっと考えてみます。

ところで

>セルA1の値(整数)から-0.1^10マイナスさせます。

の意味がわからんのですが^^;

【60764】Re:タイプを変更することは、できるんで...
発言  マクロマン  - 09/3/13(金) 14:43 -

引用なし
パスワード
   達人ではないですが・・・。

まず数値か否かを判定してから整数か否かを判定する、ではだめですか?
↓は数値か否かの判定は入れてありません

Dim su As Variant
 su = ActiveCell.Value
 If su <> CInt(su) Then
   MsgBox "整数ではない"
 Else
   MsgBox "整数である"
 End If

【60766】Re:タイプを変更することは、できるんで...
お礼  haru  - 09/3/13(金) 15:17 -

引用なし
パスワード
   ありがとうございます。
CIntでうまく行きました。

【60769】Re:タイプを変更することは、できるんで...
発言  マクロマン  - 09/3/13(金) 16:28 -

引用なし
パスワード
   >CInt(su)

単に
Int(su)
でもいけるようです。

【60770】Re:タイプを変更することは、できるんで...
発言  ichinose@もう仕事に飽きた  - 09/3/13(金) 16:32 -

引用なし
パスワード
   こんにちは。

>単に
>Int(su)
>でもいけるようです。

というかCIntではなく、Intにしたほうが良いと思いますよ。

検査値が32768以上だとエラーになるから・・・、

もっとも-0.1^10こんな小さい値を扱っているところをみると
Integer型の許容範囲の値かもしれませんが・・・・。

【60771】Re:タイプを変更することは、できるんで...
発言  マクロマン  - 09/3/13(金) 16:34 -

引用なし
パスワード
   ichinoseさん、ありがとうございます。
勉強になります。

【60772】Re:タイプを変更することは、できるんで...
発言  マクロマン  - 09/3/13(金) 16:42 -

引用なし
パスワード
   ↓で成功するのは
Int

CInt
だけですね。
何でもやりゃいいってもんじゃないけど。

Sub test()
Dim su As Variant
 su = 1.2
 On Error Resume Next
 MsgBox "WorksheetFunction.Int:" & WorksheetFunction.Int(su)
 MsgBox "Int:" & Int(su)
 MsgBox "CInt:" & CInt(su)
 MsgBox "Application.Int:" & Application.Int(su)
 MsgBox "WorksheetFunction.Quotient:" & WorksheetFunction.Quotient(su)
 MsgBox "Application.Quotient:" & Application.Quotient(su)
 MsgBox "Application.Quotient:" & Application.Quotient(su)
End Sub

【60773】Re:タイプを変更することは、できるんで...
発言  マクロマン  - 09/3/13(金) 16:45 -

引用なし
パスワード
   ちょんぼがありました。
結果は同じだけど。

Dim su As Variant
 su = 1.2
 On Error Resume Next
 MsgBox "WorksheetFunction.Int:" & WorksheetFunction.Int(su)
 MsgBox "Int:" & Int(su)
 MsgBox "CInt:" & CInt(su)
 MsgBox "Application.Int:" & Application.Int(su)
 MsgBox "WorksheetFunction.Quotient:" & WorksheetFunction.Quotient(su, 1)
 MsgBox "Application.Quotient:" & Application.Quotient(su, 1)

【60774】Re:タイプを変更することは、できるんで...
発言  neptune  - 09/3/13(金) 16:59 -

引用なし
パスワード
   みなさん
こんにちは
面白そうだったんでお邪魔します。

整数かどうかだけ調べるんですから、
確認はしてませんけど、例えば、
Sub t()
  Dim a As Double
  a = 123
  
  If a - (a \ 1) <> 0 Then
    Debug.Print "整数じゃないですね。"
  Else
    Debug.Print "整数ですね。"
  End If
End Sub
みたいに単純なのではどうなんでしょう?
考え方間違ってますかね???

3675 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free