Sub VL()
Dim c As Integer
Dim e As Integer
Dim s1 As Worksheet
Dim i As String
e = Range("C65536").End(xlUp).Row
Set s1 = Worksheets("aaa")
' シートを保護していると使えない?
' シート保護を解除するマクロが必要?
For c = 6 To e
' Worksheets("shaban").Unprotect ←このようにしてみたが結局パスワードを求められる…
i = s1.Range("C" & c).Value
s1.Range("D" & c).Value = Application.WorksheetFunction.VLookup(i, Worksheets("shaban").Range("A2").CurrentRegion, 2, False)
' Worksheets("shaban").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True ←よくわからない
Next
End Sub
Sub vlookupsample()
Dim w As Worksheet
Set w = Worksheets("Sheet1")
w.Protect
'↓以下2行、どちらも実行不可。
Debug.Print WorksheetFunction.Sum(w.Range("A1").CurrentRegion)
Debug.Print WorksheetFunction.VLookup(2, w.Range("A1").CurrentRegion, 3, False)
End Sub
Sub vlookupsample()
> Dim w As Worksheet
> Set w = Worksheets("Sheet1")
> w.Protect
> '↓以下2行、どちらも実行不可。
> Debug.Print WorksheetFunction.Sum(w.Range("A1").CurrentRegion)
> Debug.Print WorksheetFunction.VLookup(2, w.Range("A1").CurrentRegion, 3, False)
>End Sub
受講生さんの投稿
(投稿ID: 2806)
こんにちは小川先生。
今迄講座を受け得た知識で過去に作ったマクロがあります。
今回、WorksheetFunctionを勉強させてもらったので、変更してWorksheetFunction.VLookupを取り込んでみようとしました。
しかしマクロを実行すると、VLookupで参照するシートには内容変更が起こらないようにシートの保護をしてあります。
シート保護をしてある状態でもWorksheetFunctionで保護の解除を求められない方法はありますか?
下記のようなマクロでシートの保護はWorksheets("shaban")にかかっています。
ご教授お願い致します。
また、発展編1を受講中ですがもう一度復習したのち次のステップに進もうと思ってます。
時間を作りながら勉強している状態でペースは遅いのですが次はどの講義を受講するのが良い手段ですか?
よろしくお願いします。
ゲストさんのコメント
(コメントID: 4258)
おお!ホントだ!
以下のコードで僕も確認しました。Excel2007にて実行。
VLoopUp以外にも、WorksheetFunction全滅みたいですね。
>シート保護をしてある状態でもWorksheetFunctionで保護の解除を求められない方法はありますか?
たぶんないでしょう。
一時的にプロテクトを外すか、面倒でも、VLookUp関数の替わりになるようなプロシージャを自作するよりないのではないでしょうか。
そういう代替回避策を自力で実装できるのがそもそもマクロを書けるってことですし。というか、後者の方法は、基礎編フォローで何度も練習していますね。
- - -
>また、発展編1を受講中ですがもう一度復習したのち次のステップに進もうと思ってます。
>時間を作りながら勉強している状態でペースは遅いのですが次はどの講義を受講するのが良い手段ですか?
>よろしくお願いします。
○もっと骨のあるしっかりしたプログラムを書けるようになりたい(興味の延長が洗練されたプログラム)→発展編2
http://www.exvba.com/hatten2.php
○自分に仕事が集中するのが嫌だ。プログラムを渡すから、そこから先は人にやってもらいたい→イベントとフォーム
http://www.exvba.com/ef.php
○ファイル・フォルダ操作、オフィス系の他のソフトとの連携を学びたい→外部連携講座
http://www.exvba.com/gaibu.php
○ウェブからのデータ取得、ウェブへのデータ送信のノウハウ連携を学びたい→Web連携講座
http://www.exvba.com/webr.php
特にアイデアがなければ発展編2がおすすめです。
他の講座を学ぶにも、先に発展編2をやったほうが習得しやすいです。
受講生さんのコメント
(コメントID: 4259)
>受講生 さん:
>
>おお!ホントだ!
>以下のコードで僕も確認しました。Excel2007にて実行。
>
>
>
>VLoopUp以外にも、WorksheetFunction全滅みたいですね。
>
>>シート保護をしてある状態でもWorksheetFunctionで保護の解除を求められない方法はありますか?
>
>たぶんないでしょう。
>一時的にプロテクトを外すか、面倒でも、VLookUp関数の替わりになるようなプロシージャを自作するよりないのではないでしょうか。
>そういう代替回避策を自力で実装できるのがそもそもマクロを書けるってことですし。というか、後者の方法は、基礎編フォローで何度も練習していますね。
>
>- - -
>
>>また、発展編1を受講中ですがもう一度復習したのち次のステップに進もうと思ってます。
>>時間を作りながら勉強している状態でペースは遅いのですが次はどの講義を受講するのが良い手段ですか?
>>よろしくお願いします。
>
>○もっと骨のあるしっかりしたプログラムを書けるようになりたい(興味の延長が洗練されたプログラム)→発展編2
>http://www.exvba.com/hatten2.php
>
>○自分に仕事が集中するのが嫌だ。プログラムを渡すから、そこから先は人にやってもらいたい→イベントとフォーム
>http://www.exvba.com/ef.php
>
>○ファイル・フォルダ操作、オフィス系の他のソフトとの連携を学びたい→外部連携講座
>http://www.exvba.com/gaibu.php
>
>○ウェブからのデータ取得、ウェブへのデータ送信のノウハウ連携を学びたい→Web連携講座
>http://www.exvba.com/webr.php
>
>特にアイデアがなければ発展編2がおすすめです。
>他の講座を学ぶにも、先に発展編2をやったほうが習得しやすいです。
>
>
>
>
>
>
回答早いですね。助かります。
大変参考になりました。
ありがとうございます。