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

解決


ゆり  2004-12-09 06:45:22  No: 118123

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


Say  2004-12-09 07:16:25  No: 118124

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


oku  URL  2004-12-09 07:19:33  No: 118125

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


ゆり  2004-12-10 07:12:30  No: 118126

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

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


oku  URL  2004-12-10 07:45:05  No: 118127

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


Say  2004-12-10 22:04:32  No: 118128

こんなかんじ

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-11 08:11:16  No: 118129

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

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


oku  URL  2004-12-11 08:52:52  No: 118130

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-16 07:16:30  No: 118131

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加