電子書籍の厳選無料作品が豊富!

エクセルに注文表、在庫表シートを作成し
注文書シートには
セルA1~A5には品番を入力
  B1~B5には品名を入力
  C1~C5には納期を入力
  D1~D5にはコマンドボタン1~5を配置しました。
処理としてはA1,B1,C1,に入力されている項目を
D1に配置しているコマンドボタン1クリック時
在庫表に移し変える処理
With Worksheets("在庫表")
For idx = 4 To 70
If .Cells(idx, 1) = "" Then
.Cells(idx, 1) = Worksheets("注文表").Cells(1, 1)
.Cells(idx, 2) = Worksheets("注文表").Cells(1, 2)
.Cells(idx, 3) = Worksheets("注文表").Cells(1, 3)
Exit For
End If
Next idx
End With
以上で出来るのですが
さらに行いたいことは納期項目列(C1~C5)を昇順で並び替えた場合
コマンドボタン1の配置位置がD1からD4などに移動するため
この場合のコマンドボタン1の処理はA4,B4,C4を在庫表に
移し変えたいのですがどの様に書き込めば宜しいでしょうか?

A 回答 (2件)

ご質問の意味を、きちんと把握できていないかもしれませんが、要するに、ボタンの位置がわかれば良いということでしょうか?



コマンドボタンを何で作成されているのか不明ですが、TopLeftCellプロパティでオブジェクトの左上端のセルの取得が可能です。
今回は行番号が必要なのでしょうから、コントロールのボタンの例であれば
 r = ActiveSheet.CommandButton1.TopLeftCell.Row
などとしておいて、r行に対してコピーを行えばよいのでは?
 .Cells(idx, 3) = Worksheets("注文表").Cells(r, 3)

意味が違っていましたら失礼。
    • good
    • 0
この回答へのお礼

説明不足の中、的確な回答ありがとうございます。
思うように実行してくれました。

お礼日時:2008/09/19 11:31

コマンドボタンのセル位置が判ればいいのですが、以前私が調べた時には、その方法が見つかりませんでした。


そこで、ワークシートの BeforeRightClick でセルをボタンの様に使い右クリックでコマンドが実行される様にしました。
これなら、コピーも容易ですし、自分のセル位置も引数のTarget.Addressから取れるので使いやすいですよ。
方法の一つとして検討して見て下さい。
    • good
    • 0
この回答へのお礼

ありがとうございます。
参考になりました。
先々、利用させていただきます。

お礼日時:2008/09/19 11:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!