こんばんわ。
アルバイトでプログラムを書いていたのですが、MSFlexGrid で削除がうまく行きません。
通常の行では、RemoveItem を呼んで削除できるのですが、いよいよ最後の1行になるとエラーになります。

Error 30015 : 固定されていない最後の行は削除できません。

じゃ、固定すればいいのかと思って固定すると、

Error 30000 : 固定行で RemoveItem を実行できません。
となりました。

プログラム的に、全部の行を一度消したいと思っているのにこんなエラーで参っています。どうしたらいいのでしょうか。

固定行は消せないのはわかりますが、非固定行が消せないのはどうしてでしょう。

A 回答 (1件)

全部の行を一度消したい


のならRows=1(固定行の数)でいけたと思う
未確認ですが
    • good
    • 0
この回答へのお礼

さっそくのご回答ありがとうございました。
試してみたところ、一発でOKでした。

でも、わかりにくい方法でしたね。
本当に、ありがとうございました。
(^^)/~

お礼日時:2002/02/17 23:13

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

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

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

Q行挿入+貼付けと空白行削除を同時に行うには?

行挿入+貼付けと空白行削除を同時に行うには?

VBA初心者です。
仕事でエクセルを使っていますが、


no  工程1 工程2 工程3
1   A   B   C
2   B   _   A
3   C   A   _
4   _   C   A


という表を
no  工程
1   A
    B
    C
2   B
    A
3   C
    A
4   C

というように並び替えたいのですが、
現在は各番号ごとに3行挿入して工程をコピー、行と列を入れ替えて貼付けをしています。
これだと
no  工程
1   A
    B
    C
2   B 

    A
3   C
    A

4
    C
    A
のように空白行ができてしまいます。これをもう一度、マクロで消しているのですが、
データ量が多いため、行挿入と空白行を消す作業を同時に行わないとシート最大行数である
65536行を超えてしまう可能性があります。
同時にやるにはどのようにすればよいのでしょうか?
よろしくおねがいします。

Aベストアンサー

参考にしてください。

配列に入れて一度に書き出します。
サンプルでは、F列G列へ

Sub test()
Dim varArray(1 To 65536, 1 To 2)
varArray(1, 1) = "no"
varArray(1, 2) = "工程"

Dim i As Long, r As Long, c As Long

i = 2
For r = 2 To Range("A65536").End(xlUp).Row
varArray(i, 1) = Cells(r, 1)
For c = 2 To 4
If Cells(r, c) <> "" Then
varArray(i, 2) = Cells(r, c)
i = i + 1
End If
Next c
Next r
Range("F1:G65536") = varArray
End Sub

参考にしてください。

配列に入れて一度に書き出します。
サンプルでは、F列G列へ

Sub test()
Dim varArray(1 To 65536, 1 To 2)
varArray(1, 1) = "no"
varArray(1, 2) = "工程"

Dim i As Long, r As Long, c As Long

i = 2
For r = 2 To Range("A65536").End(xlUp).Row
varArray(i, 1) = Cells(r, 1)
For c = 2 To 4
If Cells(r, c) <> "" Then
varArray(i, 2) = Cells(r, c)
i = i + 1
...続きを読む

QMSFlexGrid

VB6SP6を用いています。MSFlexGridですが、固定行をラベルに用いています。このグリッドをクリックして処理を行っています。固定行では、クリックを無視してほしいのです。固定行をクリックしても、grid.Rowの値は0ではなく、押してもいない、1が返ってきます。本来はクリックしたくない場所ですが、処理を行う1行目をクリックしたことと同じになってしまいます。
ラベル部分をクリックしないようにと伝えていますが、やはり具合が悪いです。
良い、回避方法はないでしょうか。

Aベストアンサー

#2です。
デバッグはどうおこなっていますか?MouseRowはデバッグ中にマウスが
動くと答えが変わったりするので。
私の方ではMsFlexGridをFormに貼り付けてテストしたところ、
うまく切り抜けてるようです。
以下に貼り付けますので参考までに。
あとMouseRowについてはヘルプもみて、どんな値が返るのか理解してくださいね。
(私の環境 WindowsXP VB6SP2)
Private Sub Form_Load()
With MSFlexGrid1
.Rows = 10
.Cols = 10
.FixedCols = 2
.FixedRows = 2
End With
End Sub

Private Sub MSFlexGrid1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
With MSFlexGrid1
If .MouseRow < 2 Then Exit Sub 'ここでは2行を固定行にしているので、固定行の位置の時、クリック処理をせず抜けるようにしています。固定行の時はMsgboxの処理はしないようにしています。
MsgBox .MouseRow
End With
End Sub

#2です。
デバッグはどうおこなっていますか?MouseRowはデバッグ中にマウスが
動くと答えが変わったりするので。
私の方ではMsFlexGridをFormに貼り付けてテストしたところ、
うまく切り抜けてるようです。
以下に貼り付けますので参考までに。
あとMouseRowについてはヘルプもみて、どんな値が返るのか理解してくださいね。
(私の環境 WindowsXP VB6SP2)
Private Sub Form_Load()
With MSFlexGrid1
.Rows = 10
.Cols = 10
.FixedCols = 2
.FixedRows = 2
...続きを読む

QMSFlexGrid 行選択状態

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

http://oshiete1.goo.ne.jp/qa996239.html
↑の質問と同じ内容で悩んでいるんですが、回答を見ても理解出来ず、解決出来ていません(>_<)

1.処理起動時に、テキストファイルからデータを読み込み、グリッドへ表示した後。
2.ソートした後。
3.「検索」処理にてデータを絞り込んで表示した後。

以上3点の時に、行選択状態でなくなってしまうので、それを修正したいんですが、方法が分かりません(;_:)

現在は、グリッドのフォーカスイベントに
MSFlexGrid1.SelectionMode = flexSelectionByRow

を設定しているだけです。

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

Aベストアンサー

こんにちは。
以下を追加してみたらどうですか?

'行を選択
MSFlexGrid1.Row = 1
MSFlexGrid1.RowSel = 1

'列を選択
MSFlexGrid1.Col = 1
MSFlexGrid1.ColSel = MSFlexGrid1.Cols - 1

QVB6 MSFlexGridについて

こんばんは。
VisualBasic6のMSFlexGridに以下の様にデータをセットしたいのですが中々うまくいきません。

※DBのデータ
RowNo    ColNo   Data
1         1      A
1         2      B
1         3      C
2         1      D
2         2      E
2         3      F


※MSFlexGridデータセットイメージ
RowName  ColName1  ColName2  ColName3
1         A        B       C   
2         D        E       F   

縦に並んでいるデータベースの値を横に並べたく思っています。
RowNo = 1 , ColNo=1 , Data =A ⇒ MSFlexGrid 1行目、1列目の値=A
というような感じです。

わかり難くて申し訳ないですがご教授頂けると助かります。
どうぞ宜しくお願い致します。

Aベストアンサー

>>縦に並んでいるデータベースの値を横に並べたく思っています。

そうなるように、読み込んだデータをプログラムで加工してセットすればいいんじゃあないですか?

QMSFlexGridのスクロールバー位置

VB5(SP3)です。
ある検索条件でMSFlexGridに100行表示させた後、垂直スクロールバーで50行ほど下方向にスクロールさせます。
この状態で違う検索条件で1行表示させた時、垂直スクロールバーの位置が変わらないため(TOPにこない)に何も表示されません。垂直スクロールバーを上方向にスクロールさせれば出てきます。
垂直スクロールバーをTOP位置に持ってくる方法はありませんか?
MSFlexGrid.VscrollBar.Value=0とかあれば・・・・

Aベストアンサー

VB6でテストしてますので、VB5で確認してみてください。

MSFlexGrid1.TopRow = データ行の先頭
で先頭を表示します。

MSFlexGrid1.FixedRows=0
(見だし行が無い場合はデータ行の先頭は0)
MSFlexGrid1.FixedRows=1
(見だし行が1行の場合はデータ行の先頭は1)

間違った解釈をしてたら補足してください。


人気Q&Aランキング

おすすめ情報