フレキシブルグリッドで・・・

解決


ゆり  2004-12-08 21:45:22  No: 118123  IP: [192.*.*.*]

誰か教えてください。困っています。
複数のテキストボックスから項目をまとめてひとつのセルに入れました。
でもグリッドから呼び出してまたテキストボックスに入れ直す時、
どうやって項目ごとにわけるのですか?
「平成」「○年」「○月」「○日」→それぞれのコンボボックスまたはテキ                                  ストボックスで入力                
これをグリッド内のセルで一つにまとめます。「平成○年○月○日」
そして、またこれを入力した通りにコンボボックス、テキストボックスにわけて表示させたいのです。
よろしくお願いします。

編集 削除
Say  2004-12-08 22:16:25  No: 118124  IP: [192.*.*.*]

まとめたものを分けるより、
まとめる前の値をユーザ定義型の配列変数にでも
保持しておくほうが簡単かと。

編集 削除
oku  URL  2004-12-08 22:19:33  No: 118125  IP: [192.*.*.*]

MsgBox Format(Date, "ggg")
    MsgBox Format(Date, "e") & "年"
    MsgBox Format(Date, "m") & "月"
    MsgBox Format(Date, "d") & "日"
こんなのでどうでしょう?

編集 削除
ゆり  2004-12-09 22:12:30  No: 118126  IP: [192.*.*.*]

>Sayさん
ありがとうございます。
配列変数に保持するとはどういう意味ですか?

>okuさん
ありがとうございます。
Format、Dateを使えばセル内の年月日もまとまるのですか?
早速試してみたいと思います。

編集 削除
oku  URL  2004-12-09 22:45:05  No: 118127  IP: [192.*.*.*]

>Format、Dateを使えばセル内の年月日もまとまるのですか?
んっ?まとめるではなく、分けたいんじゃないんですか?

編集 削除
Say  2004-12-10 13:04:32  No: 118128  IP: [192.*.*.*]

こんなかんじ

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

編集 削除
ゆり  2004-12-10 23:11:16  No: 118129  IP: [192.*.*.*]

>okuさん
ありがとうございます。
そうなんです。わけたいのです。
グリッド内でで一つにまとめて、それをまた分けようと思っています。
もしかしたら、私は複雑に考えているのでしょうか?

>Sayさん
ありがとうございます。
このソースを流れを見ながら勉強してみたいと思います。

編集 削除
oku  URL  2004-12-10 23:52:52  No: 118130  IP: [192.*.*.*]

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

編集 削除
ゆり  2004-12-15 22:16:30  No: 118131  IP: [192.*.*.*]

okuさん、Sayさん
解決することが出来ました。
有難う御座いました。

編集 削除