|
以下、先のコードにコメントをつけてみました。
解りにくければ、再度書き込みください。
(一部、直したほうが良いかも、というところを発見しました)
'数値の符号決定用変数
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
|
|