エクセルVBAで入力規則で設定した列数を取得するには?
未読分:2件
昨日以降(0) 2日前以降(0) 3日前以降(0) 4日前以降(0) 5日前以降(0)
近田 伸矢, 植木 悠二, 上田 寛
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。
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 |
Message#1 2015年2月12日(木)08時55分 From: kurowo | 返事 削除 変更 |
エクセルVBAで入力規則で設定した列数を取得するにはどうしたらいいですか? 具体的にA列D列とF列に入力規則が設定されていたとします。 cellsプロパティを利用してCells.Countを実行すると6が帰ってくるのですが、 列そのものを取得するColumns.Countをすると5が返ってきます。 A列〜D列の場合は、Columns.Countで処理するとちゃんと4が帰ってくるのですが、 A列、C列E列の場合は、Columns.Countで処理すると1が返ってきます。 この現象はどうしておこるのでしょうか? 原因が分かる方いらっしゃいましたら、お知らせください。 Sub sample() With Rows(3).SpecialCells(xlCellTypeAllValidation) MsgBox .Cells.Count MsgBox .Columns.Count End With End Sub |
昨日以降 2日前以降 3日前以降 4日前以降 5日前以降