プロが教える店舗&オフィスのセキュリティ対策術

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型のデータは直せないのでしょうか…?
問題点と、解決方法を教えていただけないでしょうか。
よろしくお願いします。

A 回答 (4件)

Formatはその第一引数に string 型が来た場合に


自動の型変換を行わないようです。

GotDotNet Japan 掲示板
http://www.microsoft.com/japan/msdn/community/gd …

ということで自前で変換をかければ

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

とできますが
こんなことをするくらいなら正規表現でも使って
文字列として変換した方がよいような気がします。
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/09/13 17:28

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

    • good
    • 0
この回答へのお礼

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

お礼日時:2007/09/11 17:31

これでは駄目でしょうか。



Me.txtbox1.Text Left(YMD, 4) & "/" & Right(YMD, 2)
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/09/13 17:03

Me.txtbox1.text=Format(YMD,"YYYY/MM")



ではなかったかな?
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/09/11 17:29

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A