- ベストアンサー
VBAにて『元に戻すボタン』を作りたい
お世話になります。 当方、EXCEL2003を使用しております。 現在、Textboxに入力した値をエクセルのセルへ代入していく フォームを作成しているのですが、このフォームに『元に戻す』 ボタンを追加したいと考えております。 つまり、ひとたびセルに代入した値を代入される前の状態に戻す 作業をフォーム上から行いたいのです。 正直、vbaの知識はまだあまり持ち合わせておらず、本やネットを 参考に組んでいるレベルです。 どうか、宜しくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>この場合、ご説明頂いたような、("a1")のように特定のセルを記述する方法だとうまくいかないのです。 別に数が増えただけで、基本的に出来ますよ '書き込みボタン Private Sub CommandButton1_Click() Select Case ComboBox1 Case "第1分冊_テキスト" rtn0 = ComboBox1.Value rtn1 = Range("E7").Value rtn2 = Range("H7").Value rtn3 = Range("I7").Value rtn4 = Range("I7").Interior.Color Range("H7") = Range("E7").Value Range("I7").Interior.Color = vbYellow Range("I7") = "" Range("E7") = TextBox1.Value TextBox1 = "" Case "第1分冊_添削問題" rtn0 = ComboBox1.Value rtn1 = Range("E8").Value rtn2 = Range("H8").Value rtn3 = Range("I8").Value rtn4 = Range("I8").Interior.Color Range("H8") = Range("E8").Value Range("I8").Interior.Color = vbYellow Range("I8") = "" Range("E8") = TextBox1.Value TextBox1 = "" End Select End Sub '戻すボタン Private Sub CommandButton2_Click() Select Case rtn0 Case "第1分冊_テキスト" Range("E7").Value = rtn1 Range("H7").Value = rtn2 Range("I7").Value = rtn3 Range("I7").Interior.Color = rtn4 Case "第1分冊_添削問題" Range("E8").Value = rtn1 Range("H8").Value = rtn2 Range("I8").Value = rtn3 Range("I8").Interior.Color = rtn4 End Select End Sub 同じ処理なので、後半端折りました ComboBoxの値も変数へ取り込み 書き込みの時と同じように、その変数でselect caseで判断すればよいのです ここに気づけば、最初の回答と同じ処理でいけますよね
その他の回答 (1)
- hige_082
- ベストアンサー率50% (379/747)
詳細が無いので要点だけ textboxからセルへ書き出しは range("a1").value=userform1.textbox1.value のようにしてるとして セルへ書き出す前に、セルの値を他のセルや変数に書き出す必要があります 例として 1 他のセルに記憶しておく(シート2のA1) worksheets("sheet2").range("a1").value=userform1.textbox1.value range("a1").value=userform1.textbox1.value 2 変数に記憶しておく(変数=abc) abc=userform1.textbox1.value range("a1").value=userform1.textbox1.value 戻す場合は 1 セルに記憶したものを戻す range("a1").value=worksheets("sheet2").range("a1").value 2 変数に記憶したものを戻す range("a1").value=abc 基本的にはこのような方法になるかと思います 注意点は、2の変数は宣言セクションで宣言しなければいけません 分からない単語等は、自分で調べてね
お礼
分かりやすい、ご回答ありがとうございます。 大変参考になりました。 私の説明不足で大変恐縮なのですが、実はフォーム内の コンボボックスで選んだ項目に応じて、入力が行われるセルが 変わる仕組みになっているのです。 この場合、ご説明頂いたような、("a1")のように特定のセルを記述する方法だとうまくいかないのです。 『以下抜粋』 Private Sub CommandButton1_Click() Select Case ComboBox1 Case "第1分冊_テキスト" rtn1 = ("E7") rtn2 = ("H7") Range("H7") = Range("E7") Range("I7").Interior.Color = vbYellow ActiveCell.Value = "" Range("E7") = TextBox1 TextBox1 = "" Case "第1分冊_添削問題" Range("H8") = Range("E8") Range("I8").Interior.Color = vbYellow Range("I8") = "" Range("E8") = TextBox1 TextBox1 = "" Case "第1分冊_答案" Range("H9") = Range("E9") Range("I9").Interior.Color = vbYellow Range("E9") = TextBox1 TextBox1 = "" Case "第1分冊_模範" Range("H10") = Range("E10") Range("I10").Interior.Color = vbYellow Range("E10") = TextBox1 TextBox1 = "" End Select End Sub
お礼
なるほど、大変勉強になりました。 なんとか、思っていた通りに処理することが出来るようになりました。 どうもありがとうございました!