[[20120124214111]] 『シート1のデータをシート2へデータを転記』(みゆ・・・) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『シート1のデータをシート2へデータを転記』(みゆ・・・)

 過去ログを確認してみましたが、なかなかわかりません。。
 初心者なので悪戦苦闘中です。
 どなたかご教授くださるとうれしいです。

 シート1に請求書を作成しました。
 簡単にいいますと・・・

 Sheet1 の W5 を  Sheet2 の B2、
 Sheet1 の E8 を  Sheet2 の C3、
 Sheet1 の E9 を Sheet2 の D2、
 Sheet1 の W14 を Sheet2 の Y2
 ・・・・・・・・・・・・・・・・まだまだ続きます。

 というようにSheet1で入力した内容をSheet2へデータを蓄積させたいのです。
 Sheet2の先頭行は項目名を入れたいと思っています。
 また、Sheet2のA列2には1番から番号を振っていきたいです。

 Sheet1の請求書にデータを入力後、ボタンを作成し、Sheet2へ転記し転記後は、Sheet1へ戻って、再び新しい内容を入力しようと思っています。Sheet1の内容はクリアボタンを作成しました。

 どなたか、初心者の私へ教えてください。。。

 標準モジュールに以下を転記

 Sub Test1()
 'Sheet2の最終行の行番号を取得する変数宣言
   Dim LastRow As Long
 'Sheet2のA列の最終行の行番号を取得
      LastRow = Sheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Row

 'Sheet2のA1セルに番号を
  Sheets("Sheet2").Cells(LastRow + 1, 1).Value = LastRow
 ' Sheet2のB2セルにSheet1のW5セルの値を
  Sheets("Sheet2").Cells(LastRow + 1, 2).Value = Sheets("Sheet1").Range("W5").Value
 ' Sheet2のC2セルにSheet1のE8セルの値を
  Sheets("Sheet2").Cells(LastRow + 1, 3).Value = Sheets("Sheet1").Range("E8").Value
 ' Sheet2のD2セルにSheet1のE9セルの値を
  Sheets("Sheet2").Cells(LastRow + 1, 4).Value = Sheets("Sheet1").Range("E9").Value
 ' Sheet2のE2セルにSheet1のW14セルの値を
  Sheets("Sheet2").Cells(LastRow + 1, 5).Value = Sheets("Sheet1").Range("W14").Value

 ' Sheet1のA1セル選択  Sheet2を確認後、Sheet1へマクロボタン等の操作で移動するので
 'あれば以下は省略
  Sheets("Sheet1").Range("A1").Select

 End Sub

 でどうでしょうか。

 (わかあゆ)

回答ありがとうございます。

 コードを入力してみたところ、以下の箇所がエラーとなります↓

 LastRow = Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row

 なぜでしょうか??

 (みゆ・・・)

訂正です。

 LastRow = Sheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Row

 の誤りでした。。

 (みゆ・・・)

LastRow = Sheets("Sheet2").Cells(.Rows.Count, 1).End(xlUp).Row

かな?

(sanper)


 うまくいきません・・・・・・・?

 (みゆ・・・)

 表示されたエラーを提示してはどうですか?

 Sheet1 や Sheet2 は間違いなく存在していて、綴りは正しいですか?
 文字列は半角、全角が異なっていても別のものと識別されます。
 (Mook)

あやまります。

わかあゆ様にも謝罪します。

すみませんでした。

(sanper)


 ちょっと話が かみ合いませんが、sanper さんの発言はどのことに関してでしょうか。

 私のは ゆみ・・・さんの
 >コードを入力してみたところ、以下の箇所がエラーとなります↓
 への確認のつもりでしたが。
 (Mook)

Mook様、
申し訳御座いません。

私のコードの事です。

2を 2で 半角にして提示したつもりなのですが、

自分のコードを書き換えたため、Cells(  の後に ドットが入ってしまいました。

それで、 上手く行きませんと 質問者さんに言われたので、

すみません と 送信致しましたら、

Mook様の すぐ後になってしまった次第です。

誤解を招くようで申し訳御座いませんでした。

(sanper)


すいません。。

 インデックスが有効範囲にありません。 実行時エラー9

 LastRow = Sheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Row ↑

 (みゆ・・・)


 やはり、Sheet2 がなさそうに見えますが、左から2番目がSheet2だとしたら

 LastRow = Sheets(2).Cells(Rows.Count, 1).End(xlUp).Row
 としても一緒ですか?

 了解です > sanper さん
 (Mook)

 みゆ・・・さんへ

 Mookさん の ご指摘のところなのですが、

 >というようにSheet1で入力した内容をSheet2へデータを蓄積させたいのです。

 と みゆさんのお言葉とおり

 'Sheet2のA1セルに番号を
  Sheets("Sheet2").Cells(LastRow + 1, 1).Value = LastRow

 こういうコードが出来上がったわけですが、

 ≪Sheet2へデータ≫ の Sheet2 というシートの名前は、本当に Sheet2

 なのでしょうか? ということです。

 それくらい知ってるわよ。だったら ごめんなさい。

 Sheets("Sheet2")というのは、" で囲ってある中がシートの名前ですが、

 それは、"Sheet2" と大文字でもだめですし "Sheet 2" と スペースが入っていてもだめです。

 そこの確認をお願いします。

 Mookさん すみませんでした;;
 (sanper)


 みなさん色々教えていただきありがとうございました。
 
 単純なミスで、シート名にスペースが入っていました。

 本当に申し訳ありません。また教えて下さい。。。。

 (みゆ・・・)

 再度質問させて下さい。

 シート2へデータを転記した際に、自動で一行置きに色がつくにはどうしたらよいでしょうか??

 また、シート2のA列には通番が入っていますが、シート1の請求書番号を通番にするにはどうしたらよいですか??ちなみに、シート1のW5に請求書の通番を入れたいです。

 (みゆ・・・)

 >シート2へデータを転記した際に、自動で一行置きに色がつくには
 転記時にマクロで判断して色を付けるなら
Sheets("Sheet2").Cells(Rows.Count, 1).End(xlUp)
 のセルの色を確認して、色が付いていない時に
 色を付ける様にします。

 色番号や色を付けるコードは、まずはマクロの記録で取得して下さい。
 記録で出来たコードをこちらに載せて下さい。

 他には、マクロから離れて 条件付書式を事前に設定しておく方法も有ると思います。
 一行おきに色を付ける 条件付書式の設定方法は Web検索してもらえると
 見つかると思います。

 >シート1のW5に請求書の通番を入れたいです
 現在、転記時に自動的にA列に番号が振られますが
 シート1に 先に番号を表示しておきたい
 と言う事でしょうか?

 =MAX(シート2!A:A)+1
 なんて式で事が足りますか?

 (HANA) 

>シート2へデータを転記した際に、自動で一行置きに色がつくには

 Sub Test1()
 'Sheet2の最終行の行番号を取得する変数宣言
   Dim LastRow As Long
 'Sheet2のA列の最終行の行番号を取得
      LastRow = Sheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Row
 'Sheet2のA列の最終行セルの背景色が付いていなかどうかを判断し、
 '着いていない場合は"ColorIndex ="のとの数字で指定された色をすぐ下の行に着ける 
   If Sheets("Sheet2").Cells(LastRow, 1).Interior.ColorIndex = xlNone Then
        Rows(LastRow+1 & ":" & LastRow+1).Interior.ColorIndex = 34
      End If
 'Sheet2のA1セルに番号を
  Sheets("Sheet2").Cells(LastRow + 1, 1).Value = LastRow
 ' Sheet2のB2セルにSheet1のW5セルの値を
  Sheets("Sheet2").Cells(LastRow + 1, 2).Value = Sheets("Sheet1").Range("W5").Value
 ' Sheet2のC2セルにSheet1のE8セルの値を
  Sheets("Sheet2").Cells(LastRow + 1, 3).Value = Sheets("Sheet1").Range("E8").Value
 ' Sheet2のD2セルにSheet1のE9セルの値を
  Sheets("Sheet2").Cells(LastRow + 1, 4).Value = Sheets("Sheet1").Range("E9").Value
 ' Sheet2のE2セルにSheet1のW14セルの値を
  Sheets("Sheet2").Cells(LastRow + 1, 5).Value = Sheets("Sheet1").Range("W14").Value

 ' Sheet1のA1セル選択  Sheet2を確認後、Sheet1へマクロボタン等の操作で移動するので
 'あれば以下は省略
  Sheets("Sheet1").Range("A1").Select

 End Sub

 追加したのは下記の部分です。
 >'Sheet2のA列の最終行セルの背景色が付いていなかどうかを判断し、
 >'着いていない場合は"ColorIndex ="のとの数字で指定された色をすぐ下の行に着ける 
 >  If Sheets("Sheet2").Cells(LastRow, 1).Interior.ColorIndex = xlNone Then
 >       Rows(LastRow+1 & ":" & LastRow+1).Interior.ColorIndex = 34
 >    End If
 これでどうでしょうか。

 また、
 >シート1のW5に請求書の通番を入れたいです
 とは、シート1のA列の番号とシート1のW5の請求書番号と違う場合があるということ?
 その場合、シート2に転記されたB列セルの最終番号の次番号が次の入力作業の時にシート1の
 W5に明示されるということ・・・
 ということは、シート1のW5セルに、シート2のB列の最大値+1が表示れているようにするだ
 から、シート1w5セルに次の関数を入力しておくことで実現できないかな?
 =MAX(シート2!B:B)+1

 (わかあゆ)

丁寧な回答ありがとうございました。

 Rows(LastRow+1 & ":" & LastRow+1).Interior.ColorIndex = 34の箇所がエラーとなります。

 アプリケーション定義またはオブジェクト定義のエラーです。

 (みゆ・・・)

 >  If Sheets("Sheet2").Cells(LastRow, 1).Interior.ColorIndex = xlNone Then
 >       Rows(LastRow+1 & ":" & LastRow+1).Interior.ColorIndex = 34
 >    End If

 の部分を
 >  If Sheets("Sheet2").Cells(LastRow, 1).Interior.ColorIndex = xlNone Then
 >       Sheets("Sheet2").Rows(LastRow+1 & ":" & LastRow+1).Interior.ColorIndex = 34
 >    End If
 に変更してみてください。

 どうでしょうか?

 <追>
または、こちらでも
 Sub Test2()
 'Sheet2の最終行の行番号を取得する変数宣言
   Dim LastRow As Long
 'Sheet2を対象とする作業のまとまりを宣言
  With Sheets("Sheet2")
 'Sheet2のA列の最終行の行番号を取得
      LastRow = .Cells(Rows.Count, 1).End(xlUp).Row
 'Sheet2のA列の最終行セルの背景色が付いていなかどうかを判断し、
 '着いていない場合は"ColorIndex ="のとの数字で指定された色をすぐ下の行に着ける
      If .Cells(LastRow, 1).Interior.ColorIndex = xlNone Then
        .Rows(LastRow + 1 & ":" & LastRow + 1).Interior.ColorIndex = 34
      End If
 'Sheet2のA1セルに番号を
  .Cells(LastRow + 1, 1).Value = LastRow
 ' Sheet2のB2セルにSheet1のW5セルの値を
  .Cells(LastRow + 1, 2).Value = Sheets("Sheet1").Range("W5").Value
 ' Sheet2のC2セルにSheet1のE8セルの値を
  .Cells(LastRow + 1, 3).Value = Sheets("Sheet1").Range("E8").Value
 ' Sheet2のD2セルにSheet1のE9セルの値を
  .Cells(LastRow + 1, 4).Value = Sheets("Sheet1").Range("E9").Value
 ' Sheet2のE2セルにSheet1のW14セルの値を
  .Cells(LastRow + 1, 5).Value = Sheets("Sheet1").Range("W14").Value
 'Sheet2を対象とする作業のまとまり終了を宣言
  End With
 ' Sheet1のA1セル選択  Sheet2を確認後、Sheet1へマクロボタン等の操作で移動するので
 'あれば以下は省略
  Sheets("Sheet1").Range("A1").Select

 End Sub
 (わかあゆ)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.