| 
    
     |  | 以下、先のコードにコメントをつけてみました。 解りにくければ、再度書き込みください。
 (一部、直したほうが良いかも、というところを発見しました)
 
 '数値の符号決定用変数
 Dim lngSign   As Long
 
 'あめボタンの処理
 Private Sub CommandButton1_Click()
 '初めて実行する場合、lngSignは初期値の0が設定されているため、プラス1に変更
 If lngSign = 0 Then lngSign = 1
 'あめデータの入力
 '-- A列最終行から Ctrl+↑ の操作で選択される行の次の行のA:B列の値を設定
 '-- テストのため、A列には「あめ」、B列には 符号×100 の固定値を設定
 Cells(65536, 1).End(xlUp).Offset(1).Resize(, 2).Value _
 = Array("あめ", lngSign * 100)
 '直前に取り消しボタンが押されていたらマイナス1になっているため、プラス1に戻す
 lngSign = 1
 End Sub
 
 '指定取り消しボタンの処理
 Private Sub CommandButton2_Click()
 '次にあめボタンを押したときに、金額の符号をマイナスにするためマイナス1を代入
 lngSign = -1
 'よく考えたら、取り消しを取り消すことが出来ないので、↓のほうが良いかも
 '-- 変数の符号を逆転(取り消しを取り消したかったら、もう1度このボタンをクリックすればよい)
 'lngSign = -1 * lngSign
 End Sub
 ------------------------------------------
 >Q1 ifに関するElseはどこにあるのでしょう?もし書くとしたらどこですか?
 ↓この文についてですよね?
 >If lngSign = 0 Then lngSign = 1
 これは、1行で書く形式のIfステートメントです。
 Elseの処理が不要で、条件が成立したときに行う処理が短いので、この形式で書いています。
 If lngSign = 0 Then
 lngSign = 1
 End If
 と同じです。
 その他の形式については、ヘルプをご覧になると良いと思います。
 
 >Q2 Cells(65536, 1)と、行の最後まで書く必要的なものがわからないんです。
 コメントにも書いていますが、
 Cells(65536, 1).End(xlUp)
 この部分が、A列最終行のセルを選択した状態で、Ctrl+↑ の操作をしたときに選択されるセルを表しています。
 Ctrl+↑ を利用してデータの最終行を求めるのは、割とメジャーな手法です。
 途中に空白セルがないことが保証されていれば、逆に、Ctrl+↓ を利用することも可能です。
 Cells(1,1).End(xlDown)
 # 但し、A1が空白または、A2が空白の場合、65536行目が選択されてしまいます。
 
 >私は下のように書いておりました。
 ええと、申し訳ないのですが、ちょっとよく、コードがわからなかったのです。
 おやりになりたいことが、読みきれませんでしたので、勝手に全然違う形で書かせていただきました。m(_ _)m
 
 |  |