• ベストアンサー

String型の値にスラッシュをつけて表示させたい。

VB2005環境です。 渡ってきたString型の数字を、スラッシュをつけた上で、 テキストボックスに表示したいと思っています。 具体的には、 Dim YMD as string ="200709" Me.txtbox1.text=YMD これだと、200709と表示されてしまいますので、スラッシュを つけて、2007/09にしたいのです。 Formatを使うのだろうと思い、 Me.txtbox1.text=Format(YMD,"0000/00") としてみると、エラー。 スラッシュがつくからDateになるのかなと、 Me.txtbox1.text=CDate(Format(YMD,"0000/00")) でもダメでした。 Formatは、第二引数に指定した形式に直すものだと思っていたの ですが、String型のデータは直せないのでしょうか…? 問題点と、解決方法を教えていただけないでしょうか。 よろしくお願いします。

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

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.4

Formatはその第一引数に string 型が来た場合に 自動の型変換を行わないようです。 GotDotNet Japan 掲示板 http://www.microsoft.com/japan/msdn/community/gdn/ShowPost-42388.htm ということで自前で変換をかければ Imports System Imports System.Text Imports Microsoft.VisualBasic Module ConvertDateString Sub Main Dim YMD as string ="200709" Dim text Dim provider As IFormatProvider text = Format(DateTime.ParseExact(YMD, "yyyyMM", provider), "yyyy/MM" ) Console.Write(text) End Sub end Module 2007/09 とできますが こんなことをするくらいなら正規表現でも使って 文字列として変換した方がよいような気がします。

ginfix
質問者

お礼

回答ありがとうございます。 詳細にお答えいただき、疑問が解けました。

その他の回答 (3)

  • pkh4989
  • ベストアンサー率62% (162/260)
回答No.3

Me.txtbox1.Text = Format(wStr, "####/##")

ginfix
質問者

お礼

No1さんのお礼にも書きましたが、第一引数にString型を していることから起きているようなんです。 なので、Me.txtbox1.text=Format(YMD,"####/##")とすれば、 メッセージボックスには####/##と出ます。

  • pkh4989
  • ベストアンサー率62% (162/260)
回答No.2

これでは駄目でしょうか。 Me.txtbox1.Text Left(YMD, 4) & "/" & Right(YMD, 2)

ginfix
質問者

お礼

回答ありがとうございます。 単純にスラッシュが欲しかったので、教えていただいた 方法で解決できました。 助かりました。

  • j_nishiz
  • ベストアンサー率26% (183/697)
回答No.1

Me.txtbox1.text=Format(YMD,"YYYY/MM") ではなかったかな?

ginfix
質問者

お礼

回答ありがとうございます。 VB2005からなんでしょうか、Formatの第一引数にString型を 指定すると、第二引数のみが出てしまうのです。 たとえば、MsgBox(Format(YMD,"YYYY/MM")) とした場合、YYYY/MMとメッセージが出力されます。