エクセルVBAで入力規則で設定した列数を取得するには? 削除


Message#2 2015年2月12日(木)09時34分
From: karin
> A列、C列E列の場合は、Columns.Countで処理すると1が返ってきます。

こちらはおそらく

Sub sample()
  Debug.Print Range("A1,C1:E1").Columns.Count
End Sub

だと思いますが、こちらはA列、C列E列範囲のAreas(1)になりますので、range("A1")の列を取得しようとしています。よって結果は1で正しいです。

複数領域のセル範囲の場合は、Areasプロパティで全てのセルに対して処理を行わなければいけませんので、Areasコレクションの数だけループ処理を行い、列をカウントさせていきます。
以下がExcelVBAのサンプルコードですので、一度確認してみてください。

Sub sample()
  With Range("A1,C1:E1")
    For Each i In .Areas
      colCnt = colCnt + a.Count
    Next
    debug.print .Cells.Count
    debug.print colCnt
  End With
End Sub




>
> A列〜D列の場合は、Columns.Countで処理するとちゃんと4が帰ってくるのですが、

> この現象はどうしておこるのでしょうか?
>
> 原因が分かる方いらっしゃいましたら、お知らせください。
> Sub sample()
>
>   With Rows(3).SpecialCells(xlCellTypeAllValidation)
>     MsgBox .Cells.Count
>     MsgBox .Columns.Count
>   End With
>
> End Sub

上のメッセージを削除します。
よければパスワードを入力し、削除ボタンをクリックしてください。

パスワード:

ExcelのVBAについてのQ&A掲示板

↑ExcelのVBA全般について分からない事があればこちらの掲示板よりご質問ください^^

VBAのInternetExplorer操作入門

↑ExcelのVBAをマスターできたら、エクセルVBAのIE(InternetExplorer)操作にも挑戦してみてください^^

VBAのIE制御入門RSS

RSSフィードを登録すると最新記事を受け取ることができます。

VBAIE操作のスカイプレッスン

エクセルVBAのステートメント

こちらでは、エクセルVBAの事例で利用したステートメントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

エクセルVBAのオブジェクト

こちらでは、エクセルVBAの事例で利用したオブジェクトをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

エクセルVBAのプロパティ

こちらでは、エクセルVBAの事例で利用したオブジェクトのプロパティをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

エクセルVBAのメソッド

こちらでは、エクセルVBAの事例で利用したオブジェクトのメソッドをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

エクセルVBAのイベント

こちらでは、エクセルVBAの事例で利用したオブジェクトのイベントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

dmb.cgi Ver. 1.068
Copyright(C) 1997-2014, hidekik.com