
今いろいろ検索して探していたのですが全く見つかりませんでした。
お願いしたいことは
まずtest.txtというファイルがあります。
内容は
2005/11/1,10,23.5
2005/11/1,11,22.5
という感じで日付,時間,温度で一行一行改行という感じになっています。
この中からVBのcomboboxを使って年、月、日にち、時間を別々に指定してそれにすべて一致する行をラベルに表示させたいのです。
私は今高校1年でPICNICというものを作って温度を計測、記録、読み出しをやりたいんですが計測、記録はできています。後読みだしだけです。よろしくお願いします。
No.4ベストアンサー
- 回答日時:
こんにちは。
KenKen_SP です。#3 を投稿した時点でサンプルコードを書いていたのですが、レスが無いけど、
折角なので、アップしておきます。VB のバージョンが違っていたら書き直し
て下さい。うまくいくといいですね。
あとは、適当にエラー処理をいくつか入れておきましたが、厳密にはしていま
せん。
Private Sub Command1_Click()
Dim datDATE As Date
Dim strDATE As String
Dim strKWRD As String
Dim n As Long
Dim strFILE As String
Dim strBUF As String
Dim aryBUF As Variant
Dim aryRESULT As Variant
Dim strFILE_FULLPATH As String
'データファイルのフルパス
strFILE_FULLPATH = App.Path & "\test.txt"
'Combobox コントロールからシリアル値生成
On Error Resume Next
datDATE = DateSerial(cmbYEAR.Text, cmbMonth.Text, cmbDay.Text)
If Err.Number > 0 Then
MsgBox "有効な日付ではありません", vbCritical
Exit Sub
End If
On Error GoTo 0
'日付書式化
strDATE = Format$(datDATE, "yyyy/m/d")
'検索キー生成---こんな感じ→"2005/11/2,10,"
strKWRD = strDATE & "," & cmbTime.Text & ","
'データのバッファサイズを求める
On Error Resume Next
strBUF = Space(FileLen(strFILE_FULLPATH))
'データファイルが無い場合のエラートラップ
If Err.Number > 0 Then
MsgBox "データファイルが見つかりません", vbCritical
On Error GoTo 0
Exit Sub
End If
On Error GoTo 0
'データファイルオープン
n = FreeFile()
Open strFILE_FULLPATH For Binary As #n
Get #n, , strBUF
Close #n
'この辺から VB6 からの関数を使っています
'Split 関数を使って改行コード(vbCrLf) でレコード単位に配列化
aryBUF = Split(strBUF, vbCrLf)
'配列内を検索
aryRESULT = Filter(aryBUF, strKWRD, True, vbTextCompare)
'結果表示
If UBound(aryRESULT) = -1 Then
MsgBox "該当データなし"
Else
'要素ごとに分割が必要なら Split 関数で「カンマ」で分割
'して、ラベルのCaptionに設定すれば良いでしょう
MsgBox aryRESULT(0)
End If
Erase aryRESULT
Erase aryBUF
End Sub
No.3
- 回答日時:
こんにちは。
KenKen_SP です。> 簡単にプログラムを書いてもらえませんか...
VB のバージョンでコードが変わるし、そもそも Excel VBA の話かもしれないし、、、
読み込みのロジックは既に示されています。
ちょっと厳しい話になりますが、その上でサンプルコードを望むなら、少なくともあなたの開発環境を具体的に提示する必要がありますよ。例えば、VB6 とか VB.NET とか。
VB6 ならバイナリでファイル全体を読み込んでから Split 関数を使って改行コードで配列化し、Filter 関数で配列内を検索する方法がありますね。
VB5 以前なら、配列内をループさせて検索しなければなりませんが、Wendy02 さんの InStr 関数で比較する方法が良いと思います。
VB.NET は触ったことが無いので、よく分かりません。
あと、
> 2005/11/1,10,23.5
こういうデータの仕様もきちんと説明した方が良いです。例えば、
・日付: yyyy/mm/dd なのか yyyy/m/d なのか?
・時刻: 24時間表記?
などの情報も必要だと思いますよ。
No.2
- 回答日時:
こんにちは。
そういう内容なら、一般のアプリケーション・ソフトで良いような気がしますが、
VBなら、
ComboBox で、作り出した、検索textで、Open ~ For Input で、Line Input した各テキスト行を、InStr(テキストライン,検索text) >0 で検索し、ヒットしたものを、取り出せばよいと思います。
また、曖昧な内容になると、正規表現を使うことになるでしょうね。
もしお時間がありましたら簡単にプログラムを書いてもらえませんか?私はVB始めたばかりなのでまだ使い慣れてないものですいません。
よろしくお願いします
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(開発・運用・管理) おんどとりWebStorage APIから温度情報を取得し表示したい 2 2023/08/03 09:53
- その他(ビジネス・キャリア) 営業冷蔵庫において保管温度証明書に記載する校正温度の表記について 2 2022/06/24 13:54
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- その他(コンピューター・テクノロジー) Power Shellコマンドで作成日時を一括シフトする方法 3 2022/10/21 12:37
- 食器・キッチン用品 温度計について 温度計を買う予定で、欲しい機能としては、温度が300度以上、制度1度以下が1度、測定 2 2022/05/06 16:02
- Excel(エクセル) 列を自動で追加したい 3 2022/07/11 12:58
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/08 11:02
- Visual Basic(VBA) VBA 改行コードの取り方 1 2022/03/22 14:14
- Excel(エクセル) Excel、同じフォルダ内のExcelファイルの特定シートのみを1つのファイルに集約したい 8 2022/09/07 15:12
- その他(暮らし・生活・行事) 賃貸契約前 最初の間取り図との相違があります 2 2022/07/19 20:55
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
配列の格納方法
-
CheckBoxの配列化
-
VBA 変数名に変数を使用したい。
-
Dir関数で読み取り順を操作でき...
-
配列の中から最大値だけ取り出...
-
VB6.0からVB.NETへの移行
-
pictureboxの名前を変数で設定...
-
VBAの構造体について
-
vb2008 コントロール配列
-
配列について
-
レコードセットの中身を配列に...
-
VB上でのレコードセットの扱い...
-
C#でbyte配列から画像を表示さ...
-
エクセル(VBA)の空白配列の削除...
-
Dirで取得したFile名をTblに書...
-
VB.NETにて、構造体へデータを...
-
vba フィルター 複数条件 3つ以...
-
OutOfMemoryExceptionの回避策...
-
ファイル内にある文字列を検索...
-
VBで重複しているデータをユニ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
vba フィルター 複数条件 3つ以...
-
C#でbyte配列から画像を表示さ...
-
Dir関数で読み取り順を操作でき...
-
エクセルでXY座標に並べられた...
-
配列のペースト出力結果の書式...
-
定数配列の書き方
-
大量の変数を定義するにはどう...
-
構造体配列の特定のメンバーをF...
-
Redim とEraseの違いは?
-
複数のtextboxの処理を一括で行...
-
VB.NETの配列にExcelから読み込...
-
COBOLの基本的な事なので...
-
Excel2010のinputboxで複数デー...
-
VBAでMODE関数をつくる
-
レコードセットの中身を配列に...
-
ReDim PreserveよりもReDimが遅い
-
EXCELを使って、アクセスログを...
-
配列の中の最大値とそのインデ...
-
VB6のメモリ解放に関して
おすすめ情報