• ベストアンサー

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

  • ginfix
  • お礼率34% (330/962)

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

  • ベストアンサー
  • 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とメッセージが出力されます。

関連するQ&A

  • 日付書式のString型からData型への変換

    引数での日付データを加工して、変換させたいのですがエラー("String型からData型への変換は無効です。")がでます。 対処方法をアドバイスいただけないでしょうか? コードを下記に示します。 VS 2010を使用しています。 Dim From As Long Dim Year As Integer Dim Month As Integer Dim Day As Integer From = CLng(Format(DateAdd("d", 1, DateAdd("m", -1, CDate(CStr(Year) & "/" & CStr(Month) & "/" & CStr(Day)))), "yyyyMMdd"))

  • VB6.0 でのテキストファイルの表示

    .net では、readstream でがばっととって、テキストボックス(読み取り専用)に表示しました。 これと同様のことをVB6.0でチャレンジしたのですが、テキストボックスに表示されるのは最初の一行だけでした。マルチラインのテキストボックス設置後 Private sub command1_click() Dim data as string Open "ファイルパス" for input as #256 Do while EOF(256) line input #256, data loop text1.text=data としたところ、ファイル内の最初の一行目に位置する「%」のみが表示されました。 readonlyもつかえないみたいなので、Listを使うのがよいのでしょうか?ご教示下さい

  • デザイナ上にも値が表示され、独自の処理も組み込みたい

    VB2005で独自の制限を持つコントロールを作ろうと思っています。 Imports System.ComponentModel Public Class Component1   Inherits TextBox   Private _text As Double   Public Overrides Property Text() As String     Get       Return _text     End Get     Set(ByVal value As String)       If IsNumeric(value) Then         _text = value       End If     End Set   End Property End Class やりたい事は数値しか入力を許さず、一定のプロパティ指定によって カンマ区切りだとか小数部表示、桁数制限などが出来るようにしたい のです。 上記のようなコードで動作は出来るようなのですが、デザイナ上の プロパティウィンドウからTextを変更した時、デザイナ上に貼り付け られているテキストボックスの中に、指定されたTextが表示されません。 MyBase.Textを利用するとText()が何度も走行してしまうようですし、 取得するときに、Textプロパティに設定されている値を加工した結果を 返したい為、MyBase.Textの利用が宜しくないようです。 (例えば表示上は「1,234」となっているが、取得時には「1234」として 取得される、 設定時に「1234」と指定したが、実際に設定される値は「1,234」など) 先のような理由の為か、Getの方に Return String.Format("{0:#,##0}", Single.Parse(MyBase.Text)) のようなことをするとInvalidOperationExceptionが発生してしまいます。 どうするとデザイナ上にも値が表示され、先のようなカスタム処理を加えることが可能でしょうか? 宜しくお願い致します。

  • [String]の意味は?

    最近VB.NET2003を始めたものです。 MSDNのヘルプでたまに見かけるのですが、 [String].Compare(str1, str2)の[String]は何なのでしょうか? Dim str As Stringと記述するのと、 Dim str As [String]と記述するのとでは、意味が違うのでしょうか? なおStringクラスの意味は分かっています。 [型名]という記述をするということはどういうことなのかを教えてください。

  • ASP.NET(VB) 和暦の表示方法について

    ASP.NET VB  データに登録された日付日付をWebページに和暦で表示する方法 について以下のようにデータベースから sqlDatasource1 と FormView1 を組み合わせ入力年月日を取得し Formに表示したいのですが、西暦表示になってしまいます。 教えてください。 'システム和暦年月日表示 Dim cult As System.Globalization.CultureInfo = New System.Globalization.CultureInfo("ja-JP") cult.DateTimeFormat.Calendar = New System.Globalization.JapaneseCalendar     DIM YMD AS Datetime YMD = (CType(FormView1.FindControl("入力年月日Label"), Label)).Text me.txYMD.text = YMD.ToString("ggyy年MM月dd日", cult)

  • VB6.0からVB2008移植時のStringの使用方法

    初歩的な質問だと思うのですが色々調べてもわからなかったのでご教授願います。 VB6.0からVB2008にプログラムを移植しているのですが以下の部分の修正方法がわかりません。 元(VB6.0)のソース Dim strStart, strEnd As String strStart = Format( data.Start(0), "0.0" ) strEnd = Format( data.End(0), "0.0" ) Label.Caption = strStart & "-" & strEnd 'data.Start/data.EndはSingleの配列 VB2008のソース Dim strStart As String Dim strEnd As String strStart = VB6.Format( data.Start(0), "0.0" ) strEnd = VB6.Format( data.End(0), "0.0" ) Label.Caption = strStart & "-" & strEnd 'VB6.Format~はソースをUpGradeしたときに自動で変換されました VB2008のstrStartに設定する時点でエラー('System.NullReferenceException' の初回例外が DataRcvSample.exe で発生しました。)となりstrStartがNothingなのがいけないところまではわかったのですが、Newを使ってどのように設定すればいいのかがわかりません。 VB自体まだ2週間位しか触っていない初心者なのですが、急ぎの仕事で勉強する時間がなく、どうすればいいのか困っています。 修正方法をご教授願います。

  • VS2012での\(円マーク)とバックスラッシュ

    VS2012のVBでコードを書きはじめました。OSはWin7(x32) 日本語です。 ファイルを呼び出そうと思っても呼べずに困っています。 FileName = "c:\textfile.txt" ret = LoadFile(FileName) としたときに、”textfile.txt“にアクセスできないのは、デバッグモードで実行したときに”\”がバックスラッシュとして扱われているからではないかと疑っています。 原因を探っていくうちに下記を疑い始めました。 Dim FileName As String FileName = "\" として、デバッグモードでFileNameの値を見ると円マークではなくバックスラッシュになっています。 しかし、FileNameの値をテキストボックスに出力させると円マークです。 (1)このような状態でもパス名に問題は無いのでしょうか ⇒どちらも同じASCIIコード92だから、内部で92を渡すだけだから問題ない? (2)Visual studio内でキーボードを選択する部分があるのでしょうか?

  • DataGridViewで、選択した行の値を取得したい。

    VB2005環境です。 VB2005で、選択した行の、特定の列から値を取って、 テキストボックスに出力したいと思っています。 Itemプロパティかと思い、 TxtBox1.Text = Me.DataGridView1.Item _(0,Me.DataGridView1.CurrentRow.Index).ToString と記述してみました。1列目の、選択した行と交わるセルの 値が取れるかと思いきや、うまく取得できません。 方法を教えていただけないでしょうか? よろしくお願いします。

  • DateTimePickerに値を入れたいのですが…

    VB2005環境です。 DateTimePickerコントロールに値を入れたいのですが、 うまくいきません。 コードとしては、下記のような記述をしました。 DateTimePicker.Value = CDate(Format(Me.fg.Item(Me.fg.Row, 2).ToString, "0000/00")) FlexGrid(FlexGrid.Net)から取得した値を0000/00の形に 直そうとしたのですが…。 ((Me.fg.Item(Me.fg.Row, 2).ToStringをウォッチしてみますと、 String型で200707と値が入っています)。 代入の方法をご教授いただけないでしょうか? よろしくお願いします。

  • エクセルVBAのユーザーフォームにセルデータを

    Excel2007を使っています。 VBA初心者ですがユーザーフォームのテキストフォームにエクセル内のセルデータを表示させたいと考えています。 以下のコードをユーザーフォームのコードに書いてユーザーフォームを走らせましたがユーザーフォームは表示するのですがデータがまったく表示されません。 どなたかご教授いただけませんでしょうか。 Sub Farst() Dim Data1 As String Dim Data2 As String Dim Data3 As String Dim Data4 As String Dim Data5 As String Dim Data6 As String Dim Data7 As String Dim Data8 As String Dim Data9 As String Dim Data10 As String Dim ActiveRow As String ActiveRow = 4 With Worksheets("MDH,MDO") Data1 = .Cells(ActiveRow, 1) Data2 = .Cells(ActiveRow, 2) Data3 = .Cells(ActiveRow, 3) Data4 = .Cells(ActiveRow, 4) Me.TextBox1連番.Text = Data1 Me.TextBox2品番.Text = Data2 Me.TextBox3品番2.Text = Data3 Me.TextBox4品番3.Text = Data4 End With End Sub

専門家に質問してみよう