• 締切済み

VB6 MSFlexGrid行数指定について

はじめまして VB初心者です。 いまさらですが、VB6.0 MSFlexGridの行数指定で悩んでいます。 過去の質問等私なりに調べたのですが、うまく検索することができなかったため、質問させていただきます。 現在、MSFlexGridに5万件程度のデータを表示しようと思っています。 その際、行数を指定するための「Rows」プロパティに行数を設定したいのですが、32767件を超えると、設定できなくなってしまいます。 ヘルプを見る限りではRowsの値はLONGと記載されていますので、設定可能では?っと思っています。 何かお気づきの点がございましたら教えていただけると助かります。 以下大した内容ではありませんが、行数設定部分の記述です。 Dim nCnt As Long nCnt = ReadDataSheet(txtFileName.Text) With flxDataSheet .Cols = 5 .Rows = nCnt + 1 End With

みんなの回答

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

.Rows = nCnt + 1 の行でエラーになるのでしょうか? もしかして ReadDataSheetというユーザー定義関数の中でエラーになっているのではありませんか? Form_Loadで dim n as long n = 50000 ' n = myFunc(1) MSFlexGrid1.Rows = n for n = 0 to MSFlexGrid1.Rows   MSFlexGrid1.TextMatrix( n,1) = n next といった具合ではエラーになりません myFuncを使うようにすると オーバーフローのエラーになりますが Function myFunc(m as long) as Integer   myFunc = m + 32767 End Function エラーメッセージを表示されたまま省略しないで明記してみましょう

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • MSFlexGrid オブジェクトについて

    MSFlexGrid で  (1,1) (2,1) (3,1) .... (n,1)に文字列を入れました。 これら文字列の頭に数字を付加するため For t = 1 To n With MSFlexGrid1 .TextMatrix(t, 1) = t & "_" & .TextMatrix(t, 1) End With Next t としました。ところがこれを行うと左揃えだったものが右揃えになってしまいます。どうすれば、これを防げるでしょうか? 数字が頭にあるとこうなるようなのですが。 MSFlexGrid について他にも質問しているのでよろしければ見て下さい。

  • VB6で指定したセルにフォーカスをあてるには?

    VB初心者なのでわかる方教えてください。 MSFlexGridの指定したセルにフォーカスをあてるにはどのように すればよいのでしょうか? 本当に初歩的な質問なんでしょうがよろしくお願いします。

  • 指定した範囲で0の行を削除するマクロ

    以下のコードで7列目が0の行を削除するマクロを作ったのですが、 13行目以降を削除するように指定できますでしょうか? 1-12行は別のシートに数式を入れているため、削除したくないのですが、 うまくいきません。よろしくお願いいたします。 Sub 行削除() Dim Rw As Long Dim Cnt As Long Application.ScreenUpdating = False For Rw = Cells(Rows.Count, 7).End(xlUp).Row To 1 Step -1 With Cells(Rw, 7) If .Value = 0 Then .EntireRow.Delete Cnt = Cnt + 1 End If End With Next If Cnt = 0 Then MsgBox "削除対象行は、見つかりません。", vbExclamation Else MsgBox Cnt & " 件見つかり行を削除しました。", vbInformation End If End Sub

  • VBからExcelのテキストを指定して開きたい

     VBのアプリケーションから文書名を指定してエクセルを起動したいのですが 出来なくて困っています。ちなみにコードは下記のとおりです。どこに問題があ るのか教えていただけないでしょうか。 Private Sub Command1_Click() Dim lngReturnCode As Long Dim strFileName As String strFileName = "AllTitles.csv"   lngReturnCode = ShellExecute(Me.hwnd, _ "open c:\***\***.xls", _ strFileName, _ vbNullString, _ App.Path, _ SW_SHOWNORMAL) End Sub

  • VB6のMSFlexGridでセルをマージしたい

    お世話になります VB6のMSFlexGridでセルをマージしたいのですがうまくいきません 行イメージは以下になります。 ------------------ | AA | 1 | 2 | 3 |    ------------- |   | A | B | C | ------------------ | AA | 4 | 5 | 6 |    ------------- |   | D | E | F | ------------------ | BB | 1 | 2 | 3 |    ------------- |   | A | B | C | ------------------ | BB | 4 | 5 | 6 |    ------------- |   | D | E | F | ------------------ 1行目と2行目の先頭をマージしてtext="AA" 3行目と4行目の先頭をマージして上と同じtext="AA" 5行目と6行目の先頭をマージしてtext="BB" 7行目と8行目の先頭をマージして上と同じtext="BB" flexMergeFreeもMergeRowも試したつもりなのですが、うまくいきませんでした。 記述の順番なのかな? With oObjGrid .Col = 0 .Row = 0 .Text = "AA" .Row = 1 .Text = "AA" ' ※ここでマージ処理を試したつもり .Row = 2 .Text = "AA" .Row = 3 .Text = "AA" ' ※ここでマージ処理を試したつもり .Row = 4 .Text = "BB" .Row = 5 .Text = "BB" ' ※ここでマージ処理を試したつもり .Row = 6 .Text = "BB" .Row = 7 .Text = "BB" ' ※ここでマージ処理を試したつもり End With ※以下を色々な順番で試したのですが、だめでした .MergeCells = flexMergeFree .MergeRow(0) = True .MergeRow(1) = True .MergeCells = 2 'マージの指定 .MergeCells = 3 'マージの指定

  • 最大行数を取得するVBAコードとは?

     人生で初めてエクセルのマクロに挑戦してみた。が、《最大行数を取得するVBAコード》で躓いた。2時間ばかり、悪戦苦闘したがサッパリ判らない。苦肉の策で、SQL文を使った。でも、それじゃー解決したことにはならない。 Public Sub Do_XferPer()   Dim I As Integer   Dim N As Integer      Application.ScreenUpdating = False   '   ' 先頭行の取得   '   N = DLookup("SELECT COUNT(*) FROM [Sheet3$A:A1000]") - 1   Debug.Print N   For I = 2 To N     If 0 Then       Cells(I, 1) = XferPer(Cells(I, 1))     End If   Next I   Application.ScreenUpdating = True      With ThisWorkbook.Worksheets("Sheet3").UsedRange     N = .Rows.Count - 1     Debug.Print N   End With   With Range("A1").SpecialCells(xlLastCell)     N = .Row - 1     Debug.Print N   End With End Sub 【質問】 みなさんは、最大行数を取得するのにどのようなコードを書かれていますか?  宜しくお願いします。

  • VB2010 でのPictureboxのフォント指定

    VB2010 でのPictureboxのフォント指定 現在 Pictureboxのフォントをプログラムの先頭で定義しているのですが、 '------------------------------------------------------------------------- Dim fnt As New Font("MS ゴシック", 9) With PictureBox1 .Image = New Bitmap(.Size.Width, .Size.Height) g1 = Graphics.FromImage(.Image) g1.Clear(.BackColor) End With g1.DrawString("TEST" fnt, Brushes.Black, IX,IY) '------------------------------------------------------------------------- 下記のようにループ内で指定したいのですが、どう定義すればいいでしょうか。 For i=1 to 10 <------------------------ここでfont指定したい g1.DrawString("TEST" fnt, Brushes.Black, IX,IY) next

  • Word2007ページの行数が変わりません

    Word2007ページの行数が変わりません Word 2007で論文を書いています。 デフォルトで書いたのですが、行数が規定と合わないことがわかり変更しようとしていますがどうしても変わりません。ググルか、ヘルプをよく読むのが本来だと思いますが、急いでいるため、こちらでお尋ねします。よろしくお願いします。 なお、 ページレイアウトタブ、ページ設定、詳細設定、「行数と文字数を指定」という手続きは試しています。

  • エクセル シート内で行数を指定する方法

    急いでいて他の質問を詳しくチェックしてないので、既出の質問でしたらすみません。 エクセルで表を作るときの質問です。 書式設定で、行の高さを指定するところはありますが、ワードのように行数を指定することはできますか? 高さの入力しかしたことがないので、「この数字だと何行入るかな」といちいち数えながら調整しなくてはならなくて時間がかかってしまいます。 行数指定する方法を教えて下さい。 よろしくお願いします。

  • VBからExcelを操作

    VisualBasic6.0(初心者) VBを始めたばかりで、Excelの入力文字をVBで変換しようと考えています。 様々な保管場所にあるExcelを開いて選択セルの文字をコマンドボタンで変換しようと下記コードを考えました。(一部) 問題は、Load時にすでに開いているExcelを閉じてまいます。 何か良い方法は無いでしょうか?(アクティブなExcelを操作したい) また、下記コードで不適切なところがありましたら御教授願います。 Private Sub Form_Load() Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Add Set xlSheet = xlBook.Worksheets(1) Set xlApp = GetObject(, "Excel.Application") With xlApp.Selection Cells(1, 1).Value = "" End With xlApp.DisplayAlerts = False xlApp.Quit Set xlSheet = Nothing Set xlBook = Nothing Set xlApp = Nothing End Sub '----------------------(大文字変換) Private Sub CB2_Click() On Error Resume Next If ActiveCell.Row = Null Then MsgBox "Excel が見つかりません" Else Dim xlApp As Excel.Application Set xlApp = GetObject(, "Excel.Application") If Err.Number Then MsgBox "Excel が起動されていません" Else Dim X As Long Dim Y As Long Dim Hmae As String Dim Hgo As String X = 0 Y = 0 With xlApp.Selection Do Do Hmae = Cells(ActiveCell.Row + X, ActiveCell.Column + Y).Value Hgo = StrConv(Hmae, 1) Cells(ActiveCell.Row + X, ActiveCell.Column + Y).Value = Hgo X = X + 1 Loop Until X >= .Rows(.Rows.Count).Row - .Row + 1 X = 0 Y = Y + 1 Loop Until Y >= .Columns(.Columns.Count).Column - .Columns(1).Column + 1 End With End If xlApp.DisplayAlerts = False Set xlApp = Nothing End If End Sub