質問編集履歴
3
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
空白セルは
|
1
|
+
空白セルは保護せず指定の行と最終列から上の列を保護したい
|
test
CHANGED
@@ -10,9 +10,9 @@
|
|
10
10
|
|
11
11
|
|
12
12
|
|
13
|
-
1. B列を基準にして、B列の最後の値(書式ではなく)から上の行を
|
13
|
+
1. B列を基準にして、B列の最後の値(書式ではなく)から上の行を保護したいのですが、
|
14
14
|
|
15
|
-
書式は関係なく値を認識してその上の行を指定する方法が分からずに困っております。
|
15
|
+
書式は関係なく最終の値を認識してその上の行を指定する方法が分からずに困っております。
|
16
16
|
|
17
17
|
(イメージ図で言えば「E12」が最後の値なので11行目~15行目までです)
|
18
18
|
|
@@ -26,25 +26,25 @@
|
|
26
26
|
|
27
27
|
その上の行を全部指定する方法なのですが、どのように行全体を指定したらいいのかが分からず困っております。
|
28
28
|
|
29
|
-
|
29
|
+
保護していない行の空白セルは自由に記述したいため(イメージ図では17行目以降の空白セルです)
|
30
30
|
|
31
31
|
UsedRange.SpecialCells(Type:=xlCellTypeBlanks)で空白セルを認識させています。
|
32
32
|
|
33
|
-
これだと、空白セルだけの認識なので、「行の
|
33
|
+
これだと、空白セルだけの認識なので、「行の保護」と相反していてどのように指定したらいいのか分からない
|
34
34
|
|
35
35
|
のですがどのように指定したらいいのか、教えていただけないでしょうか。
|
36
36
|
|
37
|
-
2.「保護」マクロを実行したら黄色の列も
|
37
|
+
2.「保護」マクロを実行したら黄色の列も保護したい。(N列、P列)
|
38
38
|
|
39
39
|
単一列を指定するのでN列を指定するため
|
40
40
|
|
41
41
|
Columns(14).Interior.Locked = True
|
42
42
|
|
43
|
-
と書いて実行してみました。そうすると、
|
43
|
+
と書いて実行してみました。そうすると、保護されるセルと保護されないセルがあり、
|
44
44
|
|
45
|
-
(「N11」「N21」セルは
|
45
|
+
(「N11」「N21」セルは保護されたのに「N18」は保護されない)
|
46
46
|
|
47
|
-
どうして同じ列なのに
|
47
|
+
どうして同じ列なのに保護されるセルとされないセルがあるのか分からず悩んでいます。
|
48
48
|
|
49
49
|
3. ログインID認識シートをプロパティで「Vislible/0-xsheetHidden」で非表示に
|
50
50
|
|
2
行と列の間違いを直しました
test
CHANGED
File without changes
|
test
CHANGED
@@ -4,17 +4,17 @@
|
|
4
4
|
|
5
5
|
それをもとに「ログイン認識」シートにVLOOK関数で管理者の名前を抽出させ、
|
6
6
|
|
7
|
-
「ログイン認識」VLOOK関数で抽出させたユーザーネームを「管理簿」シートの黄色の
|
7
|
+
「ログイン認識」VLOOK関数で抽出させたユーザーネームを「管理簿」シートの黄色の列に、入力規則によりプルダウンで選択させ、管理者がログインした時だけ管理者のユーザーネームがプルダウンで表示されるようになっています。
|
8
8
|
|
9
9
|
Excel2013で作成
|
10
10
|
|
11
11
|
|
12
12
|
|
13
|
-
1. B列を基準にして、B列の最後の値(書式ではなく)から上の
|
13
|
+
1. B列を基準にして、B列の最後の値(書式ではなく)から上の行をロックしたいのですが、
|
14
14
|
|
15
|
-
書式は関係なく値を認識してその上の
|
15
|
+
書式は関係なく値を認識してその上の行を指定する方法が分からずに困っております。
|
16
16
|
|
17
|
-
(イメージ図で言えば「E12」が最後の値なので11
|
17
|
+
(イメージ図で言えば「E12」が最後の値なので11行目~15行目までです)
|
18
18
|
|
19
19
|
下方向に最終行を検索するべきなのかと思うのですが、検索方法は
|
20
20
|
|
@@ -24,27 +24,27 @@
|
|
24
24
|
|
25
25
|
で合っていますか?これだと最終セルだけが認識されているような気がして間違っているような気がします。
|
26
26
|
|
27
|
-
その上の
|
27
|
+
その上の行を全部指定する方法なのですが、どのように行全体を指定したらいいのかが分からず困っております。
|
28
28
|
|
29
|
-
ロックしていない
|
29
|
+
ロックしていない行の空白セルは自由に記述したいため(イメージ図では17行目以降の空白セルです)
|
30
30
|
|
31
31
|
UsedRange.SpecialCells(Type:=xlCellTypeBlanks)で空白セルを認識させています。
|
32
32
|
|
33
|
-
これだと、空白セルだけの認識なので、「
|
33
|
+
これだと、空白セルだけの認識なので、「行のロック」と相反していてどのように指定したらいいのか分からない
|
34
34
|
|
35
35
|
のですがどのように指定したらいいのか、教えていただけないでしょうか。
|
36
36
|
|
37
|
-
2.「保護」マクロを実行したら黄色の
|
37
|
+
2.「保護」マクロを実行したら黄色の列もロックしたい。(N列、P列)
|
38
38
|
|
39
|
-
単一
|
39
|
+
単一列を指定するのでN列を指定するため
|
40
40
|
|
41
41
|
Columns(14).Interior.Locked = True
|
42
42
|
|
43
43
|
と書いて実行してみました。そうすると、ロックされるセルとロックされないセルがあり、
|
44
44
|
|
45
|
-
(「N11」「N21」セルはロックされたのに「N18
|
45
|
+
(「N11」「N21」セルはロックされたのに「N18」はロックされない)
|
46
46
|
|
47
|
-
どうして同じ
|
47
|
+
どうして同じ列なのにロックされるセルとされないセルがあるのか分からず悩んでいます。
|
48
48
|
|
49
49
|
3. ログインID認識シートをプロパティで「Vislible/0-xsheetHidden」で非表示に
|
50
50
|
|
1
不要なコードを消して、コードを見直しました
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
VBA初心者です。
|
1
|
+
VBA初心者です。すみませんが教えてください。
|
2
2
|
|
3
3
|
このファイルは「管理簿」「ログインID認識」の2つのシートがあり、「ログインID認識」でログインIDを取得します。
|
4
4
|
|
@@ -10,114 +10,140 @@
|
|
10
10
|
|
11
11
|
|
12
12
|
|
13
|
-
1. B列を基準にして、B列の最後の値(書式ではなく)から上の列をロックしたいです
|
13
|
+
1. B列を基準にして、B列の最後の値(書式ではなく)から上の列をロックしたいのですが、
|
14
14
|
|
15
|
-
|
15
|
+
書式は関係なく値を認識してその上の列を指定する方法が分からずに困っております。
|
16
16
|
|
17
|
-
|
17
|
+
(イメージ図で言えば「E12」が最後の値なので11列目~15列目までです)
|
18
18
|
|
19
|
-
|
19
|
+
下方向に最終行を検索するべきなのかと思うのですが、検索方法は
|
20
20
|
|
21
|
-
|
21
|
+
Dim maxrow
|
22
22
|
|
23
|
-
|
23
|
+
maxrow=Range("E65536").End(xlUp).Row
|
24
24
|
|
25
|
+
で合っていますか?これだと最終セルだけが認識されているような気がして間違っているような気がします。
|
26
|
+
|
27
|
+
その上の列を全部指定する方法なのですが、どのように列全体を指定したらいいのかが分からず困っております。
|
28
|
+
|
29
|
+
ロックしていない列の空白セルは自由に記述したいため(イメージ図では17列目以降の空白セルです)
|
30
|
+
|
31
|
+
UsedRange.SpecialCells(Type:=xlCellTypeBlanks)で空白セルを認識させています。
|
32
|
+
|
33
|
+
これだと、空白セルだけの認識なので、「列のロック」と相反していてどのように指定したらいいのか分からない
|
34
|
+
|
35
|
+
のですがどのように指定したらいいのか、教えていただけないでしょうか。
|
36
|
+
|
37
|
+
2.「保護」マクロを実行したら黄色の行もロックしたい。(N行、P行)
|
38
|
+
|
39
|
+
単一行を指定するのでN行を指定するため
|
40
|
+
|
41
|
+
Columns(14).Interior.Locked = True
|
42
|
+
|
43
|
+
と書いて実行してみました。そうすると、ロックされるセルとロックされないセルがあり、
|
44
|
+
|
45
|
+
(「N11」「N21」セルはロックされたのに「N18]はロックされない)
|
46
|
+
|
47
|
+
どうして同じ行なのにロックされるセルとされないセルがあるのか分からず悩んでいます。
|
48
|
+
|
49
|
+
3. ログインID認識シートをプロパティで「Vislible/0-xsheetHidden」で非表示に
|
50
|
+
|
25
|
-
し
|
51
|
+
して、更にパスワードかけたいのですが、
|
52
|
+
|
53
|
+
ActiveSheet.Protect Password:="●●●●●"
|
54
|
+
|
55
|
+
のようにパスワードを指定する方法などあるものでしょうか?
|
56
|
+
|
57
|
+
基本的な考え方も勉強中で、おかしいコードなどが混ざっているかもしれません。
|
58
|
+
|
59
|
+
すみませんが、ご教授いただけませんでしょうか。
|
60
|
+
|
61
|
+
|
62
|
+
|
63
|
+
|
64
|
+
|
65
|
+
|
26
66
|
|
27
67
|

|
28
68
|
|
69
|
+
|
70
|
+
|
29
71
|
```Option Explicit
|
30
72
|
|
73
|
+
Sub 保護() '管理簿シートに記述
|
31
74
|
|
75
|
+
If ActiveSheet.ProtectContents = False Then
|
32
76
|
|
33
|
-
|
77
|
+
|
34
78
|
|
35
|
-
|
79
|
+
Cells.Locked = True
|
36
80
|
|
37
|
-
Range
|
81
|
+
ActiveSheet.UsedRange.SpecialCells(Type:=xlCellTypeBlanks).Locked = False
|
38
82
|
|
39
|
-
|
83
|
+
|
40
84
|
|
41
|
-
Rows("1:10").Locked = True
|
42
|
-
|
43
|
-
Cells.Locked = True
|
44
|
-
|
45
|
-
On Error GoTo 0
|
46
|
-
|
47
|
-
ActiveSheet.Protect Password:="●●●●●●"
|
85
|
+
ActiveSheet.Protect Password:="●●●●●●"
|
48
|
-
|
49
|
-
Application.ScreenUpdating = False
|
50
86
|
|
51
87
|
End If
|
52
88
|
|
53
89
|
End Sub
|
54
90
|
|
55
|
-
|
91
|
+
コード
|
56
92
|
|
57
93
|
```
|
58
94
|
|
59
|
-
Option Explicit
|
95
|
+
```Option Explicit
|
60
96
|
|
61
|
-
Private Sub Workbook_Open()
|
97
|
+
Private Sub Workbook_Open() 'ThisWorkbookに記述
|
62
98
|
|
63
99
|
Application.ScreenUpdating = False
|
64
100
|
|
65
|
-
Dim environmentstring As String
|
66
101
|
|
67
|
-
Dim username As String
|
68
102
|
|
69
|
-
Dim As
|
103
|
+
Dim environmentstring As String
|
70
104
|
|
71
|
-
i
|
105
|
+
Dim username As String
|
72
106
|
|
73
|
-
D
|
107
|
+
Dim i
|
74
108
|
|
75
|
-
|
109
|
+
|
76
110
|
|
77
|
-
|
111
|
+
i = 1
|
78
112
|
|
79
|
-
|
113
|
+
|
80
114
|
|
81
|
-
|
115
|
+
Do
|
82
116
|
|
83
|
-
|
117
|
+
environmentstring = Environ(i)
|
84
118
|
|
119
|
+
|
120
|
+
|
121
|
+
If Left(UCase(environmentstring), 9) = "USERNAME=" Then
|
122
|
+
|
123
|
+
username = Mid(environmentstring, 10, Len(environmentstring))
|
124
|
+
|
125
|
+
Sheets("ログインID認識").Cells(3, 1).Value = username
|
126
|
+
|
127
|
+
|
128
|
+
|
129
|
+
Exit Do
|
130
|
+
|
85
|
-
End If
|
131
|
+
End If
|
132
|
+
|
133
|
+
|
86
134
|
|
87
135
|
i = i + 1
|
88
136
|
|
89
|
-
|
137
|
+
|
90
138
|
|
139
|
+
Loop Until Environ(i) = ""
|
91
140
|
|
141
|
+
Application.ScreenUpdating = True
|
92
142
|
|
93
|
-
|
143
|
+
|
94
|
-
|
95
|
-
Set findrng = Sheets("ログインID認識").Range("E3:F10").Find(username, lookat:=xlWhole)
|
96
144
|
|
97
145
|
End Sub
|
98
146
|
|
147
|
+
コード
|
99
148
|
|
100
|
-
|
101
|
-
自分なりにやってみたのですが、うまくいかなくて行き詰っています。
|
102
|
-
|
103
|
-
管理簿シートに記述したが(エラー)
|
104
|
-
|
105
|
-
columns=行
|
106
|
-
|
107
|
-
行=loked=true
|
108
|
-
|
109
|
-
columns("P,N").loked=true
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
range("N:N","P:P").loked=true
|
114
|
-
|
115
|
-
rows("P:P").loked=true
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
その他にも色々試したのですが、知識不足でうまくいかずエラーで返されてしまいます。
|
120
|
-
|
121
|
-
どうコードを書けばいいか分からずにいます。
|
122
|
-
|
123
|
-
|
149
|
+
```
|