Excel VBA質問箱 IV

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

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


5714 / 13645 ツリー ←次へ | 前へ→

【49263】インプットボックスの使い方について TOKU 07/5/29(火) 22:30 質問[未読]
【49264】Re:インプットボックスの使い方について neptune 07/5/29(火) 23:15 回答[未読]
【49265】Re:インプットボックスの使い方について TOKU 07/5/29(火) 23:30 発言[未読]
【49268】Re:インプットボックスの使い方について りん 07/5/30(水) 1:28 回答[未読]
【49299】Re:インプットボックスの使い方について TOKU 07/5/30(水) 18:54 お礼[未読]

【49263】インプットボックスの使い方について
質問  TOKU  - 07/5/29(火) 22:30 -

引用なし
パスワード
   インプットボックスを使って選択した範囲のセルに対して
0.04より大きい値は小数第1位で表し、0.04以下は小数第2位で表したい。
といった小数桁数を自動変換させたいのですがうまく行きません。


下記にコードを書きましたのでどなたかご指導下さい。

Sub 少数桁数自動表示()

  Dim myAns As Variant
  On Error Resume Next
  
  Set myAns = Application.InputBox("少数桁数自動表示したい箇所をマウスで選択してください。", Type:=8)
  If myAns Is Nothing Then Exit Sub
    myAns.Activate

  If myAns.Value > 0.04 Then
    myAns.Value.Select
    Selection.NumberFormatLocal = "0.0_ "
  Else
    myAns.Value.Select
    Selection.NumberFormatLocal = "0.00_ "
  End If

End Sub

【49264】Re:インプットボックスの使い方について
回答  neptune  - 07/5/29(火) 23:15 -

引用なし
パスワード
   ▼TOKU さん:

こんにちは

ザットしか見てませんが、
>インプットボックスを使って選択した範囲のセルに対して
>0.04より大きい値は小数第1位で表し、0.04以下は小数第2位で表したい。
>といった小数桁数を自動変換させたいのですがうまく行きません。
>
>
>下記にコードを書きましたのでどなたかご指導下さい。
>
>Sub 少数桁数自動表示()
>
>  Dim myAns As Variant
>  On Error Resume Next
   dim r as range
>  
>  Set myAns = Application.InputBox("少数桁数自動表示したい箇所をマウスで選択してください。", Type:=8)
>  If myAns Is Nothing Then Exit Sub
>    myAns.Activate
  for each r in myans
   'それぞれのセルにおいて判断して処理
  next

>  If myAns.Value > 0.04 Then
>    myAns.Value.Select
     Valueを指定するとプロパティを参照してしまう。
     この場合はエラーになりませんか?
     ex:r.NumberFormatLocal = "0.0_ "


>    Selection.NumberFormatLocal = "0.0_ "
>  Else
>    myAns.Value.Select
>    Selection.NumberFormatLocal = "0.00_ "
>  End If
>
>End Sub

【49265】Re:インプットボックスの使い方について
発言  TOKU  - 07/5/29(火) 23:30 -

引用なし
パスワード
   ▼neptune さん:
実行してみましたが選択した範囲の全てが同じように変換されてしまいます。
あと書き忘れていましたが少数第1位に桁上げした際、
データ自体の少数第2位以降はゼロにしたいです。


>▼TOKU さん:
>
>こんにちは
>
>ザットしか見てませんが、
>>インプットボックスを使って選択した範囲のセルに対して
>>0.04より大きい値は小数第1位で表し、0.04以下は小数第2位で表したい。
>>といった小数桁数を自動変換させたいのですがうまく行きません。
>>
>>
>>下記にコードを書きましたのでどなたかご指導下さい。
>>
>>Sub 少数桁数自動表示()
>>
>>  Dim myAns As Variant
>>  On Error Resume Next
>   dim r as range
>>  
>>  Set myAns = Application.InputBox("少数桁数自動表示したい箇所をマウスで選択してください。", Type:=8)
>>  If myAns Is Nothing Then Exit Sub
>>    myAns.Activate
>  for each r in myans
>   'それぞれのセルにおいて判断して処理
>  next
>
>>  If myAns.Value > 0.04 Then
>>    myAns.Value.Select
>     Valueを指定するとプロパティを参照してしまう。
>     この場合はエラーになりませんか?
>     ex:r.NumberFormatLocal = "0.0_ "
>
>
>>    Selection.NumberFormatLocal = "0.0_ "
>>  Else
>>    myAns.Value.Select
>>    Selection.NumberFormatLocal = "0.00_ "
>>  End If
>>
>>End Sub

【49268】Re:インプットボックスの使い方について
回答  りん E-MAIL  - 07/5/30(水) 1:28 -

引用なし
パスワード
   TOKU さん、こんばんわ。

>実行してみましたが選択した範囲の全てが同じように変換されてしまいます。
分岐の仕方が間違ってるからだと思います。

>あと書き忘れていましたが少数第1位に桁上げした際、
>データ自体の少数第2位以降はゼロにしたいです。
書式ではなく、内容も変更する必要があります。

>>▼TOKU さん:
>>
>>こんにちは
>>
>>ザットしか見てませんが、
>>>インプットボックスを使って選択した範囲のセルに対して
>>>0.04より大きい値は小数第1位で表し、0.04以下は小数第2位で表したい。
>>>といった小数桁数を自動変換させたいのですがうまく行きません。
>>>
>>>
>>>下記にコードを書きましたのでどなたかご指導下さい。
>>>
>>>Sub 少数桁数自動表示()
>>>
>>>  Dim myAns As Variant
>>>  On Error Resume Next
>>   dim r as range
>>>  
>>>  Set myAns = Application.InputBox("少数桁数自動表示したい箇所をマウスで選択してください。", Type:=8)
>>>  If myAns Is Nothing Then Exit Sub
>>>    myAns.Activate
>>  for each r in myans
>>   'それぞれのセルにおいて判断して処理
>>
   If r.Value > 0.04 Then
      r.Value = Application.WorksheetFunction.Round(r.Value + 0.0000001, 1) '「+ 0.0000001」は浮動小数点対策
      r.NumberFormatLocal = "0.0_ "
   Else
      r.NumberFormatLocal = "0.00_ "
   End If
  next
>>>
>>>End Sub

こんな感じです。

【49299】Re:インプットボックスの使い方について
お礼  TOKU  - 07/5/30(水) 18:54 -

引用なし
パスワード
   ▼りん さん:

おーーーーーーー!!
やりたい事が出来ました。ありがとうございます。
浮動小数点対策?!という技があるんですね。
よく意味はわかりませんが...すごいです。

また機会がありましたらご教授下さいm(__)m

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