掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
配列状データをまとめてシフトするには? (ID:99795)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
メモリコピーはお奨めできません。 ユーザー定義型メンバのアライメント調整によって、 Len(x) = LenB(x) になるようなデータ型の場合に問題が出ますし。 そもそも、ループを使うのは真っ当な解決策だと思うのですが、 それを嫌うのには、何か理由があるのでしょうか? > 64kByteまでしか定義できないことと ユーザー定義型でなければいけないのでしょうか? (クラスでは駄目ですか?) たとえば ADODB.Recordset なら、ソートも検索も簡単に書けますよ。 Option Explicit Private GraphMemoryData As ADODB.Recordset Private Sub Form_Load() 'GraphFormat 型のデータ構造を定義 Set GraphMemoryData = CreateGraphFormat() '100件のランダムデータを追加 FillRandom GraphMemoryData, 100 '確認用に画面に表示 Set DataGrid1.DataSource = GraphMemoryData Command1.Caption = "ダンプ" Command2.Caption = "正RateE,逆RateM" Command3.Caption = "逆Time" End Sub Private Sub Command1_Click() '現在の内容を、イミディエイト ペインに出力 GraphMemoryData.MoveFirst Debug.Print GraphMemoryData.GetString(, , "|", vbCrLf) End Sub '★ ソート手順 ★ Private Sub Command2_Click() 'RateE の昇順、RateM の降順にソート GraphMemoryData.Sort = "RateE ASC, RateM DESC" End Sub Private Sub Command3_Click() 'Time の降順にソート GraphMemoryData.Sort = "Time DESC" End Sub '★ GraphFormat ユーザー定義型のかわり ★ Private Function CreateGraphFormat() As ADODB.Recordset Set CreateGraphFormat = New ADODB.Recordset With CreateGraphFormat.Fields .Append "Time", adDate .Append "RateE", adSingle .Append "RateM", adSingle .Append "RateTcE", adSingle .Append "RateTcM", adSingle End With CreateGraphFormat.Open End Function ' count 件のランダムなデータを生成 Private Sub FillRandom(ByVal rs As ADODB.Recordset, ByVal count As Integer) Dim n As Integer Dim d As Date d = Now For n = 1 To count rs.AddNew _ Array("Time", "RateE", "RateM", "RateTcE", "RateTcM"), _ Array(DateAdd("s", n, d), Random(), Random(), Random(), Random()) Next End Sub '-50.0 〜 +50.0 の範囲の乱数を返す Private Function Random() As Single Random = Int(500 * Rnd() + -500) / 10 End Function
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.