[リストへもどる]
一括表示

投稿時間:2003/12/17(Wed) 10:30
投稿者名:プリン
Eメール:
URL :
タイトル:
MSFlexGridの一つの固定セルを赤文字にしたいんですが…
    MSFlexGrid1.ForeColorFixed = vbRed
と書くと、固定セル全ての項目文字が赤くなってしまうのですが、
一つだけ赤くすることって可能ですか?

□□□←ここだけ赤くする□□

投稿時間:2003/12/17(Wed) 10:56
投稿者名:ak
Eメール:
URL :
タイトル:
Re: MSFlexGridの一つの固定セルを赤文字にしたいんですが…
>     MSFlexGrid1.ForeColorFixed = vbRed
> と書くと、固定セル全ての項目文字が赤くなってしまうのですが、
> 一つだけ赤くすることって可能ですか?
>
> □□□←ここだけ赤くする□□

こんにちは。

こういうことでしょうか?

With MSFlexGrid1
    .Col = 1
    .Row = 0
    .CellForeColor = vbRed
End With

投稿時間:2003/12/17(Wed) 11:24
投稿者名:プリン
Eメール:
URL :
タイトル:
Re^2: MSFlexGridの一つの固定セルを赤文字にしたいんですが…

> With MSFlexGrid1
>     .Col = 1

>     .ForeColor = vbRed
> End With

ありがとうございます。
固定セルは解決したのですが、赤文字にした列の非固定セルの文字も全て赤くしたいのですが、
上記のやり方で試してみましたが、全ての非固定セル文字が赤くなってしまいました。
なにかやり方はありますか?

投稿時間:2003/12/17(Wed) 11:45
投稿者名:ak
Eメール:
URL :
タイトル:
Re^3: MSFlexGridの一つの固定セルを赤文字にしたいんですが…
>
> > With MSFlexGrid1
> >     .Col = 1
>
> >     .ForeColor = vbRed
> > End With
>
> ありがとうございます。
> 固定セルは解決したのですが、赤文字にした列の非固定セルの文字も全て赤くしたいのですが、
> 上記のやり方で試してみましたが、全ての非固定セル文字が赤くなってしまいました。
> なにかやり方はありますか?

よく見てください。

With MSFlexGrid1
    .Col = 1
    .Row = 0
    .CellForeColor = vbRed
End With

ForeColorプロパティではなくCellForeColorプロパティです。

それとCellForeColorプロパティは選択範囲の文字色を変更しますので
Col、Rowプロパティをそれぞれ設定してください。

投稿時間:2003/12/17(Wed) 11:56
投稿者名:プリン
Eメール:
URL :
タイトル:
Re^4: MSFlexGridの一つの固定セルを赤文字にしたいんですが…
はい。CellForeColor プロパティの方は、成功しました。
しかし、ForeColorプロパティで、非固定セルの特定の一列だけ(1行目から最終行まで)を
赤文字にしたいのですが、先ほどのやり方ですと、全ての列の文字が赤くなってしまいました。

なので、□□□■□□ このように■の文字だけを赤くできますか?
    □□□■□□
    □□□■□□
    □□□■□□

投稿時間:2003/12/17(Wed) 12:26
投稿者名:ak
Eメール:
URL :
タイトル:
Re^5: MSFlexGridの一つの固定セルを赤文字にしたいんですが…
> はい。CellForeColor プロパティの方は、成功しました。
> しかし、ForeColorプロパティで、非固定セルの特定の一列だけ(1行目から最終行まで)を
> 赤文字にしたいのですが、先ほどのやり方ですと、全ての列の文字が赤くなってしまいました。
>
> なので、□□□■□□ このように■の文字だけを赤くできますか?
>     □□□■□□
>     □□□■□□
>     □□□■□□

そういった場合はFillStyle、RowSel、ColSelの各プロパティを使用します。

FillStyleプロパティを1(flexFillRepeat)にする事によって選択した範囲に
変更内容が反映されるようになります。

あとはRow、Col、RowSel、ColSelプロパティを使用して範囲を指定してから
文字色を変更すれば良い訳です。

サンプルを記述しておきます。

Dim iTmp       As Integer

With MSFlexGrid1
   iTmp = .FillStyle
   .FillStyle = flexFillRepeat
   .Col = 1
   .Row = 1
   .ColSel = 1
   .RowSel = .Rows - 1
   .CellForeColor = vbBlue
   .FillStyle = iTmp
End With

投稿時間:2003/12/17(Wed) 12:51
投稿者名:プリン
Eメール:
URL :
タイトル:
Re^6: MSFlexGridの一つの固定セルを赤文字にしたいんですが…
今、サンプル通りやってみましたが、何も変わりませんでした。
なにがいけないのでしょうか?

投稿時間:2003/12/17(Wed) 13:01
投稿者名:ak
Eメール:
URL :
タイトル:
Re^7: MSFlexGridの一つの固定セルを赤文字にしたいんですが…
> 今、サンプル通りやってみましたが、何も変わりませんでした。
> なにがいけないのでしょうか?

設定順とかもサンプル通りなのでしょうか?

考えらる原因とすればCol、RowプロパティをColSel、RowSelプロパティを設定した後で
設定していないですか?
そうであれば選択範囲が解除されてしまいますのでCol、Rowで指定した範囲しか色が
変わりません。

Col、Rowプロパティを設定した後でColSel、RowSelプロパティを設定してください。

はずれていたらすみません。

投稿時間:2003/12/17(Wed) 13:23
投稿者名:プリン
Eメール:
URL :
タイトル:
Re^8: MSFlexGridの一つの固定セルを赤文字にしたいんですが…
設定順もサンプル通りでした。
Col、Rowプロパティを設定した後でColSel、RowSelプロパティ設定されていました。
でも、文字はみな黒のまんまでした。

投稿時間:2003/12/17(Wed) 13:53
投稿者名:ak
Eメール:
URL :
タイトル:
Re^9: MSFlexGridの一つの固定セルを赤文字にしたいんですが…
> 設定順もサンプル通りでした。
> Col、Rowプロパティを設定した後でColSel、RowSelプロパティ設定されていました。
> でも、文字はみな黒のまんまでした。

下のサンプルで試してみてください。

'(*.frm) フォームにMSFlexGrid,CommandButtonを各1個配置してください。
Option Explicit

Private Sub Form_Load()
    Dim ii  As Integer
    
    'フォーム初期設定
    With Me
        .Height = 3360
        .Width = 3780
    End With
    
    'ボタン初期設定
    With Command1
        .Caption = "色変更"
        .Height = 375
        .Width = 975
        .Top = 2580
        .Left = 15
    End With
    
    'グリッド初期設定
    With MSFlexGrid1
        .Height = 2535
        .Width = 4290
        .Top = 15
        .Left = 15
        .Cols = 4
        .Rows = 10
        For ii = 0 To 9
            .Col = 1
            .Row = ii
            .Text = "11111"
            .Col = 2
            .Row = ii
            .Text = "22222"
            .Col = 3
            .Row = ii
            .Text = "33333"
        Next ii
    End With
    
End Sub

Private Sub Command1_Click()
    Dim iTmp       As Integer
    
    '2列目の文字色を赤色に変更する
    With MSFlexGrid1
       iTmp = .FillStyle
       .FillStyle = flexFillRepeat
       .Col = 2
       .Row = 1
       .ColSel = 2
       .RowSel = .Rows - 1
       .CellForeColor = vbRed
       .FillStyle = iTmp
    End With
End Sub

投稿時間:2003/12/17(Wed) 14:21
投稿者名:プリン
Eメール:
URL :
タイトル:
Re^10: MSFlexGridの一つの固定セルを赤文字にしたいんですが…
わざわざこんなに長いプログラムありがとうございました。
ちょっとこれから用事があるので、また出来しだい返信いたします。
ほんとにありがとうございます!

投稿時間:2003/12/18(Thu) 09:45
投稿者名:プリン
Eメール:
URL :
タイトル:
Re^11: MSFlexGridの一つの固定セルを赤文字にしたいんですが…
おはようございます。
akさん!できました。
ながながありがとうございました★

投稿時間:2004/01/29(Thu) 00:50
投稿者名:寝タロ
Eメール:
URL :
タイトル:
MSFlexGridの一つの固定セルを赤文字にしたいんですが…
色々、見ていて勉強させて頂きました。

今、似た様な問題に当たっているのですが、

クリックする度に前回選択した行の文字色を
消して又、選びなおしたいのですが、初回はうまく動くのですが
2回目以降がクリックする度に赤の行が増えるだけで
うまくいきません。
出来れば、前回選択行を別に記憶せず
全体に対してカラー変更したいのですが、
よろしくお願いします。
Private Sub Grid2_Click()
Grid2.ForeColor = vbWhite

With Grid2
    .Col = 1
    .Row = Grid2.Row
    .ColSel = 11
    .RowSel = Grid2.Row
    .CellForeColor = vbRed
End With
End Sub

投稿時間:2004/01/29(Thu) 07:19
投稿者名:nobu
Eメール:
URL :
タイトル:
Re: MSFlexGridの一つの固定セルを赤文字にしたいんですが…
> クリックする度に前回選択した行の文字色を
> 消して又、選びなおしたいのですが、初回はうまく動くのですが
> 2回目以降がクリックする度に赤の行が増えるだけで
> うまくいきません。

デバッグモードで追跡していますか?
現在選択した行の保存の仕方に問題があるのでは?

> 出来れば、前回選択行を別に記憶せず

なぜ、そうするのですか?

> 全体に対してカラー変更したいのですが、

だったら全体の色を元に戻して下さい。
すでに範囲を指定する方法は出て来ていると思います。
行が多いと処理に時間が掛かったりする様になると思いますよ。

投稿時間:2004/01/30(Fri) 00:37
投稿者名:寝タロ
Eメール:
URL :
タイトル:
Re^2: MSFlexGridの一つの固定セルを赤文字にしたいんですが…
> > クリックする度に前回選択した行の文字色を
> > 消して又、選びなおしたいのですが、初回はうまく動くのですが
> > 2回目以降がクリックする度に赤の行が増えるだけで
> > うまくいきません。
>
> デバッグモードで追跡していますか?
> 現在選択した行の保存の仕方に問題があるのでは?
>

すいません、ご指摘有難うございました。
これが原因でした。


> > 出来れば、前回選択行を別に記憶せず
>
> なぜ、そうするのですか?
>

今、MSFlexGridが15枚程とテキストBOXが34こ、貼ってあるフォームが20こあるのですが、
今現在は、管理できるのですが、将来、フォームの数が増えるし、
1年後位に変更の可能性があるので、その時に他の人も含めて管理しやすい様に
スピードを犠牲にしてでも、出来るだけ簡単なコードにしておきたいのです。
本当は、早いのが一番なのですが。。

> > 全体に対してカラー変更したいのですが、
>
> だったら全体の色を元に戻して下さい。
> すでに範囲を指定する方法は出て来ていると思います。
> 行が多いと処理に時間が掛かったりする様になると思いますよ。

すいません、その方法でいかしていただきます。


こんな感じにおさまりました。

Dim D_Row As Long

D_Row = Grid2.Row
Grid2.Visible = False
With Grid2
    .Col = 1
    .Row = 0
    .ColSel = .cols - 1
    .RowSel = .rows - 1
    .CellForeColor = vbWhite
End With

With Grid2
    .Col = 1
    .Row = D_Row
    .ColSel = 11
    .RowSel = D_Row
    .CellForeColor = vbRed
End With
Grid2.Visible = True

すいません、都合のいい事ばかりいいまして。

本当に、助かりました。