• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA データセットした後にその一部をLOCK)

VBAでデータを取得し、一部をロックする方法

このQ&Aのポイント
  • VBAを使用してエクセルからアクセスのデータを取得し、一部をロックしたいです。
  • B12~E1000の範囲は開いている間は手入力不可にしたいです。
  • 読込ボタンを押した後はB12~E1000のロックを外したいです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

> 赤字化されているセルの値をアクセスに更新する仕様なのですが、 > この赤字化するモジュール内でエラーになってしまいます。 試してみました。 保護を有効にするとき、デフォルトでは書式の変更が許可されていないためと思われます。 ActiveSheet.Protect AllowFormattingCells:=True のように許可してやればエラーが消えました。 ほかにも色々オプションがありますので、Worksheet.Protect のヘルプを見て仕様に合うよう調整してください。

参考URL:
http://msdn.microsoft.com/ja-jp/library/ff840611.aspx
ARIES10
質問者

お礼

ありがとうございます! 出来ました。 cellsとrangeの影響等は無関係でしたね。 調べる方向性がまったく違っていてうまく目的に到達できませんでした。 大変助かりました、ありがとうございます。 参考URLも見ました。 役に立つサイトをありがとうございます。

その他の回答 (2)

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.2

#1 です。 ごめんなさい。 当方Excel2010ですが、VBAでシート保護を行うと パスワードの設定はしていないにもかかわらず、 UnProtect しようとすると、パスワードを要求される事態に。。。 ????????????????????????????? そちらのエラーの原因はWorksheet.Protect メソッドのパラメータが適切でないため? のような気がしますけれども、 申し訳ありません、こちらを閉じて、再度質問を立て直して あらまほしき先達の方のご登場をおまちください。 すみません。

ARIES10
質問者

お礼

おはようございます。 ご連絡ありがとうございます。 nicotinismさまの状況はまた私のものとは 違うようですね。。 この質問は閉じないこととしようと思います。 実現したいことができていないことと nicotinismさまとのやりとりから私の最新の 状況がお伝えできるかと思うためです。 どなたか、ご回答よろしくお願いいたします。 nicotinismさま、改めて迅速なご回答、 そして最新の私の状況にもご対応を試みて下さり ありがとうございました。感謝しています。

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

>実装しようとすると >「RangeクラスのLockedプロパティを設定できません」というエラーが出てしまって 問題を切り分けるために別の適当なファイルで ロック・アンロックのSub モジュール2個だけをつくって試されては? RangeクラスのLockedプロパティを設定できません でGoogleとシート保護・セルのロックの順番が違うとダメとか 連結セルが・・ とかヒットしますけど。。

ARIES10
質問者

お礼

ありがとうございます。 subモジュール2個で試してみました。 そのテストはうまく行ったので ロック処理とアンロック処理の記述を 上記ソースの先頭と末尾にセットしました。 先頭 ActiveSheet.Unprotect '//シート保護を解除 末尾 Range("F12:Z1000").Locked = False '//在庫数部分のみアンロック Range("AB12:AB1000").Locked = False '//備考部分のみアンロック ActiveSheet.Protect '//シート保護 ほぼ成功したのですが、上記adoRsでデータセットしている部分のセルの数値を変更すると、そのセルを赤字化し、 赤字化されているセルの値をアクセスに更新する仕様なのですが、この赤字化するモジュール内でエラーになってしまいます。 エラー箇所は以下で Private Sub Worksheet_Change(ByVal Target As Range) Dim r As Long, c As Long c = Target.Column '変更されたセルの列 r = Target.Row '変更されたセルの行 If c < 6 Or 26 < c Or r < 12 Or 100 < r Then Exit Sub '範囲外なら終了 Cells(r, c).Font.ColorIndex = 3 'セルを赤文字に【ココ】 End Sub エラー内容は以下です。 「アプリケーション定義またはオブジェクト定義のエラーです。」 RangeとCellsはよく一緒に見かけるのですが、 今回セルのロックにRangeを使っていることにより この赤字化のCellsの部分に影響を及ぼしているのではないかと推測しています。 状況と解決策がお分かりでしたらよろしくお願いいたします。

関連するQ&A