• 締切済み

入力規則により選択された値をVBAで変更する

教えてください。 エクセルファイルのシート1のA1セルに入力規則(リスト)が設定してあります。 この参照リストは、セル「AA1:AA3」にあります。 AA1:赤 AA2:青 AA3:黄 このように入力されています。 このシート1のA1セルの値が「黄」であれば「赤」にVBAで変更したいのですが、 「Worksheets(sheet1).Range("A1").Value = "赤"」と記述しても変更してくれません。 ちなみに、このシートには保護がかけられています。 以上宜しくお願いします。

みんなの回答

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

例えば次のようにWorksheets(sheet1)を次のように変更すればよいでしょう。 If Worksheets("Sheet1").Range("A1").Value = "黄" Then Worksheets("Sheet1").Range("A1").Value = "赤" End If もともとシートは保護されていてもA1セル自体は保護されていないはずですね。でないとリストによる変更もできないのですから。

全文を見る
すると、全ての回答が全文表示されます。
  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

シートの保護を解除するしかないかと。もしくは変更したいセルのロック解除とか。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • EXCEL 名前の定義 VBA参照の方法

    EXCELの名前の定義を、VBAから参照する方法を教えていただきたいのですが  名前を定義する    シートA  名前:TEST 範囲:シートA    シートB  名前:TEST 範囲:シートB    シートC  名前:Pass 範囲:ブック  それぞれをVBAから参照する場合    Range("TEST").Value: シートA内のVBA    Range("Pass").Value  では、参照できず。    Worksheets("シートA").Range("TEST").Value    Worksheets("シートC").Range("Pass").Value  にて、参照できました。 明示的なシート名入力が必要なのでしょうか? よろしくお願いいたします。

  • VBA:Offsetから値が貼付けれない

    はじめまして。 VBAを利用してマクロを作っているのですが、 Range("a6:l6").Copy Worksheets("結果シート").Range("A65536").End(xlUp).Offset(1) というのは動くのですが、結果シートへの貼付けを「値」で行いたいと思い、 以下の通りValueを指定しても動きません。 Range("a6:l6").Copy Worksheets("結果シート") .Range("A65536").End(xlUp).Offset(1).value PasteSpecialを使うと良いのかと思い、 Range("a6:l6").Copy Worksheets("結果シート") .Range("A65536").End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues としてもエラーが出ます。 数式の結果を取得して、別のシートの空白セルを探し、「値」として張付ける。 というのがしたいのですが、なにか上手い方法があれば、ご教授お願いします。

  • excel(2003,2007) VBA 入力規則 別シートを参照した

    excel(2003,2007) VBA 入力規則 別シートを参照したリストについて、リストの中身しか選べなくしたい OS:Windows XP Office:2003,2007 入力規則でリストを作った時、「元の値」に別シートに作ったリストを参照する設定にしています。 そのリストの内容が「赤」「青」「黄」だった場合、その3つしか選べないように制限することは可能でしょうか? 同じシート内にリストを作れば可能であることは知っていますが、別シートを参照した状態でもそれができればいいなと思っています。 別シートを参照している場合は無理なのか、無理でなければどうすればいいのか。 方法をご存知の方、教えてください。宜しくお願い致します。

  • エクセルのフォームのVBAについて

    VBAがまったくわからないのに参考書を見て高度な事に挑戦しています フォームは作れてフォームをクリックやら入力やらして作ったOKボタンを押すと シート2のA1B1C1‥の列に入力文字だけが羅列されます。 しかし次にやろうとするとA2B2C2‥と下に行かず又A1B1C1‥の列の文字が変更になり続きません。何がいけないのでしょうか? Sub 入力() Dim LastRow As Long With Worksheets("sheet2") LastRow = Worksheets("sheet2").Range("A" & Rows.Count).End(xlUp).Row .Range("A" & LastRow).Value = Worksheets("sheet1").Range("A5").Value .Range("B" & LastRow).Value = Worksheets("sheet1").Range("A7").Value .Range("C" & LastRow).Value = Worksheets("sheet1").Range("A8").Value .Range("D" & LastRow).Value = Worksheets("sheet1").Range("A10").Value End With End Sub と参考書とおりいれたのですが‥。教えて下さい。

  • VBA 最終行の値を取得

    Excel2007です。 印刷用シートに、用紙を4分割して、4件分のカードを印刷できるようにしてあります。 A1, F1, A10, F10の入力セルに、それぞれデータシートのNo.を入れると、vlookupで連動されるようになっています。 No.の入力セルは、4ずつ加算されるようにVBAを書きました。 さらに、データシートの最終No.を超えた場合に、メッセージボックスを出したいのですが、うまくいきません。 例えば、データシートが200件まで入力されているとして、印刷シートのNo.に「201」を入力すると、「これ以上データがありません」というメッセージを表示させたいです。 Sub 次データ() Dim 最終行 As Long, 最終値 As Long Dim my As String 最終行 = Worksheets("データ").Range("A1048576").End(xlUp).Row 最終値 = Cells(最終行, 1) Worksheets("印刷用").Select Range("A1").Value = Range("A1") + 4 Range("F1").Value = Range("F1") + 4 Range("A10").Value = Range("A10") + 4 Range("F10").Value = Range("F10") + 4 If Range("A1") > 最終値 Or Range("F1") > 最終値 Or Range("A10") > 最終値 Or Range("F10") > 最終値 Then my = MsgBox("これ以上データがありません", vbOKOnly + vbExclamation, "注意!") End If End Sub このように書いてみましたが、これだと「次データ」を実行する度にメッセージボックスが出てしまいます。 どこを直せばいいのでしょうか。 分かりづらい文章ですみません。 なにぶん、VBAをかじりかけたばかりで、ド素人ですのでよろしくお願いします。

  • VBAで入力規則の設定

    いつもお世話になっております。 VBAを勉強して3ヶ月程度の初心者です。 VBAでの入力規則の設定について質問させていただきます。 A1セルに入力規則の設定を行い、0~10までの数値を選択できるようにしたいと考えています。 Sub Test() Range("A1").Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertInformation _ , Formula1:="0,1,2,3,4,5,6,7,8,9,10" End Sub とコードを記述すれば、確かに望みの仕様は満たされるのですが、複数のセルに入力規則を設定する場合、 また、リストの数が増えた場合を考えて、"1,2,3,4,5,6,7,8,9,10"を変数に出来ない?と考えて・・・ Sub Test2() Dim kazu(10) As Long kazu(0) = 0 kazu(1) = 1 kazu(2) = 2 kazu(3) = 3 kazu(4) = 4 kazu(5) = 5 kazu(6) = 6 kazu(7) = 7 kazu(8) = 8 kazu(9) = 9 kazu(10) = 10 Range("A2").Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertInformation _ , Formula1:=kazu End Sub なんて事もやってみましたが・・・駄目でした。 もう一点、初期値に0を表示したい場合は、入力規則コードの後に、  Range("A1").Value=0 と表示すればよいのでしゅか? ご指導をよろしくお願いいた

  • EXCELの入力規則に関して

    EXCEL 2003 で簡単な品物の管理表を作成しています。 例えば、品目としてパソコンがあり、品番としてAとBが有ったとします。 "パソコン"はセルにそのまま表示させ、品番は入力規則でAとBと書かれたセルを参照させ、ドロップダウンリストで選択するような作り方をしています。 このような場合での質問です。 1)入力規則で別シートのセルを参照先とすることはできますか。 2)参照先を作成せずに、ドロップダウンリストを作ることはできますか。(値一覧をセルやデータに内包するような感じです) 3)入力規則を複数のシートにコピーし、片方の値を変更した場合、別シートの同じ入力規則の値も連動して変更させることは出来ますか。 入力規則の機能では作りきれない部分も有るかとは思いますが、なにか良いアイデアがあればご提案いただくと有り難いです。

  • VBAについて

    こんばんは、下記のVBAについて質問をさせてください…! シートの名前と特定の列の名前が一致したらデータを引っ張ってくるというVBAなのですが、下記のVBAではもってくるデータはE列でおわりですが、もっと沢山列がある場合で、例えばDA列とかまである場合はどうすればよいのでしょうか…?! まさか「.Range("A" & cellCnt).~」というのを一つ一つ入力するわけではないと思うのですが、記述の方法が分からず困っています。 どなたかご教示いただけると大変助かります…! ' データをとってくるシートの行 Dim dataCnt As Integer ' 貼り付け先のシートの行 Dim cellCnt As Integer cellCnt = 1 For dataCnt = 1 To Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row If Sheets("Sheet1").Range("L" & dataCnt).Value = Sheets(sheetIdx).Name Then With Worksheets(sheetIdx) .Range("A" & cellCnt).Value = Worksheets("Sheet1").Range("A" & dataCnt).Value .Range("B" & cellCnt).Value = Worksheets("Sheet1").Range("B" & dataCnt).Value .Range("C" & cellCnt).Value = Worksheets("Sheet1").Range("C" & dataCnt).Value .Range("D" & cellCnt).Value = Worksheets("Sheet1").Range("D" & dataCnt).Value .Range("E" & cellCnt).Value = Worksheets("Sheet1").Range("E" & dataCnt).Value End With cellCnt = cellCnt + 1 End If Next

  • 「入力規則」のリストとVLOOKUP関数機能をあわせたような設定

    いろいろ調べてみたのですが、分からなくて。 Excelで下記のような設定が可能かどうか教えて下さい。 ------------------------------------------------------- (Sheet1)   A   B 1 赤系 2 青系 3 黄系 A列は「入力規則」のリストを用いて、"赤系","青系","黄系"のいずれかを選択できる設定になっている。 A1のように"赤系"を選択した場合、B1にはそれに応じた別のリスト("チューリップ","ガーベラ","コスモス")を表示させる。 しかし、A2のように"青系"を選択したらB2には"バラ"を、A3のように"黄系"を選択したらB3には"ヒマワリ"を直接表示させる。 ------------------------------------------------------- 以上のような内容のものです。 (Sheet2)で、以下のように入力して入力規則のリスト用に名前をつけ、"青系"と入力したら"バラ"という項目のみをリスト表示させるようにするっていう手もありますが、、 (Sheet2)   A        B     C 1 赤系      青系   黄系 2 チューリップ  バラ   ヒマワリ 3 ガーベラ 4 コスモス そうすると、わざわざリストをドロップダウンさせたり何かしらアクションを起こさないといけないですよね。。 そういった手間もなく、"青系"もしくは"黄系"を選択した場合には"バラ"や"ヒマワリ"が表示されるようにしたいんです。 ここで"赤系"がなければVLOOKUP関数で対応できるのですが…。 このような、入力規則とVLOOKUP関数をミックスしたような設定はできるのでしょうか? できればVBAを用いず、関数で対応したいと思っています。 詳しい方、ご教示願いますM(_ _)M

  • Excel 入力規則(リスト)

    入力規則のリスト機能にて、 元の値のセルを複数のパターン色(赤・青・黄)を 設定しましたが、選択時空白のセルが表示されました。 別の方法でもよろしいですので、 簡単に希望のセルにパターン色(赤・青・黄) 表示させる方法を教えてください。

このQ&Aのポイント
  • E495のBIOSを1.28に更新したところ、Firefoxで動画サイト再生中にPCが応答しなくなることが頻発
  • BIOSに問題があるのか?
  • 現在はBIOSの「Secure Rollback Prevention」をDisableにしてBIOSを1.26に戻して様子見中
回答を見る