誰か教えてください。困っています。
複数のテキストボックスから項目をまとめてひとつのセルに入れました。
でもグリッドから呼び出してまたテキストボックスに入れ直す時、
どうやって項目ごとにわけるのですか?
「平成」「○年」「○月」「○日」→それぞれのコンボボックスまたはテキ ストボックスで入力
これをグリッド内のセルで一つにまとめます。「平成○年○月○日」
そして、またこれを入力した通りにコンボボックス、テキストボックスにわけて表示させたいのです。
よろしくお願いします。
まとめたものを分けるより、
まとめる前の値をユーザ定義型の配列変数にでも
保持しておくほうが簡単かと。
MsgBox Format(Date, "ggg")
MsgBox Format(Date, "e") & "年"
MsgBox Format(Date, "m") & "月"
MsgBox Format(Date, "d") & "日"
こんなのでどうでしょう?
>Sayさん
ありがとうございます。
配列変数に保持するとはどういう意味ですか?
>okuさん
ありがとうございます。
Format、Dateを使えばセル内の年月日もまとまるのですか?
早速試してみたいと思います。
>Format、Dateを使えばセル内の年月日もまとまるのですか?
んっ?まとめるではなく、分けたいんじゃないんですか?
こんなかんじ
Option Explicit
Private Type DateType
lngRow As Long
strGengo As String
lngSeireki As Long
lngYear As Long
lngMonth As Long
lngDay As Long
End Type
Private udtDateArray() As DateType
Private lngDateArrayCnt As Long
Private Sub Command1_Click()
ReDim Preserve udtDateArray(lngDateArrayCnt)
With udtDateArray(lngDateArrayCnt)
.lngRow = MSFlexGrid1.Rows - 1
.strGengo = cmbGengo.Text
.lngSeireki = cmbGengo.ItemData(cmbGengo.ListIndex)
.lngYear = txtYear.Text
.lngMonth = txtMonth.Text
.lngDay = txtDay.Text
MSFlexGrid1.AddItem .strGengo & .lngYear & "年" & .lngMonth & "月" & .lngDay & "日"
End With
End Sub
Private Sub Command2_Click()
With udtDateArray(UBound(udtDateArray))
MsgBox "最後に入力した年 = 西暦" & CStr(.lngSeireki + .lngYear) & "年"
End With
End Sub
Private Sub Form_Load()
Dim i As Long
Dim AryGengo As Variant
Dim ArySeireki As Variant
lngDateArrayCnt = 0
AryGengo = Array("平成", "昭和", "大正", "明治")
ArySeireki = Array(1988, 1925, 1911, "1867")
cmbGengo.Clear
For i = 0 To UBound(AryGengo)
cmbGengo.AddItem AryGengo(i)
cmbGengo.ItemData(cmbGengo.NewIndex) = ArySeireki(i)
Next
cmbGengo.ListIndex = 0
End Sub
>okuさん
ありがとうございます。
そうなんです。わけたいのです。
グリッド内でで一つにまとめて、それをまた分けようと思っています。
もしかしたら、私は複雑に考えているのでしょうか?
>Sayさん
ありがとうございます。
このソースを流れを見ながら勉強してみたいと思います。
Sayさんとは違ったアプローチで!
どちらが良いかは、ゆりさんが決めてください。
Option Explicit
'テキストボックスから選択セルにまとめて入れる
Private Sub Command1_Click()
MSFlexGrid1.Text = Text1.Text & Text2.Text & Text3.Text & Text4.Text
Text1.Text = vbNullString
Text2.Text = vbNullString
Text3.Text = vbNullString
Text4.Text = vbNullString
End Sub
'選択セルからテキストボックスに
Private Sub Command2_Click()
Text1.Text = Format(MSFlexGrid1.Text, "ggg")
Text2.Text = Format(MSFlexGrid1.Text, "e") & "年"
Text3.Text = Format(MSFlexGrid1.Text, "m") & "月"
Text4.Text = Format(MSFlexGrid1.Text, "d") & "日"
End Sub
Private Sub Form_Load()
'Date関数でとりあえず現在日付を入れてみました
Text1.Text = Format(Date, "ggg")
Text2.Text = Format(Date, "e") & "年"
Text3.Text = Format(Date, "m") & "月"
Text4.Text = Format(Date, "d") & "日"
End Sub
okuさん、Sayさん
解決することが出来ました。
有難う御座いました。