[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『日毎集計で打ち込みシートの内容を表示シートの日付に合ったセルにとばしたいです』(まっきー)
シート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.