• 締切済み

VSFlexGridをDataGridViewへ

VB6でコーディングされたソースを VB2005 に移行しております。 VB6 では GrapeCity社の VSFlexGrid8 を使用していたのですが、 VB2005 ではDataGridView を使用する予定です。 VB2005で作成した画面のDataGridViewはVSFlexGrid1 という名称に変更し、 VB6 の If Trim(VSFlexGrid1.Cells(flexcpText, Row, Col, Row, Col) = "" Then を If VSFlexGrid1.Rows(Row).Cells(Col).Value.ToString.Trim() = "" Then のように書き換えたのですが、下記エラーがコンパイルエラーが出てしまい、 直し方がわかりません。 エラー 11 縮小変換しないで呼び出される、アクセス可能な 'Item' がないため、オーバーロードの解決に失敗しました: 'Public Default Property Item(columnName As String) As System.Windows.Forms.DataGridViewCell': パラメータ 'columnName' と一致する引数は 'Long' から 'String' へ縮小変換します。 'Public Default Property Item(index As Integer) As System.Windows.Forms.DataGridViewCell': パラメータ 'index' と一致する引数は 'Long' から 'Integer' へ縮小変換します。 同一プロシージャ内で上記エラー箇所の5~6行前では以下の書き換えができています。 VSFlexGrid1.cell(flexcptext, Row + 1, OGRDNO_INSAMOUNT) = Format(TL_INSAMOUNT, "###,###,###") + Chr(&HD)                         ↓ VSFlexGrid1.Rows(Row).Cells(10 + OGRDNO_INSAMOUNT).Value = Format(TL_INSAMOUNT, "###,###,###") 恐らく、かなり初歩的な事だとは思うのですが、 お分かりの方、よろしくお願いします。

みんなの回答

  • MARU4812
  • ベストアンサー率43% (196/452)
回答No.1

エラーメッセージをよく読めば分かるけど、 If VSFlexGrid1.Rows(Row).Cells(CInt(Col)).Value.ToString.Trim() = "" Then で通ると思います。縮小変換は大きなものを小さなものに入れる… つまり、Col が Long だと 64bit なので 32bit の Integer に 入らないので、自動的に変換するのはまずいと言っています。 これを明示的な型変換を書くことで「変換できる数値しか入ってないから!」 と強引に押し切ったような、あまり良くない解決法ですが、まぁ 通す事は可能です。 そもそも、変数のサイズが変わったんですよね。 http://msdn.microsoft.com/ja-jp/library/dd297710.aspx Dim Col As Integer If VSFlexGrid1.Rows(Row).Cells(Col).Value.ToString.Trim() = "" Then と Col の定義から変更すべき。

Steed400
質問者

お礼

MARU4812 様、回答ありがとうございます。 そうですよね、落ち着いてメッセージを見たら理解できました。 こんな事でお騒がしてしまい、申し訳ありませんでした。

関連するQ&A