Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


11370 / 13646 ツリー ←次へ | 前へ→

【16178】指定取消ボタンで商品マイナス表示! いし 04/7/20(火) 12:35 質問[未読]
【16181】Re:指定取消ボタンで商品マイナス表示! Asaki 04/7/20(火) 15:06 発言[未読]
【16186】Re:指定取消ボタンで商品マイナス表示! いし 04/7/20(火) 16:20 発言[未読]
【16187】Re:指定取消ボタンで商品マイナス表示! いし 04/7/20(火) 16:23 質問[未読]
【16189】Re:指定取消ボタンで商品マイナス表示! Asaki 04/7/20(火) 16:37 回答[未読]
【16194】Re:指定取消ボタンで商品マイナス表示! いし 04/7/20(火) 17:16 発言[未読]
【16195】Re:指定取消ボタンで商品マイナス表示! Asaki 04/7/20(火) 17:34 回答[未読]
【16202】Re:指定取消ボタンで商品マイナス表示! いし 04/7/20(火) 18:24 発言[未読]
【16211】Re:指定取消ボタンで商品マイナス表示! Asaki 04/7/20(火) 23:02 回答[未読]
【16225】Re:指定取消ボタンで商品マイナス表示! いし 04/7/21(水) 11:41 お礼[未読]
【16231】Re:指定取消ボタンで商品マイナス表示! いし 04/7/21(水) 15:46 質問[未読]
【16244】Re:指定取消ボタンで商品マイナス表示! Asaki 04/7/22(木) 0:08 回答[未読]
【16482】Re:指定取消ボタンで商品マイナス表示! ペリカン 04/7/28(水) 18:25 お礼[未読]
【16307】Re:指定取消ボタンで商品マイナス表示! [名前なし] 04/7/24(土) 11:15 発言[未読]
【16308】Re:指定取消ボタンで商品マイナス表示! [名前なし] 04/7/24(土) 11:24 発言[未読]
【16483】Re:指定取消ボタンで商品マイナス表示! ペリカン 04/7/28(水) 18:27 お礼[未読]
【16484】Re:指定取消ボタンで商品マイナス表示! いし 04/7/28(水) 18:30 お礼[未読]

【16178】指定取消ボタンで商品マイナス表示!
質問  いし  - 04/7/20(火) 12:35 -

引用なし
パスワード
   下記のように記載し、ボタンを押下時、エクセルシートに
”あめ 100”と表示しています。
指定取消ボタンを押下→あめボタン押下すると、
”あめ -100”と表示したいです。

※ボタンはあめ以外に沢山あるので指定取消しをしたいのですが、
データの保時の仕方がわかりません。何か良い方法はないでしょうか?
助けて下さい。

Private Sub CommandButtonあめ_Click()
Dim L As Integer
Cells(1, 1).Value = Cells(1, 1) + 1 'セルの(1.1)に"初期値0"+1
L = Cells(1, 1).Value        'Lに入れる
Cells(L + 1, 2).Value = "あめ"  '(L+1)行、2列に表示!

Dim k As Currency '金額表示
Cells(1, 2).Value = Cells(1, 2) + 1 'セルの(1.2)に"初期値0"+1
k = Cells(1, 2).Value 'kに入れる
Cells(k + 1, 3).Value = CCur("100") '(k+3)行、3列に表示!

End Sub

【16181】Re:指定取消ボタンで商品マイナス表示!
発言  Asaki  - 04/7/20(火) 15:06 -

引用なし
パスワード
   こんにちは。

なかなかレスがつきませんが、
多分、何がしたいのか、よくわからないためかと。。。

今一度、
どのような場合に、どうしたいのか、ということを、
シートレイアウトなどを含めて
説明されることをお勧めします。

【16186】Re:指定取消ボタンで商品マイナス表示!
発言  いし  - 04/7/20(火) 16:20 -

引用なし
パスワード
   >どのような場合に、どうしたいのか、ということを、
>シートレイアウトなどを含めて
>説明されることをお勧めします。

あめボタン押下時
 ↓
”あめ 100”と表示。

指定取消ボタンを押下(加えて)→あめボタン押下時
 ↓
”あめ -100”と表示。

※指定取消しボタンとは、"あめ"という指定した項目を
キャンセルしたい為、マイナスで表示し、エクセル上
SUM関数で、金額をマイナスするという事です。

なんて説明してよいのやら・・
こんな感じではわかりませんかねぇ?

【16187】Re:指定取消ボタンで商品マイナス表示!
質問  いし  - 04/7/20(火) 16:23 -

引用なし
パスワード
   現在、このような表示になっております。

あめ  100
りんご 200
めろん 300

指定取消しボタン と あめボタンを押すと

あめ  100
りんご 200
めろん 300
あめ  -100

と表示させたいのです。
本当に困っております。
どなたか教えてくださいませ。m(_ _)m

【16189】Re:指定取消ボタンで商品マイナス表示!
回答  Asaki  - 04/7/20(火) 16:37 -

引用なし
パスワード
   ちょっと、実際の操作が良く分かりませんので、
ボタンを押すと、ActiveCellのデータをマイナス
するようにしてみました。
なお、データはA列に項目名、B列に数字で1行目から入っているとします。

Private Sub CommandButton1_Click()
  If Intersect(ActiveCell, Columns("A:B")) Is Nothing Then Exit Sub
  If ActiveCell.Value = "" Then Exit Sub
  Cells(65536, 1).End(xlUp).Offset(1).Resize(, 2).Value _
    = Array(ActiveCell.EntireRow.Cells(1).Value, _
    -1 * ActiveCell.EntireRow.Cells(2).Value)
End Sub

【16194】Re:指定取消ボタンで商品マイナス表示!
発言  いし  - 04/7/20(火) 17:16 -

引用なし
パスワード
   ▼Asaki さん:
いろいろ検討して頂いてすいません。
でも私が今悩んでいるのは、一つ前の削除ではなく、

指定ボタンを押してから、
Aボタンを押すと、A項目とAの金額がマイナスで表示
されるというものです。

指定ボタンを押すと1度に限り、その次に押す項目が
マイナスで表示されるというものなんです。

言葉で表しきれないのがもどかしいのですが・・・

【16195】Re:指定取消ボタンで商品マイナス表示!
回答  Asaki  - 04/7/20(火) 17:34 -

引用なし
パスワード
   今ひとつ良く分かりませんが、モジュールレベルの変数にフラグを設定しておいて、
取り消しボタンを押したときに-1を設定、
通常のあめボタンの入力時に、値にその変数を掛け算するとか。

Dim lngSign   As Long

'あめボタンの処理
Private Sub CommandButton1_Click()
  If lngSign = 0 Then lngSign = 1
  'あめデータの入力
  Cells(65536, 1).End(xlUp).Offset(1).Resize(, 2).Value _
    = Array("あめ", lngSign * 100)
  lngSign = 1
End Sub

'指定取り消しボタンの処理
Private Sub CommandButton2_Click()
  lngSign = -1
End Sub

>一つ前の削除ではなく、
良く意味がわかりません。
そんな風なコードにした覚えはないんですが。

【16202】Re:指定取消ボタンで商品マイナス表示!
発言  いし  - 04/7/20(火) 18:24 -

引用なし
パスワード
   ▼Asaki さん:
>>一つ前の削除ではなく、
>良く意味がわかりません。
>そんな風なコードにした覚えはないんですが。

そうですね、私が理解出来ないだけのようです。
出来ました。やりたかったこれです!

コードの書き方が私の思っていたものと違うので、なぜ
lngSign = -1
で、出来るのかがわからないのですが。(だいたいはわかりますが・・)

Q1 ifに関するElseはどこにあるのでしょう?もし書くとしたらどこですか?
Q2 Cells(65536, 1)と、行の最後まで書く必要的なものがわからないんです。
配列を行っているのはわかるのですが。。
何から何までお手数なのですが、コメントを書いていただきたいのですが
駄目でしょうか?
お忙しいようでしたらあきらめます。

私は下のように書いておりました。
Private Sub CommandButtonあめ_Click()
Dim L As Integer
Cells(1, 1).Value = Cells(1, 1) + 1  'セルの(1.1)に"初期値0"+1
L = Cells(1, 1).Value         'Lに入れる
Cells(L + 1, 2).Value = "あめ"    '(L+1)行、2列に表示!

Dim k As Currency           '金額表示
Cells(1, 2).Value = Cells(1, 2) + 1  'セルの(1.2)に"初期値0"+1
k = Cells(1, 2).Value         'kに入れる
Cells(k + 1, 3).Value = CCur("100")  '(k+3)行、3列に表示!

End Sub

【16211】Re:指定取消ボタンで商品マイナス表示!
回答  Asaki  - 04/7/20(火) 23:02 -

引用なし
パスワード
   以下、先のコードにコメントをつけてみました。
解りにくければ、再度書き込みください。
(一部、直したほうが良いかも、というところを発見しました)

'数値の符号決定用変数
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

【16225】Re:指定取消ボタンで商品マイナス表示!
お礼  いし  - 04/7/21(水) 11:41 -

引用なし
パスワード
   ▼Asaki さん:
ありがとうございます。
後ほどじっくり読ませて頂きます。
現在は自分のコードにAsakiさんからの
フラグ操作を参考にさせて頂き、作っております。

でもコードが長すぎるので、短くする為にも
理解したかったのです。。
感謝致します。

【16231】Re:指定取消ボタンで商品マイナス表示!
質問  いし  - 04/7/21(水) 15:46 -

引用なし
パスワード
   指定した商品について、マイナス表示は出来るのですが、
はじめに選択していな項目が削除されてしまうので、
その回避方法を教えていただきたいのですが。。

りんご  100
りんご -100

これはok!

りんご  100
みかん -150

入力していないのにマイナスになってしまう!
これはエラーで表示したいのです。。

【16244】Re:指定取消ボタンで商品マイナス表示!
回答  Asaki  - 04/7/22(木) 0:08 -

引用なし
パスワード
   >はじめに選択していな項目が削除されてしまうので、
>その回避方法を教えていただきたいのですが。。
何を、どのようにして、選択しているのかがわかりませんので、なんとも。。。

>りんご  100
>みかん -150
>入力していないのにマイナスになってしまう!
入力する前に、そのデータがあるかどうか検索をかけるなどしてみればよいのでは?
とりあえず、効率無視で考えると、
データ最終行から順次さかのぼりながら、プラスのデータが存在しているかどうかを探す
といった方法でどうでしょうか?

【16307】Re:指定取消ボタンで商品マイナス表示!
発言  [名前なし]  - 04/7/24(土) 11:15 -

引用なし
パスワード
   フォームに、リストボックス・ボタン・チェックボックスを
1つずつ配置し、「商品リスト」シートから項目を取得する。

 ↓リストボックス
┌────────┐  ↓ボタン
│あめ   100    │ [  追加  ]
│りんご  200    │
│めろん  300    │ □取り消し
│みかん 150    │ ↑チェックボックス
│            │
│            │
│            │
└────────┘
  
シート「商品リスト」の構成
  A   B
1 商品    金額
2 あめ  \100
3 りんご \200
4 めろん \300
5 みかん \150

(B列の書式は金額)

という感じにしてはどうかと。

【16308】Re:指定取消ボタンで商品マイナス表示!
発言  [名前なし]  - 04/7/24(土) 11:24 -

引用なし
パスワード
   コードは次の通りです。
出力するシートを表示した状態でフォームをShowしてください。

'↓フォームの初期化イベント
Private Sub UserForm_Initialize()
 Dim ActiveSheetName As String
 Dim LastRow As Long
 Dim ItemList As Variant

 ActiveSheetName = ActiveSheet.Name
 Application.ScreenUpdating = False
 Worksheets("商品リスト").Select
 ListBox1.ColumnCount = 2
 LastRow = Cells(65536, 1).End(xlUp).Row
 ItemList = Range(Cells(2, 1), Cells(LastRow, 2))
 ListBox1.List = ItemList
 Worksheets(ActiveSheetName).Select
 Application.ScreenUpdating = True
End Sub

'↓「追加」ボタンの処理
Private Sub CommandButton追加_Click()
 Dim lngSign   As Long
 lngSign = IIf(CheckBox1.Value, -1, 1)
 
 With ListBox1
  If .ListIndex = -1 Then Exit Sub
  If CheckBox1.Value And Not (WorksheetFunction.SumIf(Columns(1), .Value, Columns(2)) > 0) Then Exit Sub
  Cells(65536, 1).End(xlUp).Offset(1).Resize(, 2).Value _
    = Array(.Value, .List(.ListIndex, 1) * lngSign)
 End With
End Sub

質問されている内容の直接の回答ではないので、発言にしておきます。
(それ以前にもうここは見てないのかな?)

【16482】Re:指定取消ボタンで商品マイナス表示!
お礼  ペリカン  - 04/7/28(水) 18:25 -

引用なし
パスワード
   >データ最終行から順次さかのぼりながら、プラスのデータが存在しているかどうかを探す

ありがとうございます。上記を参考に検討致します!

【16483】Re:指定取消ボタンで商品マイナス表示!
お礼  ペリカン  - 04/7/28(水) 18:27 -

引用なし
パスワード
   ▼[名前なし] さん:
返答ありがとうございます。
ですが、ちょっと私には難しく思えます。
今後変更が多々あるので・・・
勉強しますね・・・

【16484】Re:指定取消ボタンで商品マイナス表示!
お礼  いし  - 04/7/28(水) 18:30 -

引用なし
パスワード
   投稿者が違いましたが・・・
”いし”と”ペリカン”は、同期です!
今後ともよろしくお願い致します。(_ _)

11370 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free