【最大10000ポイント】当たる!!質問投稿キャンペーン!

おはようございます。
Excelの Sheet1 に次の様な表があり、

(Sheet1)
  A   B      C     D E   F      G
1 (1) 部品名  「TextBox1」  (5) 標準価格 「TextBox5」
2 (2) 型式   「TextBox2」   (6) 標準価格 「TextBox6」
3 (3) 仕様   「TextBox3」
4 (4) メーカー 「TextBox4」

「TextBox1~6」にそれぞれ情報を入力して「CommandButton1」を押すと、 Sheet2 にデータが書込まれる様にしたいのですが可能でしょうか?

(Sheet2)
   A     B   C   D       E     F 
1 部品名 型式 仕様 メーカー 標準価格 仕入価格
2  ↓     ↓   ↓  ↓      ↓    ↓

ど素人なもので上手く説明できませんが、どなたか教えていただけないでしょうか?
宜しくお願いします。
Excel2000を使用しています。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

こんにちは。



シートモジュールに書きます。
'----------------------------------------
Private Sub CommandButton1_Click()
  Dim arData(5) As Variant
  Dim i As Long
  For i = 1 To 6
    arData(i - 1) = Me.OLEObjects("TextBox" & i).Object.Value
  Next i
  With Worksheets("Sheet2")
    i = .Cells(Rows.Count, 1).End(xlUp).Row + 1
    If i < Rows.Count Then
      .Cells(i, 1).Resize(, 6).Value = arData
    End If
  End With
  Beep
End Sub

'-------------------------------------------
    • good
    • 0
この回答へのお礼

おはようございます。
Wendy02さんのおっしゃる通りに入力したらできました!!
ど素人の自分にはとてもいい勉強になりました。
ありがとうございました。

お礼日時:2010/02/05 08:07

#2の回答者です。

ちょっとしたアドバイスです。

#2は、掲示板の回答としては定番ですが、実は、今回の#2のようなコードは、あまりテキストには載っていないのです。

テキストで書かれている基本的な方法は、ひとつずつ、値を取る方法です。

-------------------------------------------
i = Sheet2.Cells(Rows.Count, 1).End(xlUp).Row + 1
Sheet2.Cells(i,1).Value =TextBox1.Value
Sheet2.Cells(i,2).Value =TextBox2.Value
(……)となると思います。
-------------------------------------------

本当は、書き方のスタイルにこだわったり、ワザを使ったりしなくてもよいのです。ただ、間違いのない書き方をすればよいだけなのです。

覚えるためには、多くの諸先輩たちがいうように、一定の期間に一定の数をこなしていくことしかありません。長い実践的なコードよりも、ごく基礎的なものを数多く自分で入力して、「実行(RUN)」していくことです。500個がひとつのボーダーラインです。一通り書けるレベルようになるまでに、早い人で、3~6ヶ月、普通の人は、2~3年掛かります。中には、一向に上達しない人もいますが、いずれにしても、ほとんどの人は、初級終了にたどり着かずに終わってしまいます。#2のコードは、ちょうど初級を終わったレベルのコードです。

私としては、VBAは、頭で覚えるものではなく、VBEdiotr の反応で覚えるようなものだと思っています。エラーが返ったら、エラーを潰す。なぜエラーが出たか、自分で考えて、エラーがでないようにして行くことが究極的にVBAを覚えることだと思います。ほとんどの人は、そのようにして覚えたと思います。
    • good
    • 0
この回答へのお礼

ありがとうございます!!
少しずつでも覚えて行けるようにがんばります。
ご指導ありがとうございました。

お礼日時:2010/02/10 17:48

これ、VBA使わないと出来ないと思いますけどね。

VBAを使えば簡単なん
ですけど、VBAを勉強する根性ありますか?

とりあえず、テキストボックス(リストボックスですよね? テキスト
ボックスを使うなら、セルの入力で済みますもん)の内容を、例えば
Sheet1のAA1~AF1にリンクさせておくなら、VBAは、こんなコードを
コマンドボタンに張り付けると動くと思いますけど。

Sub TEST()
Sheets("Sheet1").Select
Range("AA1:AF1").Copy
Sheets("Sheet2").Select
Range("A65536").End(xlUp).Offset(1).Select
ActiveSheet.Paste
Sheets("Sheet1").Select
End Sub
    • good
    • 0
この回答へのお礼

今VBAの勉強していますよ。
といっても理解力のない私にはかなり険しい道のりなのですが…。

FEX2053さんのご回答通りのコードを張付けたらできました!!
ありがとうございました。

お礼日時:2010/02/05 08:02

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


人気Q&Aランキング