[[20111212041037]] 『日毎集計で打ち込みシートの内容を表示シートの日』(まっきー) ページの最後に飛ぶ

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

 

『日毎集計で打ち込みシートの内容を表示シートの日付に合ったセルにとばしたいです』(まっきー)

シート1 日付を選ぶ(プルダウンメニュー)
     内容を打ち込み欄に打ち込む
     マクロのボタンを押す

シート2 別シートの同日付のセルに張り付けされる。

と言う形にしたいのですが、シート1の日付を認識させてシート2の同日付セルに
張りつける記述がどこを探してもありません。

お手数ですがご教授願います。

バージョン 2007
OS XP


 たとえば

 <Sheet1>
	A	B
 1	日付	内容
 2   12月2日 あああ

 <Sheet2>
	A	B
 1	日付	内容
 2	12月1日	
 3	12月2日	
 4	12月3日	
 5	12月4日	
 ・	12月5日	 
 ・	12月6日	
 ・	12月7日	
 30	12月29日	
 31	12月30日	
 32	12月31日	

 のようになっていて、ボタンをクリックするとSheet2のB3セルに「あああ」と
 表示されるようにしたいということでしょうか?

 フォームツールバーからボタンを作成して、別シートへ転記のマクロを登録

 Sub 別シートへ転記()

     Dim 日付 As Date
     Dim MyRange As Range

     日付 = Sheets(1).Range("A2")
     Set MyRange = Sheets(2).Columns("A").Find(what:=日付)

     MyRange.Offset(0, 1) = Sheets(1).Range("B2")

 End Sub

 これでSheet1のA2セルに日付、B2セルに内容を入力してボタンをクリックすれば
 Sheet2の同じ日付の隣のセルに内容が貼られます。

 (se_9)

 Sub Test20111212()
     Dim rng As Range
     Set rng = Worksheets("Sheet2").Range("A:A").Find( _
             What:=Worksheets("Sheet1").Range("A1").Text, _
             LookIn:=xlValues, _
             LookAt:=xlWhole)
     If rng Is Nothing Then
         MsgBox "検索値が存在しません", vbCritical
     Else
         rng.Offset(0, 1).Value = Sheets("Sheet1").Range("A1").Offset(0, 1).Value
     End If
 End Sub
 
Sheet1のA1セルに入力された日付をSheet2のA列で検索し、
Sheet1のA1セルの右のセルの値を検索し、
検索で見つかったセルの右のセルへ転記。
 
[まっきー]さんと「まったく同じ作業」をしているひとが、何千人もいれば
そのものずばりが見つかることはあると思いますが、
そうでない限りこのようなマクロは自分で作らなければいけない、と
思っておいたほうがいいですよ。
 
(みやほりん)(-_∂)b

遅くなりましてすいません。
おふた方有難うございます。

説明がわるかったようで、内容的にはse_9さんの言うとおりです。

しかし、張り付けて、セル、シート名を替えましたが

インデックスが見つかりませんと「日付 = Sheets(1).Range("A2")」この部分が
黄色になってしまいます。。。。

 Sub 別シートへ転記()

     Dim 日付 As Date
     Dim MyRange As Range

     日付 = Sheets(打込欄).Range("B7")
     Set MyRange = Sheets(一月).Columns("A").Find(what:=日付)

     MyRange.Offset(0, 1) = Sheets(打込欄).Range("E7")

 End Sub

こんな感じなんですが・・・
初心者で勉強不足ですが宜しくお願いします。


追記です(まっきー)

打ち込み欄シート−−−−

   A   B   C   D   E   F   G

1     売上 仕入 客数

2 12/1 5000  50  51

3

表示シート−−−−

   A   B   C   D   E   F   G

1 日付  売上     合計  仕入     客数

2 12/1 5000      50   51

3

打ち込み欄のA2のセルはドロップダウンリストで
表示シートのA列からもってきています。
なんどもすみません。


何個もすみません;;
上の表とその上のソースは一緒じゃないです。
簡潔に分かりやすくしたかったので。。。すみません

インデックスの件は解決しました。

あらたなる壁が・・・・

MyRange.Offset(0, 1).Select = Sheets(1).Range("B2")

上記部分がオブジェクト変数またはブロック変数が〜になってしまいます。

ほんとに何度ももうしわけありません。


 インデックスの件は解決したということですが、一応書いておきます。 
 Sheetsの括弧内は""で括ってください。Sheets("打込欄")のように。

 MyRange.Offset(0, 1).Select = Sheets(1).Range("B2") は .Select が不用です。

 追記の件ですが
 合計(D列)に50、仕入(E列)に51と入っていますが、実際は
 仕入(E列)に50、客数(G列)に51ですよね?

 Sub 別シートへ転記()

     Dim 日付 As Date
     Dim MyRange As Range

     日付 = Sheets("打込欄").Range("A2")
     Set MyRange = Sheets("表示").Columns("A").Find(what:=日付)

     With Sheets("打込欄")
          MyRange.Offset(0, 1) = .Range("B2") '売上
          MyRange.Offset(0, 4) = .Range("C2") '仕入
          MyRange.Offset(0, 6) = .Range("D2") '客数
     End With

 End Sub

 ような感じでいいと思います。

 *追記*
 Sheets(1)のような場合は""で括らなくても大丈夫です。
 Sheets(1)の1はシートの1枚目、Sheets(2)はシートの2枚目という意味です。
 シート名が変動する場合には上のような使い方が楽だと思います。

 あと
 For sh = 1 to 10
    Sheets(sh)…
 Next

 のような場合も""で括らなくても大丈夫です。

 (se_9)

ありがとうございます。
できましたーーーーーーーーーー。

超初心者の私にもわかりやすく記述していただきありがとうございました。

まっきー


コメント返信:

[ 一覧(最新更新順) ]


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