|
こんにちは。ひろのりと申します。
任意に選択したセルの範囲の列番号(先頭と最後)の取得方法につき御教示頂けますでしょうか。
任意に選択したセルの範囲の列の幅を1行置きに自分で設定したいと思っています。
自分なりに、下記(*1)を記述し、問題なく動きました。
しかしながら、そもそも私の実力では無駄のない記述になっていないこと、また、これは選択範囲の中にあるセルの数をベースに導きだしていること、等から、もっと簡単ですっきりした記述方法があるのではないかと思っています。
ウェブ等で調べたのですが、列番号の取得そのものとしては、結果的に(*2)の記述があるのを見つけました。当然ながら、試しましたがきちんと動作します。
ここで、理解を深めたいのですが、7行目に下記が記述されています。
With .Cells(1, 1)
Cells(1, 1)というと、固定でA1セルを示すものだと思っていたのですが、実行上は、きちんと ”Areaとして選択した範囲の左上のセル”と指定していることになると思います(例えばC5:I20なら、C5セル)。
Cellsプロパティとはそういうものなのでしょうか。
このあたりを御教示頂けますとありがたいです。今のままの理解では、今後間違っCellsを使ってしまいそうです。
どうも基本中の基本かと推測され申し訳ないのですが、宜しくお願い致します。
**(1)*******************
Dim i As Integer, S As Integer, E As Integer
S = Selection(1).Column
E = Selection(Selection.Count).Column
For i = S To E - 1 Step 2
Columns(i).Select
Selection.ColumnWidth = 3 '3ピッチに設定
Next i
For i = S + 1 To E Step 2
Columns(i).Select
Selection.ColumnWidth = 10 '10ピッチに設定
Next i
*(1)終わり****************************
****(2)*******************************
Sub Sample_RowAndColumn()
Dim iRow_First As Long
Dim iRow_Last As Long
Dim iColumn_First As Long
Dim iColumn_Last As Long
'選択範囲の最初の範囲を対象にします
With Selection.Areas(1)
'先頭行番号と先頭列番号の取得
With .Cells(1, 1)
iRow_First = .Row
iColumn_First = .Column
End With
'最終行番号の取得(先頭行番号 + 選択行数 - 1)
iRow_Last = iRow_First + .Rows.Count - 1
'最終列番号の取得(先頭列番号 + 選択列数 - 1)
iColumn_Last = iColumn_First + .Columns.Count - 1
End With
'結果の表示
MsgBox CStr(iRow_First) & "行" & CStr(iColumn_First) & "列" _
& " - " & CStr(iRow_Last) & "行" & CStr(iColumn_Last) & "列"
End Sub
**(2)の終わり************************
|
|