激凹みから立ち直る方法

エクセルの入力フォームで、TextBoxに数値(小数点含む場合あり)を入力すると、○○年○○ヶ月 とはき出してくれるようにしたいのですが…
どうすれば?よろしいでしょうか?
よろしくお願いいたします。

質問者からの補足コメント

  • 補足なんですが、小数点以下がない整数が入力された場合は、○○年 とだけ表記してもらいたいです。

      補足日時:2018/11/10 13:38

A 回答 (3件)

基本としては、入力した数値の中から、ピリオドを用いて split 関数で分割。



ただし 2018.11 なら良いけれど、2018.11.14 みたいに入力したり、11.14.2018 みたいに入力したり、2018.15 みたいに入力したり、エラー対応処理を普通は作るけれど、どこまで作るんだろうね?
    • good
    • 0
この回答へのお礼

早速に、ありがとうございます。
説明が、ヘタで、申し訳ありません。

“実務経験年数 3年6ヶ月”

みたいなのを表記したいのですが、入力フォームのTextBoxには、3.5 など数字だけを入力したいのです。
8.5とか、2とか、数字だけを入力すると、
“8年6ヶ月”とか、“2年”と表示させたいのです。

お礼日時:2018/11/10 13:53

入力が文字列型なら split 関数を使えば良い。


http://officetanaka.net/excel/vba/tips/tips62.htm

入力が浮動小数点型なら、worksheetfunction.rounddown を使えば整数部分だけ取り出せる。
後は、元の数字から整数部分を引き算すれば、小数部分が残る。
    • good
    • 0
この回答へのお礼

ありがとうございます!
早速、試させていただきます!

お礼日時:2018/11/10 18:27

こんばんは!



>8.5とか、2とか、数字だけを入力すると、
>“8年6ヶ月”とか、“2年”と表示させたいのです。

というコトなので、一例です。
「入力フォーム」とはユーザフォームにテキストボックスとコマンドボタンを挿入してあり、
コマンドボタンを押下するとマクロが実行されるという解釈です。
尚、どこに表示するか?が具体的に書いてないので、
B列に順に表示するようにしてみました。

コマンドボタンのコードを↓にしてみてください。

Private Sub CommandButton1_Click()
 Dim myYear As Long, myMonth As Long
 Dim myRng As Range
  With TextBox1
   If .Value <> "" Then
    Set myRng = Cells(Rows.Count, "B").End(xlUp).Offset(1)
     myYear = Int(.Value)
     myMonth = (.Value * 10 Mod 10) / 10 * 12
     If myYear > 0 Then
      If myMonth > 0 Then
       myRng = myYear & "年" & myMonth & "ヶ月"
      Else
       myRng = myYear & "年"
      End If
     Else
      myRng = myMonth & "ヶ月"
     End If
   End If
  End With
End Sub

※ 小数点以下の数字が「0.7」のように中途半端(12ヶ月をきっちり割り切ることができない)場合は
「○ヶ月」の部分がお望みの表示になるかどうかは判りません。m(_ _)m
    • good
    • 0

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