teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

4

説明追記

2020/08/06 13:55

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -16,4 +16,7 @@
16
16
  最終列の番号取得には他にもいろいろな方法があります。
17
17
  また、注意点もあります。下記に詳しく解説されています。
18
18
 
19
- [最終行・最終列の取得方法(End,CurrentRegion,SpecialCells,UsedRange)|VBA技術解説](https://excel-ubara.com/excelvba4/EXCEL222.html)
19
+ [最終行・最終列の取得方法(End,CurrentRegion,SpecialCells,UsedRange)|VBA技術解説](https://excel-ubara.com/excelvba4/EXCEL222.html)
20
+
21
+ 上記でも解説されてますが、UsedRange だと書式を設定(罫線とか背景色等)すると、そこも範囲になります。
22
+ データが入力されている領域の最終列ということなら、CurrentRegion を使った方かいいでしょう。

3

説明追記

2020/08/06 13:55

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -11,4 +11,9 @@
11
11
  ' last = Range("r").Column
12
12
  ' Range("r") などという指定はできない
13
13
  last = r.Columns(r.Columns.Count).Column
14
- ```
14
+ ```
15
+
16
+ 最終列の番号取得には他にもいろいろな方法があります。
17
+ また、注意点もあります。下記に詳しく解説されています。
18
+
19
+ [最終行・最終列の取得方法(End,CurrentRegion,SpecialCells,UsedRange)|VBA技術解説](https://excel-ubara.com/excelvba4/EXCEL222.html)

2

コード修正

2020/08/06 13:49

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -1,6 +1,14 @@
1
1
  ```vba
2
+ Dim r As Range
3
+ ' Dim last As Range
4
+ ' 列番号は数値なので Range型ではなく、Long型
5
+ Dim last As Long
6
+
2
- ' Set r = Worksheets("城").UsedRange.Select
7
+ ' Set r = Worksheets("城").UsedRange.Select
3
- ' .Select が不要、Select はメソッド(選択するという動作)であってオブジェクトではない
8
+ ' .Select が不要、Select はメソッド(選択するという動作)であってオブジェクトではない
4
- Set r = Worksheets("城").UsedRange
9
+ Set r = Worksheets("城").UsedRange
10
+
11
+ ' last = Range("r").Column
12
+ ' Range("r") などという指定はできない
13
+ last = r.Columns(r.Columns.Count).Column
5
- ```
14
+ ```
6
- ここが通っても後がエラーになりますけど。

1

説明追記

2020/08/06 13:37

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -2,4 +2,5 @@
2
2
  ' Set r = Worksheets("城").UsedRange.Select
3
3
  ' .Select が不要、Select はメソッド(選択するという動作)であってオブジェクトではない
4
4
  Set r = Worksheets("城").UsedRange
5
- ```
5
+ ```
6
+ ここが通っても後がエラーになりますけど。