1.1行選択してDblClickしたいのですが、
  今複数行選択できてしまいますので1行しか選択できないようにするには
  どうすればよいのか教えてください。
2.選択した行を色をかえているのですが、固定行は色がかわりません
  替えることはできないのでしょうか?
3.フォーカスがMSHFlexGridにあるときに
  ↑↓で選択行を移動したいのですがどうすればよいのか教えてください。
 

このQ&Aに関連する最新のQ&A

A 回答 (2件)

>1.1行選択してDblClickしたいのですが、...


MS-FLEXGRIDだとどうしてもドラッグで選択範囲が反転できてしまうようです。先の回答でもあるようにVS-FLEXGRIDを使用するとプロパティの設定で簡単にできるのですが、残念ながらMS-FLEXGRIDにはそのプロパティがありません。それを1行だけ選択にするひとつの方法としては、グリッドコントロールのMouseUpイベント及びKeyUpイベントに以下の記述を入れるとできるかと思います。(以下の例は、グリッドコントロールをGrid1とした場合)

If Grid1.Row <> Grid1.RowSel Then
Grid1.RowSel = Grid1.Row
End If

でも、質問にあるような「グリッド上でダブルクリックする」と複数選択は解除されて1行だけしか選択されないと思いますがどうでしょう。


>2.選択した行を色をかえているのですが、固定行は色がかわりません
固定行(列?)は、色が変わらないです。例えば固定列のプロパティ(FixedCols)を 0 で設定するとその行全体が選択されるようになります。

>フォーカスがMSHFlexGridにあるときに↑↓で選択行を移動したい
同じようにやってみましたがフォーカスがある場合、↑↓キーで移動できました。

とりあえずご質問の内容だけで動作確認していますのでもしもこの機能を追加するときは他への影響がないか十分なテストを行ってみてください。
    • good
    • 0

製品版(VS-FlexGrid)ならすべて出来ます。


MSHFlexGridは所詮VBのおまけで、機能が制限されています。

参考URL:http://www.boc.co.jp/support/database/P1_88.htm

この回答への補足

できないということですか?

VBの標準の機能だけで表形式で上記質問みたいなことが
できるなにかないのですか?

新たなOCXはつかいたくないので

補足日時:2001/11/22 15:11
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qテーブルリンク エクセルの4行目を先頭行にしたい

エクセルのデータをアクセスにテーブルリンクしたいのですが
エクセルの先頭行が4行目から始まります。
なおかつA1に文字が入ります。
(画像参照)

このエクセルデータをアクセスの
「テーブルのリンク」→ファイルを選ぶ
→ワークシートリンクウィザードが表示され、次のページに進み、
「先頭行をフィールド名として使う」にチェックを入れたいのですが、先頭行は4行目です。

この場合、どうすればエクセルの4行目を
アクセスのテーブルリンクの先頭行にできるのでしょうか?

エクセルのA1の文字を消去すれば自動的に4行目がアクセスで先頭行になりますが
エクセルの方は決まったフォーマットなのでA1の文字を消去することはできません。

ご回答よろしくお願いします。

Aベストアンサー

#1です

Excel ファイル側に手を入れられるのなら、#2さんの方がお勧めです。

なお、範囲名部分が行方向に増えるのなら、(Excel側で範囲を再設定)
何もせずに Access 側から変更を含めて値を得ることが出来るようですが、
列方向に範囲が広がった場合、 リンクの更新(RefreshLink)が必要みたいです。

嘘を言ってるかも知れないので、裏取りはしっかりとしてください。

QMSHFlexGridの選択行の表示方法

VB6でプログラミングしているVB初心者です。

MSHFlexGridでデータを表示し、行単位で選択表示をしたいのですが…

初期表示の画面では行単位での表示ができています。
が、カーソルを移動すると先頭のセルが選択表示にならないのです。

プロパティの設定は
 SelectionMode=1
 FixedCols=0

この状況を直すには、どのようにしたらよいのでしょうか?
ご存知の方、ご教授くださいますようお願いします。

Aベストアンサー

フレックスグリッドを選択し、右クリックでプロパティを出して下さい。
そして、最低限以下にしてみて下さい。行単位になると思います。
他のプロパティ値をいろいろ変えて確かめてみて下さい。

強調表示    1 - Alwais
アクティブセル 0 - None
設定対象    0 - Single
選択モード   1 - By Row

Qエクセルで、条件を指定した行数のカウントについて

エクセルにて、条件に合致する行数のカウントを行うことは出来ますでしょうか。

添付画像のようなエクセルファイルにて、各日毎に「AAA」を含む行は何行あり、「BBB」を含む行は何行あるかをカウントしたいです。

添付のエクセルであれば、A列が「10月1日」でB列に「AAA」を含む行は○行という条件でカントが出来れば実現可能とは思いますが、
こういったカウントの仕方がそもそもエクセルで出来るのかどうか知りたいです。

もし、エクセル以外の方法で可能なのであれば、その方法も教えていただけるとありがたいです。

Aベストアンサー

SUMPRODUCT関数などを使った場合にはデータ数が多くなった場合には計算が重くなります。
作業列を使った方法がよいでしょう。
お示しのデータがシート1に有るとしてC列を作業列としてC2セルには次の式を入力して下方にオートフィルドラッグします。

=IF(A1="","",IF(COUNTIF(B1,"AAA*"),A1&"AAA",IF(COUNTIF(B1,"BBB*"),A1&"BBB","")))

次にお望みの表を別のシートに表示させるとしたら別のpシートのB1セルにはAAAと入力しC1セルにはBBBと入力します。
A2セルから下方には例えば10月1日からの日付を入力します。
B2セルには次の式を入力してC2セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。

=IF($A2="","",COUNTIF(Sheet1!$C:$C,$A2&B$1))

QMSFlexGridで↑や↓押下時の処理

現在VBの勉強をしております(WindowsXp、VB6.0)

MSFlexGridの行を選択すると、行のデータをテキストボックスへ表示する、といった処理を実装したんですが、キーボードの「↑」や「↓」押下時に、選択行は変わるんですが、クリックイベントでもフォーカスイベントでも処理を拾えません・・・。

まだ試してはいないんですが、keyDownイベントで、「↑」「↓」を判断し、更にグリッドにフォーカスが存在する場合に、1行上(または下)のデータをテキストボックスに表示する。
という処理をしないと不可能でしょうか?

どう考えても上記の方法はスマートでは無いなぁと思い、何か良い方法があれば教えていただきたく質問させていただきました。

よろしくお願いいたしますm(__)m

Aベストアンサー

Private Sub MSFlexGrid1_SelChange()
  Static intNowRow As Integer <----- 静的変数として現行行を記憶する変数を宣言
  Dim intNewRow As Integer  <----- カーソル移動後の行を格納する変数を宣言
  
  intNewRow = MSFlexGrid1.Row  <----- カーソル移動後の行を intNewRow に代入
  If intNewRow <> intNowRow Then <----- 記憶している現行行と新しい行の行番号を比較
    intNowRow = intNewRow <----- 新しい行の値をを現行行を記憶する intNowRow に代入
    MsgBox intNowRow <--------- MsgBox 関数で  intNowRow を表示。
  End If <----------------------- End If
End Sub

カーソル移動は上下だけでなく左右もあります。
そのために、カーソルが移動したからと言って新しい行へ移動したかどうかは不明です。
で、上下移動したかどうかを知るには新しい行番号と現行の行番号との比較が必要です。
新しい行番号と現行の行番号ろが異なる限りで<行のデータをテキストボックスへ表示する>を。
そこが MsgBox関数の位置に書くべきコードです。

Private Sub MSFlexGrid1_SelChange()
  Static intNowRow As Integer <----- 静的変数として現行行を記憶する変数を宣言
  Dim intNewRow As Integer  <----- カーソル移動後の行を格納する変数を宣言
  
  intNewRow = MSFlexGrid1.Row  <----- カーソル移動後の行を intNewRow に代入
  If intNewRow <> intNowRow Then <----- 記憶している現行行と新しい行の行番号を比較
    intNowRow = intNewRow <----- 新しい行の値をを現行行を記憶する intNowRow に代入
    MsgBox in...続きを読む

Qテキストファイルから必要な項目(行)をエクセルの行に移行させるには

テキストファイルから必要な項目(行)をエクセルの行に移行させる簡単な方法を教えて下さい。
1テキスト=エクセルの1行

Aベストアンサー

コピーアンドペーストでうまくいく気がします。
テキストファイルを、ノートパッドなどで開いて、全文をコピーし、エクセルに貼り付けるだけです。エクセルは、左上端のセル一つだけが選択された状態にしておきます。複数のセルを選択しているとサイズが合わないと文句を言われるかもしれません。

Q指定した行を選択してそれを基準に同じ処理をする方法を教えてください。 (例) 5行目を選択 5行目を

指定した行を選択してそれを基準に同じ処理をする方法を教えてください。
(例) 5行目を選択
5行目を1とした場合そこから31行同じ処理をする
5行目を選択 転記する
6行目を選択 転記する
|
31行目を選択 転記する

for ~. next を使えばいいのかと思いますがうまくいきません。

エクセルの内容をuserformのテキストに表示します。

よろしくお願いします。

Aベストアンサー

Dim i As Integer

With Worksheets("可燃").Range("A10")
For i = 1 To 16
Me.Controls("TextBox" & i) = .Cells(i, 1)
Next
End With

とか。

Qエクセルの行の幅について

 エクセルの行幅を立ち上げ時点から太くしたいと思います。
 エクセルの行の幅は、立ち上げると12.75という高さになっているようです。しかし、これでは少々見づらいので15くらいにしたいと思います。
 もちろん、「行の高さ」で変更できるのは分かるのですが、毎回、修正するのが煩雑です。従って、立ち上げた初期段階から行の高さを変更することはできないでしょうか。

Aベストアンサー

う~ん。

確か、エクセルの初期設定で変更できるのは、
「シート数」「フォントの書体」「フォントの大きさ」
くらいだったと思います。
行の幅を、立ち上げ時から指定の幅にする事は出来なかったような…。

私自身、エクセルを結構利用するのですが、行の幅を変更するときは、
「全選択(画面左上の行(1)の上、と列(A)の左、の長方形の部分をクリック)」して、
行(1)と、行(2)の間にある線をドラッグして一気に全ての行の幅を変えています。

もし、それすらも煩雑と感じるほどにエクセルを新規で立ち上げているのであれば、
以下の方法はどうでしょうか?

1.行の幅を15に設定した「白紙のエクセル」をデスクトップに保存する。
2.新規で利用したい場合は、1で保存したエクセルをデスクトップ上でコピー(Ctrl + C)&ペースト(Ctrl + V)
3.ペーストしたエクセル(白紙で行幅15)を立ち上げる。

こうすれば、毎回行幅を変更する事なく、立ち上げ時から行幅15のエクセルが使用できますよ♪

ただ、全選択して一気に行幅を変える前者のやり方の方が簡単な気もしますが…。(汗

う~ん。

確か、エクセルの初期設定で変更できるのは、
「シート数」「フォントの書体」「フォントの大きさ」
くらいだったと思います。
行の幅を、立ち上げ時から指定の幅にする事は出来なかったような…。

私自身、エクセルを結構利用するのですが、行の幅を変更するときは、
「全選択(画面左上の行(1)の上、と列(A)の左、の長方形の部分をクリック)」して、
行(1)と、行(2)の間にある線をドラッグして一気に全ての行の幅を変えています。

もし、それすらも煩雑と感じるほどにエクセルを新規で立...続きを読む

QTextBoxにフォーカスを与えると文字列が選択された状態にしたい

TextBoxにフォーカスを与えると文字列が選択されて反転表示された状態になるソフトってありますよね。(IEのアドレスバーみたいに。)
VBでこれを実現しようとすればどの様にすればよいのでしょうか。
ご存じの方、教えてください。

Aベストアンサー

ソフトを使う必要は無いと思います。

TextBox.SelStart = 0
TextBox.SelLength = Len(TextBox.Text)
で全選択できたと思います。

Qエクセルの行の幅がずれる

エクセルで表を作っているのですが
行の高さを25にして確かめてみると
どうしても24.5というように25の幅になっていません。
どうすればきっちり自分の設定した行の高さになるのでしょうか教えてください。
エクセルは2000を使っています。

Aベストアンサー

セルの高さの単位はなんでしょう?
ポイントという単位なのですが、1ポイントは約0.35mmでポイントは文字の大きさの単位と同じです。エクセルでは11ポイントの場合標準の高さが13.5、14ポイントでは17.5と変化します。
エクセルの標準フォントの高さを基準にしています。(これはオプションで変更できます。)

ピクセルと言う基準があって、これをポイントと言う単位に直しているので、25と言う端数のない数値にならない事がある。

例えば、幅はどうでしょう、これは標準フォントの文字数を表しています。(規定があるのですが省略)

と言う事で、出来ません。
25の右にあるピクセルと言う単位を基本に使うようにしたらいかがでしょう。
例えば列幅とも100ピクセルを選択するとセルは正方形になります。(ピクセルは列幅とも同じ物です。)
この併記はエクセル2000から始まったようですが。(単位が違うので、合わせるためみたいです。)

Qセルを選択した際に同じ行の特定のセルに色を付けるには

1つのシートに表が2つあり、左の表にはA~Z等の文字列がバラバラに入っています。
右の表にはその行で同じ文字列が幾つずつあるかをカウントしています。

左の表の任意のセルを選択した際に右の表のカウントされた数値を目立たせるようにしたいのです。
そのセルに色が付くと見分けが付きやすいと思うのですが、どのような方法があるのでしょう?
教えてください。

Aベストアンサー

やるとしたらVBAでしょうか、、、

新規ブックを開き、シート名タブを右クリックして「コードの表示」を押下
出てきたVBE画面に下記をコピペしてVBE画面を閉じます。

これでA列のセルをひとつ選択するとF列の同じ行に色が付くようになります。
但し、F列のセルに任意に色付けをする事は出来なくなります。
(A列を選択するとクリアされてしまうから)

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 With Target.Cells(1, 1)
  If .Column = 1 Then
    .Offset(0, 5).EntireColumn.Interior.ColorIndex = xlNone
    .Offset(0, 5).Interior.ColorIndex = 4
  End If
 End With
End Sub


人気Q&Aランキング

おすすめ情報