• 締切済み

特定行の背景色を変えたいのですが

vb6で組んでおりますがformの明細行はListView1です。 If ds.RecordCount > 0 Then Do Until ds.EOF Set oListItem = ListView1.ListItems.Add() oListItem.Text = ds.Fields("商品コード").Value oListItem.SubItems(1) = ds.Fields("JANコード").Value oListItem.SubItems(2) = ds.Fields("商品名").Value oListItem.SubItems(3) = ds.Fields("規格").Value if oListItem.SubItems(1) = '' then oListItem.ForeColor = RGB(250, 250, 250) oListItem.BackColor = RGB(250, 180, 180)-->(1)コンパイルエラー endif     ds.MoveNext Loop (1)コンパイルエラー⇒メソットが見つかりません。 がどうしても解消できません・・・初心者です。 ご教示のほどよろしくお願いします。

みんなの回答

回答No.1

標準機能ではできないので、API を使います。 http://www.mitene.or.jp/~sugisita/api_comct.html の、「リストビューのカスタムドロー」にサンプルがあります。

関連するQ&A

  • Excel vba ListVew 右揃え

    Excel vba ユーザーフォームにListVewを作成し、数値の部分は「,」付で右揃えにしたいのですが、全て左揃えで表示されます。右揃えにするにはどうしたら良いでしょうか? 以下のコードで使用しています。   'ListVew1に書出し Set rng = ActiveSheet.Cells(1, 1).CurrentRegion With 実績データ確認.ListView2 For i = 2 To rng.Rows.Count .ListItems.Add.Text = rng(i, 18).Value k = 1 For j = 19 To 28 .ListItems(i - 1).SubItems(k) = rng(i, j).Value .ListItems(i - 1).ListSubItems(k).ForeColor = rng(i, j).Font.Color k = k + 1 Next Next End With

  • 改行コード検索

    VB6.0について質問です。 ある文字列のデータの中にある改行コードをみつけ それを取り除いた文字データだけを取得したいのですがうまくいきません>< 現在実行しているコードは以下の通りです。 For ixA = 1 To Len(ds.Fields(tmp1).Value) If Mid(ds.Fields(tmp1).Value, ixA, 2) = vbCrLf Then MOJI = MOJI & Mid(ds.Fields(tmp1).Value, ixA, ixA - 1) & Mid(ds.Fields(tmp1).Value, ixA + 1, ixA) End If Next ixA 文字列を結合するところでわけがわからなくなりました><; 正しいコードか他のやり方をご存知の方ご回答よろしくお願いします!

  • シートからのListViewへのやり方

    はじめまして、宜しくお願い致します。 シートからのListViewへの読み込みで 早くListViewへ表示させたいのですが よろしければご教授できればと質問させて 頂きました。 下記のコードは現在利用しているコードです。 Private Sub UserForm_Initialize() With ListView1 .View = lvwReport .FullRowSelect = True .AllowColumnReorder = True .Gridlines = True .AllowColumnReorder = True '列幅の変更を許可 .CheckBoxes = True 'チェックボックスの追加 '.ForeColor = vbBlue .ColumnHeaders.Add , , "NO", 70 .ColumnHeaders.Add , "B", "名前", 100 .ColumnHeaders.Add , "C", "性別", 50 .ColumnHeaders.Add , "D", "血液型", 50 .ColumnHeaders.Add , "F", "生年月日", 100 For i = 4 To Cells(Rows.Count, "B").End(xlUp).Row Application.ScreenUpdating = False With .ListItems.Add .Text = Format(Cells(i, "B"), "0") '.Text = Right(Space(3) & .Text, 3) .SubItems(1) = Cells(i, "C") .SubItems(2) = Cells(i, "D") .SubItems(3) = Cells(i, "E") .SubItems(4) = Cells(i, "F") End With Next End With Application.ScreenUpdating = True

  • アクセスのレポートにて明細行の色付け

    アクセスのVisualBasicで、明細行をある項目毎に色分けをいたいのですが、一応参考書にて If Me!テキスト1 > Me!テキスト2 Then Me.Section(acDetail).BackColor = RGB(200, 200, 200) Else Me.Section(acDetail).BackColor = RGB(255, 255, 255) End If    というようなことまではできたのですが、 同一レコード内ではなく、前レコードと対比して異値なら色付   という方法をご存知の方よろしくお願いします。

  • Accessから値を抽出しようとするとフリーズする

    Excelからマクロを用いてAccessファイルからデータを拾おうとしています。 方法は、Access内のテーブルを参照して検索対象の値1がフィールド内にあれば、その行の値2を抽出してくるといったものです。 検索対象の数は可変です。 そこでコードを書いてみたところ 抽出件数が2件以上なら正常に動作するのですが 1件、0件だと動作せず、フリーズしてしまいます。 何が原因で、どう書き直せばよいのでしょうか? 以下、コードです。 Private Sub OKButton_Click() '選択し、OKボタンを押した時 Dim p As Long Dim cnt As Long Range(Cells(45, 4), Cells(114, 6)).ClearContents 'D45~E115のセルを削除(二回目使用時にデータが残ってる為) cnt = ListView1.ListItems.Count '今まで選択してリストビューに追加された対象数を出し、変数へ。 For p = 1 To cnt Cells(44 + p, 4).Value = ListView1.ListItems.Item(p) Cells(44 + p, 5).Value = ListView1.ListItems.Item(p).SubItems(1) Cells(44 + p, 6).Value = ListView1.ListItems.Item(p).SubItems(2) Next p 'リストビューに追加された対象を、D45~E115に書き込み Dim Sql As String Dim i As Long Dim j As Long Dim k As Long Dim m As Long Dim n As Long Call DBconnect(True) Sql = _ "select Aコード,Bコード " & _ "from テーブル" '--- adoRsにSELECT文を入れ、絞り込む adoRs.Open Sql, adoCn, adOpenKeyset ' --- j:選択した対象の数を取得 k:Access内の選択した対象のデータ数を取得 n:列数 j = Worksheets("選択").Range("F45").End(xlDown).Row k = adoRs.Fields.Count n = 1 '--- Aコードが一致する行を選択シートの下部分へ書き込み。 ' --- 45 to jの45は、選択シートの選択した対象をセルに出力した場所が45行目の為。 ' --- cell(j+n,6)は、選択対象数を起点にBコード(値2)一つ毎に数を足していく、6はF列 Do Until adoRs.EOF For i = 45 To j If Worksheets("選択").Cells(i, 6).Value = adoRs!Aコード Then For m = 1 To k Worksheets("選択").Cells(j + n, 6) = adoRs.Fields!Bコード Next m n = n + 1 End If Next i adoRs.MoveNext Loop '後始末 adoRs.Close: Set adoRs = Nothing adoCn.Close: Set adoCn = Nothing

  • エラーが出ます。 急いでいます。

    今までちゃんと動いていたところに以下のソースをつけた所エラーが出てきました。 何かおかしなところがあるのでしょうか? If ADORS.Fields("SAI").Value < 0 Then .TextMatrix(intRow, enmCOL.SAI) = Format(ADORS.Fields("SAI").Value, "#,##0.#0") ElseIf ADORS.Fields("SAI").Value > 0 Then .TextMatrix(intRow, enmCOL.SAI) = Format(ADORS.Fields("SAI").Value, "+#,###.#0") ElseIf ADORS.Fields("ZAIKONUM").Value = ADORS.Fields("ITEMNUM").Value Then .TextMatrix(intRow, enmCOL.SAI) = ADORS.Fields("SAI").Value End If お願いします。

  • アクセスのレポートの背景を日付で変更したい

    アクセス2002を使用しています。 レポートで計測日、計測場所、品名、大きさ・・・・など項目があり、 計測場所が大阪で、計測日が2012/6/27~今日まで(Date())のデータがある行の 背景色を変更したいのです。 計測場所が大阪の場合は簡単に出来たのですが 日付が入ると訳が分からなくなってしまいました。 計測場所のみの場合下記のようなVBAになっています。 Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) If Me!計測場所 = "大阪" Then Me.Section(acDetail).BackColor = RGB(255, 0, 255) Else Me.Section(acDetail).BackColor = RGB(255, 255, 255) End If End Sub

  • ExcelVBAで部分一致(*)をしたい

    以下のコードで部分一致(*)をさせようとしたのですが、 コンパイルエラーのメッセージが出てしまいます。 どうしたらいいのでしょうか。 よろしくお願いします。 test = Cells(2, 3).Value test2 = Cells(1, 3).Value If * & test & * = test2 then …

  • VB.NETで色を比較するIF文を作成したいのですが

    if Me.BackColor = Color.AliceBlue then "処理" end if 以上のような感じで色を比較するIF文を作りたいのですが、比較するとコンパイルエラーになってしまいます。 Me.BackColor = Color.AliceBlueと設定はできるの ですが・・・ 以上の比較の仕方がわかる方いましたら教えて下さい。

  • ListViewで条件式を使う方法

    Visual Basic 2010でDatasetとListviewを使ってプログラムを作成しています。 DatasetのデータをListviewに表示させるプログラムは下記のコードで完成しました。 ******************************* Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load With ListView1 .Columns.Add("date", 40, HorizontalAlignment.Left) .Columns.Add("no", 40, HorizontalAlignment.Left) .Columns.Add("住所", 100, HorizontalAlignment.Left) showlist() End With End Sub Private Sub showlist() Try 住所TableAdapter.Fill(Kz526DataSet.住所) Catch ex As Exception MessageBox.Show(ex.Message, "住所テーブル") End Try With Kz526DataSet.住所 For i As Integer = 0 To .Rows.Count - 1 ListView1.Items.Add(.Rows(i)("date"), (i)) ListView1.Items(i).SubItems.Add(.Rows(i)("no")) ListView1.Items(i).SubItems.Add(.Rows(i)("住所")) Next End With End Sub ************************************ 次に、Datasetのデータの内一部だけListviewに表示させることにしました。そのため、テキストボックスを設けて、その日付と同じデータをListviewに表示させます。 テキストボックスを設けて、ボタンをクリックしてデータをListviewに表示させようとしたコードです。 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load With ListView1 .Columns.Add("date", 40, HorizontalAlignment.Left) .Columns.Add("no", 40, HorizontalAlignment.Left) .Columns.Add("住所", 100, HorizontalAlignment.Left) showlist() End With End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click 住所TableAdapter.Fill(Kz526DataSet.住所) With Kz526DataSet.住所 For c As Integer = 0 To .Rows.Count - 1 If TextBox1.Text = Kz526DataSet.住所.Rows(c)("data") Then ListView1.Items.Add(.Rows(c)("date"), (c)) ListView1.Items(c).SubItems.Add(.Rows(c)("no")) ListView1.Items(c).SubItems.Add(.Rows(c)("住所")) End If Next End With End Sub *************************************** このコードでは、条件式とListViewの関係がいまくいきません。エラーメッセージは次の様に表示されます。 「'3' の InvalidArgument=Value は 'index' に対して有効ではありません。 パラメーター名: index」 いろいろ試行錯誤してみましたところ、「ListView1.Items(c).SubItems.Add(.Rows(c)("no"))」のところで止まります。 if文では、Thenのあとは1行しか書けないのでしょうか。書き方をご指導ください。

専門家に質問してみよう