• 締切済み

エクセルでこのようなことが出来るでしょうか?

A:エクセル2002のシート1で製品の価格算出用のフォームを作ります。 仕様などをいくつか選択すると価格が計算されます。 ↑ここまではできました。 B:一台価格を算出したらシート上のボタンをクリックすると、シート2の所定のセルに価格がコピーされる。 ↑ここまでも出来ます。 C:次の計算をした後、ボタンをクリックすると、作業Bで価格がコピーされたセルの一行下のセルにコピーされる。結果としてシート2は価格一覧表となる。 ↑これがしたいです。 よろしくお願いいたします。

noname#16273
noname#16273

みんなの回答

  • sakenomo
  • ベストアンサー率52% (35/67)
回答No.4

この例ではSheet1のA1の値を、Sheet2のA列の1行目から下へ空白のセルを探して入れます。 Sub test() Worksheets("Sheet2").Columns(1).Find("", After:=Range("A65536"), _ LookIn:=xlValues).Value = Range("A1").Value End Sub 上の例では、A列の空白のセルを探して作業Bの価格をコピーするわけですから、価格一覧表を10行目から作りたいなどという場合は使えません。 ですので、下の例のように変えてみてください。 参考になりますでしょうか。 Sub test2() Worksheets("Sheet2").Range("A10:A65536").Find("", _ After:=Range("A65536"), LookIn:=xlValues).Value = Range("A1").Value End Sub

noname#16273
質問者

お礼

ありがとうございます。 本を買ってきて勉強しているのですが、いまだに皆様からいただいた回答を理解できるレベルまでたどり着いておりません。 幸いにして質問-回答の履歴は残るようですので、もっと勉強して後々参考にさせていただきたいと思います。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

VBAであれば、結構難しい問題を提起しているように思います。寡聞にして市販本の例題には出ていないように思います。 セルに値をセットするには行を指定しなければなりません(Cells(i,j)のi)。その初期値のセット及びイベントプロセジュアーへの引渡しに苦しみます。イベントプロシージュアーの中ではiの初期化は出来ないでしょう。 私は、Public変数を使いモジュールに Public i Sub test01() i = 1 End Sub を作り、前もって1回だけ実行してiに1をセットしました。 iはPublic変数にしたので、イベントプロセジュアーで使うとき、最初はiは1です。そこでセルに値をセット後にiに+1します。直ぐ下の行を指す為です。 そこでSheet1に貼りつけたボタンのイベントプロセジュアーとして、下記を作成しました。 Private Sub CommandButton1_Click() Dim sh1 As Worksheet Dim sh2 As Worksheet Set sh1 = Worksheets("sheet1") Set sh2 = Worksheets("sheet2") sh2.Cells(i, "C") = sh1.Cells(1, "A") i = i + 1 End Sub これでSheet1のA1セルに値を入れて、ボタンをクリック1行ずつ下行に値がセットされて行きます。 「Sheet1のA1セル」や「Sheet2のC1-->C2」は私が勝手に決めたもので、変えた場合、どこを変えれば良いかは すぐ判ると思います。項目が複数あれば、 sh2.Cells(i, "C") = sh1.Cells(1, "A") のCとAを変えて、行を増やせば済みます。 実行に先立ちtest01を実行してください。 -- 私の拙いコードが目に触れて、もっと良い解答を載せていただけたらと期待しています。あるいはこんな方法しか無いのかも知れませんが。

noname#16273
質問者

お礼

やはりVBAですか。 しかも難しいとのことで・・・。 本も買ってきたので一生懸命勉強します。 ありがとうございました。

  • Futosi
  • ベストアンサー率46% (23/50)
回答No.2

SettingWorkSheet.Cells(1,1) += SettingWorkSheet.Cells(1,1) ではなく SettingWorkSheet.Cells(1, 1) += 1 もしくは SettingWorkSheet.Cells(1,1) = SettingWorkSheet.Cells(1,1) + 1 ですね、失礼しました。

noname#16273
質問者

お礼

う~む、VBAですか。 ぜんぜんわからないんですけど、今日これから本を買いに行ってきます。 ありがとうございました。

  • Futosi
  • ベストアンサー率46% (23/50)
回答No.1

別のワークシートを追加して、そのシートを環境設定用に使ってみてはいかがでしょうか? 読み取るときは SettingWorkSheet.Cells(1,1) (A1のセルに次の場所を格納している場合) で次のセルが参照できますね。 ですから、コードとしては ●登録ボタンのコードに追加 Cells(SettingWorkSheet.Cells(1,1), "入力列数") = … SettingWorkSheet.Cells(1,1) += SettingWorkSheet.Cells(1,1) SettingsWorkSheet.Visible = False とすればマクロ管理者しか見れなくなるので、 もしも設定を触られたくないならこれでいかがでしょう? ※SettingWorkSheetは追加した3番目のシートを示します。 当方Excel2000しか所持していないので、コードの仕様が改変されているかもしれませんが、基本的には上記の考え方で大丈夫なはずです。

関連するQ&A

  • INDIRECT、MATCH関数等の組み合わせ方

    入力フォームとして作成したシート(あああ)のデータを、シート(一覧表)に、計算式で自動的に並べる方法(参照する方法)を教えてください。(画像を添付しました。) 入力フォームは、実際は150枚ぐらいになります。一覧表も実際は数枚あります。 画像の「あああ」が入力フォーム、「一覧表」が一覧表です。 あああ、AAA、111、アアアなどは、すべて項目名です。 DATA1からDATA32、DATA100-103が、実際にデータが入る部分です。 例えばですが、入力フォーム(あああ)のセルC6に入力したDATA1が、一覧表のセルC3に入るように、C3に計算式を入れたいです。 1.シート名を計算式にいれるには、INDIRECT関数が使えるかと思います。 2.複数の条件(A列、B列、1行、2行)でセルを特定する関数がわかりません。 3.1.と2.を組み合わせると、同様な関数になるのか、わかりません。 DATAについては、ゼロはゼロ、無記入は無記入のまま一覧表に表示したいです。 よろしくお願いします。

  • エクセルVBAでVLookupを使って値を転記する

    エクセル2003で商品の一覧表を作成しています。 Sheet1は商品一覧(左図) Sheet2は価格表(右図)となっています。 マクロを使用して、Sheet1のB列に価格表のデータを転記させたいと考えています。 VLookupになるのかと思い、自分でいろいろとやってみたのですが、 どうしても動作せず、挫折してしまいました。 商品一覧の最後の行までいって、空白セルがくると止まるというのが、 難しくてできませんでした。 どうかお願いいたします。

  • excelのハイパーリンクで質問です

    excelのbookでシートが増えすぎて管理しづらい為、一覧表シートを作りハイパーリンクボタンで各シートへ飛ぶようにしようと思うのですが、その際セル参照も行いたいのですが、B列の「最下入力行」とかの指定は可能でしょうか?よろしくお願いします。

  • エクセルVBAマクロで、一度テキストポックスに入力した値がコピーされて

    エクセルVBAマクロで、一度テキストポックスに入力した値がコピーされてしまう VBAマクロ初心者です。 エクセルVBAマクロで、以下の様なプログラムを作成し計算させていますが、 一度入力した値がテキストポックスに残ってしまい、なんとかならないかなと 思っています。 (1)複数シートにそれぞれコマンドボタンを配置し、クリックすると同じユーザー フォームが立ち上がるようになっています。 (2)そのユーザーフォーム内に、テキストボックスが複数あり、それぞれ値を入力 して計算スタートさせると、ワークシートの1行目から数千行目まで計算して 各行に計算結果を表示します。 (計算は、既に各行に入力済みのデータとこのテキストボックスの値を元に算出されます) (3)次に、別のシートでコマンドボタンをクリックし、ユーザーフォームを立ち上げると、 前のシートで入力した値がそのまま各テキストボックスに入ってしまいます。 (これは、必ず起こる訳ではなく、時々起こるのですが、起こる場合は、コマンドボタン をクリックしてからユーザーフォームが立ち上がるまでの時間が若干短い感じがします) ※一度、上記の計算をさせるとテキストボックスの値がそのシートの特定のセルに入り、 次回ユーザーフォームを立ち上げた際に、テキストボックスに入るようになっています。 (Private Sub UserForm Initialize を使っています) パソコンの構造を、私はよく知らないのですが、おそらく、一度テキストボックスに値 を入力して計算させると、どこかのメモリにそれが残っていて、次にユーザーフォーム を立ち上げた際にそれが入ってしまうのかな、と思っています。 (ただし、もし前の値が入ってしまったとしても、一度そのユーザーフォームを消して から、再度立ち上げると、正常な値(そのシートの特定のセルを参照)が必ず入ります) 何か、プログラムにより、このメモリ?を消す?、あるいはうまく解決する方法など 考えられませんでしょうか? もし、詳しい方がおられましたら、御教示いただけませんでしょうか。 よろしくお願いいたします。

  • エクセルでシート間の相対参照

    シートを分けて表を作成しています。 Sheet3のセルA1に「='sheet1'!A1」という計算式を入力しています。 この計算式を[B1]にコピーすると「='sheet1'!B1」ではなく、「='sheet2'!B1」という計算式にすることは可能でしょうか? 参照するセルも、シートも変更してほしいのですが、うまくいきません。 どなたかよろしくお願いします。

  • EXCEL VBAで複数シート内のセルをまとめて表を作成

    EXCELマクロ(VBA)を教えてください。 なやんでいることは、 目的:シート1からシート5までの表の値をシート6に一覧表を作成させる。 ・シート1からシート5まで シート内の表からセル値をコピーしてマクロで(ボタンか何かで)シート6にシート1からシート5のセル値を貼り付けていくような動作をさせられるようなプログラムをつくりたいです。    表(一覧)を作成させたいので わかる方プログラミングを教えてください。よろしくお願いします。

  • エクセルシートについて

    添付の画像を参照願います。 シートAの表-1のデータをシートBの表-2に貼りつけたいのですが、 列と行が逆の為、一個一個のセルを選んでコピーしています。 表-2は次の行に表―1のB、となりに5という数字を、表―1のB列のデータを飛ばせたいのです。 何か簡単に出来る方法が有れば教えて頂けないでしょうか。 よろしくお願い申し上げます。

  • エクセル2003 特定セル範囲のみをコマンドボタンでコピー・貼り付けたい

    タイトルの通りなのですが、ただ今会員マスタ原本というシートを作成しています。 その中にコマンドボタン(表追加)を作り、ボタンを押すと、B39:U48のセルの作成データが上記のセルの下にどんどん追加される様にVBAを区みたいです。 (1) 表がずれないようにコピーをしたままの状態で貼り付けしたい。 (2) シートは同一シート内。B39:U48のセルの下に貼り付けたい。 (3) ボタンを押すたびにどんどん追加される。 (4) 貼り付けの状態は1行空けた状態で張り付いて欲しい。

  • エクセル2000 マクロ

    エクセル2000を使用しています。マクロを使って定型の入力フォームへの入力を素早く、正確に行えるようにしたいと思っています。 「申請書」と「標準事務用品」の2種のシートに分かれており、「申請書」が定型の入力フォーム、「標準事務用品」は入力フォームに反映させたいデータが一覧になっています。 「標準事務用品」のデータの一覧は5つの項目があり、左から1.品物 2.商品名 3.品番 4.メーカー名 5.申請 となっています。 5.申請の列はオプションボタンを1行ごとに1つ設けてあり、オプションボタンがオン(True)の時に、同じ行の1~4の項目のデータを「申請書」シートの入力フォームの任意のセルへコピーしたいです。 何かよいマクロの記述方法はありますでしょうか。

  • エクセルの関数について

    こんにちは。 実家の自営業の手伝いで、エクセルで領収書を作ってあげています。 そこでわからない事があるので教えて下さい。 sheet1に名前一覧表を作り、そこからshhet2の領収書の名前を入れる部分のセルに飛ばす方法で作りました。 作成はでき使用していますが、毎月ごとに十数名増減があります。 例えば、名前一覧表なんですが、sheet1のB2をコピーし、B5に貼り付けたとします。 すると、sheet2でB2から飛んできるはずの名前がB5から飛んできます・・・。 B2から飛んできたものは決まったセルに飛ばしたいのですが・・・ どうしたらよいでしょうか??? 文章にすると伝えにくいのですが、こんな説明でわかりますでしょうか・・・ どなたか教えて下さいm( )m

専門家に質問してみよう