• ベストアンサー

VBAにて『元に戻すボタン』を作りたい

お世話になります。 当方、EXCEL2003を使用しております。 現在、Textboxに入力した値をエクセルのセルへ代入していく フォームを作成しているのですが、このフォームに『元に戻す』 ボタンを追加したいと考えております。 つまり、ひとたびセルに代入した値を代入される前の状態に戻す 作業をフォーム上から行いたいのです。 正直、vbaの知識はまだあまり持ち合わせておらず、本やネットを 参考に組んでいるレベルです。 どうか、宜しくお願いいたします。

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

  • ベストアンサー
  • hige_082
  • ベストアンサー率50% (379/747)
回答No.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で判断すればよいのです ここに気づけば、最初の回答と同じ処理でいけますよね

shunnosuke
質問者

お礼

なるほど、大変勉強になりました。 なんとか、思っていた通りに処理することが出来るようになりました。 どうもありがとうございました!

その他の回答 (1)

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.1

詳細が無いので要点だけ 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の変数は宣言セクションで宣言しなければいけません 分からない単語等は、自分で調べてね

shunnosuke
質問者

お礼

分かりやすい、ご回答ありがとうございます。 大変参考になりました。 私の説明不足で大変恐縮なのですが、実はフォーム内の コンボボックスで選んだ項目に応じて、入力が行われるセルが 変わる仕組みになっているのです。 この場合、ご説明頂いたような、("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

関連するQ&A