質問編集履歴

3

2019/03/27 14:21

投稿

green88008800
green88008800

スコア17

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
-    ロックしていない行の空白セルは自由に記述したいため(イメージ図では17行目以降の空白セルです)
29
+    保護していない行の空白セルは自由に記述したいため(イメージ図では17行目以降の空白セルです)
30
30
 
31
31
     UsedRange.SpecialCells(Type:=xlCellTypeBlanks)で空白セルを認識させています。
32
32
 
33
- これだと、空白セルだけの認識なので、「行のロック」と相反していてどのように指定したらいいのか分からない
33
+ これだと、空白セルだけの認識なので、「行の保護」と相反していてどのように指定したらいいのか分からない
34
34
 
35
35
  のですがどのように指定したらいいのか、教えていただけないでしょうか。
36
36
 
37
-  2.「保護」マクロを実行したら黄色の列もロックしたい。(N列、P列)
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
 

2

行と列の間違いを直しました

2019/03/27 14:21

投稿

green88008800
green88008800

スコア17

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目~15目までです)
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
-    ロックしていないの空白セルは自由に記述したいため(イメージ図では17目以降の空白セルです)
29
+    ロックしていないの空白セルは自由に記述したいため(イメージ図では17目以降の空白セルです)
30
30
 
31
31
     UsedRange.SpecialCells(Type:=xlCellTypeBlanks)で空白セルを認識させています。
32
32
 
33
- これだと、空白セルだけの認識なので、「のロック」と相反していてどのように指定したらいいのか分からない
33
+ これだと、空白セルだけの認識なので、「のロック」と相反していてどのように指定したらいいのか分からない
34
34
 
35
35
  のですがどのように指定したらいいのか、教えていただけないでしょうか。
36
36
 
37
-  2.「保護」マクロを実行したら黄色のもロックしたい。(N、P
37
+  2.「保護」マクロを実行したら黄色のもロックしたい。(N、P
38
38
 
39
-  単一を指定するのでNを指定するため
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

不要なコードを消して、コードを見直しました

2019/03/26 13:27

投稿

green88008800
green88008800

スコア17

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
-   イメージ図で言えば「E12」が最後ので11目~15列目でロック
15
+   書式は関係なくを認識してそ上のを指定する方法が分からずに困っており
16
16
 
17
-   ロックしていない列の空白セルは自由に記述したい(イメージ図で17列目以降の空白セル
17
+   (イメージ図で言えば「E12」が最後の値なので11列目~15列目までです
18
18
 
19
- 2.「保護」マクロ実行したら黄色行もロックしたい。(N行P行)
19
+    下方向に最終行検索するべきなかと思うのですが検索方法は
20
20
 
21
- 3. シートがロックされている時は「B4」セルにロック状態「ロック」「解除」を表示したい
21
+    Dim maxrow
22
22
 
23
- 4. ログインID認識シートをプロパティで「Vislible/0-xsheetHidden」で非表示に
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
  ![イメージ説明](75656c8a384c5c33368dc932258d6aba.jpeg)
28
68
 
69
+
70
+
29
71
  ```Option Explicit
30
72
 
73
+ Sub 保護() '管理簿シートに記述
31
74
 
75
+ If ActiveSheet.ProtectContents = False Then
32
76
 
33
- Sub 保護() ’管理簿シートに記述
77
+
34
78
 
35
- If ActiveSheet.ProtectContents = False Then
79
+ Cells.Locked = True
36
80
 
37
- Range("N11").EntireRow.Locked = True
81
+ ActiveSheet.UsedRange.SpecialCells(Type:=xlCellTypeBlanks).Locked = False
38
82
 
39
- Range("P11").EntireRow.Locked = True
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()   ’thisworkbookに記述
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 Long
103
+ Dim environmentstring As String
70
104
 
71
- i = 1
105
+ Dim username As String
72
106
 
73
- Do
107
+ Dim i
74
108
 
75
- environmentstring = Environ(i)
109
+
76
110
 
77
- If Left(UCase(environmentstring), 9) = "username=" Then
111
+ i = 1
78
112
 
79
- username = Mid(environmentstring, 10, Len(environmentstring))
113
+
80
114
 
81
- Sheets("ログインID認識").cell(3, 1).Value = username
115
+ Do
82
116
 
83
- Exit Do
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
- Loop Until Environ(i) = ""
137
+
90
138
 
139
+ Loop Until Environ(i) = ""
91
140
 
141
+ Application.ScreenUpdating = True
92
142
 
93
- Dim findrang As Range
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
+ ```