アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルで簡単な学習ツールを作っています。

シートは「問題」シートと「解答」シートの2シートがあり、「解答」シートは非表示になっています。
「問題」シートで解答者の名前をプルダウンで選択し、正解だと思う解答のラジオボタンを選択し、
最後に解答ボタンを押すと、入力した内容が非表示の「解答」シートに反映するような仕組みに
したいのですが、どうすればうまくいきますか?

現在

Private Sub workbook_open()

Sheets("問題").Select
Range("K1") = 0
Range("K2") = 0
Sheets("解答").Select
Range("B2") = 0
Range("C2") = 0
Sheets("問題").Select
Range("B2") = ""

End Sub

と入力していますが、「解答」シートが非表示になっているためデバックになります。
非表示の「解答」シートに入力内容が反映する方法を教えてください。

A 回答 (3件)

非表示のシートを操作するときにSelectを使うことはできません。


単に次のようにすれば非表示のシートのデータを変更できますね。

Sheets("問題").Select
Range("K1") = 0
Range("K2") = 0
Sheets("解答").Range("B2") = 0
Sheets("解答").Range("C2") = 0
Sheets("問題").Select
Range("B2") = ""
    • good
    • 1
この回答へのお礼

解決しました!

非表示シートにSelectは使えないんですね。。

ありがとうございました。

お礼日時:2012/06/24 13:22

No.2です!


たびたびごめんなさい。

前回はBookを開いたときのコードだけでしたね!

>最後に解答ボタンを押すと、入力した内容が非表示の「解答」シートに反映するような仕組みに
>したいのですが・・・

の部分を忘れていました。
具体的なSheetのレイアウトが判らないので

問題Sheet上にコマンドボタンを一つ配置します。
コマンドボタンのプロパティから「Caption」を「解答」などにしておきます。

コマンドボタン上でダブルクリック → VBE画面に↓のコードをコピー&ペースト

Private Sub CommandButton1_Click()
With Sheets("解答")
.Range("A2") = Range("B2")
.Range("B2") = Range("K2")
.Range("C2") = Range("K3")
End With
Range("K2:K3") = 0
Range("B2").Select
Selection = ""
End Sub

※ 1行目と最終行はダブルクリックした段階で表示されますので、2行目以降をコピー&ペーストし
デザインモードを解除して
コマンドボタンをクリックします。

※ あくまで憶測ですが、余計なお世話かもしれませんけど
問題SheetのB2セルが氏名欄になっているとして
B2セル → 解答SheetのA2セル
K2セル → 解答SheetのB2セル
K3セル → 解答SheetのC2セル
に表示させるようにしてみました。

おそらくこの配置だと問題SheetのB2セルの変更があるたびに回答Sheetの2行目以降に続けて表示したい!
といった操作をしたいような感じがしますが、
あまりに先走ってもいけないので

この程度で・・・m(_ _)m
    • good
    • 0

こんにちは!


No.1さんが仰っている通りなので、余計なお世話かもしれませんが・・・

With Sheets("問題")
.Range("K1:K2") = 0
.Range("B2") = ""
End With
Sheets("解答").Range("B2:C2") = 0

といった具合でも大丈夫だと思います。

※ 今回のコードの場合はあまり問題ないと思いますが、
Selection を使わない方が処理速度は速くなります。m(_ _)m
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A