VBA初心者です。すみませんが教えてください。
このファイルは「管理簿」「ログインID認識」の2つのシートがあり、「ログインID認識」でログインIDを取得します。
それをもとに「ログイン認識」シートにVLOOK関数で管理者の名前を抽出させ、
「ログイン認識」VLOOK関数で抽出させたユーザーネームを「管理簿」シートの黄色の列に、入力規則によりプルダウンで選択させ、管理者がログインした時だけ管理者のユーザーネームがプルダウンで表示されるようになっています。
Excel2013で作成
1. B列を基準にして、B列の最後の値(書式ではなく)から上の行を保護したいのですが、
書式は関係なく最終の値を認識してその上の行を指定する方法が分からずに困っております。
(イメージ図で言えば「E12」が最後の値なので11行目~15行目までです)
下方向に最終行を検索するべきなのかと思うのですが、検索方法は
Dim maxrow
maxrow=Range("E65536").End(xlUp).Row
で合っていますか?これだと最終セルだけが認識されているような気がして間違っているような気がします。
その上の行を全部指定する方法なのですが、どのように行全体を指定したらいいのかが分からず困っております。
保護していない行の空白セルは自由に記述したいため(イメージ図では17行目以降の空白セルです)
UsedRange.SpecialCells(Type:=xlCellTypeBlanks)で空白セルを認識させています。
これだと、空白セルだけの認識なので、「行の保護」と相反していてどのように指定したらいいのか分からない
のですがどのように指定したらいいのか、教えていただけないでしょうか。
2.「保護」マクロを実行したら黄色の列も保護したい。(N列、P列)
単一列を指定するのでN列を指定するため
Columns(14).Interior.Locked = True
と書いて実行してみました。そうすると、保護されるセルと保護されないセルがあり、
(「N11」「N21」セルは保護されたのに「N18」は保護されない)
どうして同じ列なのに保護されるセルとされないセルがあるのか分からず悩んでいます。
3. ログインID認識シートをプロパティで「Vislible/0-xsheetHidden」で非表示に
して、更にパスワードかけたいのですが、
ActiveSheet.Protect Password:="●●●●●"
のようにパスワードを指定する方法などあるものでしょうか?
基本的な考え方も勉強中で、おかしいコードなどが混ざっているかもしれません。
すみませんが、ご教授いただけませんでしょうか。
Option
1Sub 保護() '管理簿シートに記述 2 If ActiveSheet.ProtectContents = False Then 3 4 Cells.Locked = True 5 ActiveSheet.UsedRange.SpecialCells(Type:=xlCellTypeBlanks).Locked = False 6 7 ActiveSheet.Protect Password:="●●●●●●" 8 End If 9End Sub 10コード
Option
1Private Sub Workbook_Open() 'ThisWorkbookに記述 2 Application.ScreenUpdating = False 3 4 Dim environmentstring As String 5 Dim username As String 6 Dim i 7 8 i = 1 9 10 Do 11 environmentstring = Environ(i) 12 13 If Left(UCase(environmentstring), 9) = "USERNAME=" Then 14 username = Mid(environmentstring, 10, Len(environmentstring)) 15 Sheets("ログインID認識").Cells(3, 1).Value = username 16 17 Exit Do 18 End If 19 20 i = i + 1 21 22 Loop Until Environ(i) = "" 23 Application.ScreenUpdating = True 24 25End Sub 26コード

回答3件
あなたの回答
tips
プレビュー