advanced help
per page, with , order by , clip by
Results of 1 - 1 of about 13166 for 日付 (0.003 sec.)
[[20080407003325]]
#score: 2423
@digest: 60770e9f876fd4b3d15a55af7f373453
@id: 37145
@mdate: 2008-04-07T00:18:51Z
@size: 5447
@type: text/plain
#keywords: 北国 (16829), 39545 (14996), dv2 (13814), 「39 (6363), 行, (2668), 行= (2401), ・> (2266), 行+ (1975), 日付 (1784), ル君 (1763), リキ (1562), キリ (1454), 本来 (1238), myrow (1112), destination (976), 迷惑 (946), 付を (901), 検索 (701), 式設 (667), 項目 (609), hana (585), 現在 (582), (キ (568), キ) (544), コー (542), rng (535), ・・ (525), 付が (497), 索し (493), 行目 (479), 数値 (457), 以降 (454)
『指定した行に貼り付け。マクロ』(北国)
今、マクロを勉強中なんです。 B1で日付を指定し、それをA列のA7以降で日付を検索して 同じ日付のところに張り付けるのですが、B1の日付を数値と認識してしまい、 ずいぶんと下のセルに貼り付けになってしまいます。 どうしたらいいでしょうか? ちなみにマクロは下記です Sub Macro1() Range("c2:dv2").Activate 行 = Cells(1, 2) 行 = 行 + 6 Range("c2:dv2").Copy Range(Cells(行, 3), Cells(行, 3)).Select ' Selection.PasteSpecial Paste:=xlValues End Sub ---- いまいち、説明とコードの内容が把握できていませんが。。。 気がついた点をb ・勉強中との事ですので、変数の宣言はしたほうが良いと思います ・>行 = Cells(1, 2) ここで、行っているのは「Cells(1, 2)」(B1)の値を「行」に代入しています。 B1 に入っているのは日付です。 エクセル君は、日付は「シリアル値」で考えています。 仮に、「2008/4/7」という日付が入っているとすると、、、 エクセル君は「39545」という数値で考えます。 (日付が入ったセルの表示形式を数値に変えるとわかると思います) よって、次に行っている >行 = 行 + 6 では「39545 + 6」を計算しています。 ここで、行は「39551」になってしまっています。 ・Range(Cells(行, 3), Cells(行, 3)).Select それをふまえたうえで、上記のコードを考えてみてください。 ※行を調べるには、Row プロパティで取得できます。 ・>それをA列のA7以降で日付を検索して 検索と仰っていますが、検索しているようなコードが組み込まれていません。 範囲が決まっているのであれば、ループしていくのが簡単かもしれません。 内容を把握していないので、外してたらごめんなさい・・・ こんな感じの事でしょうか? Sub test() Dim MyRow As Long Dim Rng As Range 'A列の最終行の取得 MyRow = Range("A" & Rows.Count).End(xlUp).Row 'A列の最終行までのループ For Each Rng In Range("A7:A" & MyRow) 'もし、B1の日付と同じなら次の処理へ If Rng = Range("B1") Then '範囲、C2:DV2をコピー Range("C2:DV2").Copy Destination:=Rng.Offset(0, 2) '違ったら次へ End If '範囲内であれば続けて処理 Next Rng End Sub (キリキ)(〃⌒o⌒)b ---- キリキさんからコメントが入っていますが・・・・ (しかも衝突したし・・・。) ↓の様な事かと想像します。 [A] [B] [C] [D] [1] 日 7 項目1 項目2 [2] イ ロ [3] [4] [5] [6] 日 項目1 項目2 [7] 1 [8] 2 [9] 3 [10] 4 [11] 5 [12] 6 [13] 7 イ ロ [14] 8 [15] 9 [16] 10 A7が必ず1日から始まる。 B1に日にちを指定すると、必ず その日付+6行目が 該当の行と決定出来る。 この時に、B1に「7」と入っていれば、必ず+6された13行目が選択され その行にペーストされる事と思います。 ただし、キリキさんも仰って居られますが もしもB1に「2008/4/7」と言う日付を入れて表示形式で「7」と成っていた場合 (数式バーに日付が表示される) その本来の値は「39545」ですから、+6された「39551」行目が 選択され、その行にペーストされると思います。 セルに入力されている【本来の値】は何なのかを確かめてみるのはどうでしょう。 (HANA) ---- なるほどb 「何日」という事ですか〜 では、Day 関数で「何日」かを調べるのも良いかもしれませんね^^ (キリキ)(〃⌒o⌒)b ---- (HANA)さん (キリキ)さん ありがとうございます つたない説明でご迷惑をおかけしてます 表は(HANA)さんの例の通りです。 B1に日付を記入し、7行目以降に日々貼り付けをしていきますので、A列から日付を検索して そこにC2からDV2までの数値のコピーを値として貼り付けをしたいのです。 これのどこを改良するとA列の同じ日付を検索してくれるでしょうか? (北国) ---- >セルに入力されている【本来の値】は何なのかを確かめてみるのはどうでしょう。 と書いておりますが・・・・。 セルには何をどの様に入力していますか? また、セルの書式設定を「標準」にしたときに どんな数字が出ますか? 現在のコードはこの数字に+6した行に貼り付きます。 ですので、B1セルの書式設定が標準の時に「7」と成るように 値を入力すれば13行目(現在7が入力されている行)に 貼り付くようになると思います。 現在のB1セルの書式設定はどの様な物を設定していますか? (HANA) ---- B1のセルには日付の書式設定です 39543と認識してういるようです。 (キリキ)さんのコードでできたのですが、 貼り付けの際に値で張り付けしたいのです。 Range("C2:DV2").Copy Destination:=Rng.Offset(0, 2) CopyのところをValueに変えたのですが、エラーになりました。 値だけのコピーをするにはどうすればよいでしょうか? (北国) ---- 何故日付で入力するのですか? B1セルに「日にち」を入力すれば (例えば2007/4/7なら「7」と入力) 現在のコードがそのまま使えると思いますが。 ただし、A7が「1」から始まる場合だけですけど。 それとも最初のコードでは検索していませんが 「検索」と言う作業が必要になる と言う事ですかね? (HANA) ---- HANAさん 説明不足ですいません A7の始まりの日付がシートによってバラバラなので、B1の数値を日付で入力したかったのです (北国) ---- でしたら >表は(HANA)さんの例の通りです。 の後に 『ただし、シートによっては >A7が必ず1日から始まる とは限らない』 が必要でしょ? それぞれ別の項目のシートなのですかね? 関連する物で有れば、そろえておくのが 後々良さそうに思いますが・・・・。 まぁ、そのあたりは良く分かりませんので。 該当部分を Rng.Offset(0, 2).Resize(, 124).Value = Range("C2:DV2").Value に変えてみるのはどうでしょう。 (HANA) ---- HANAさん ありがとうございます 説明不足でご迷惑をおかけしました。 上記の通りにコードを変えたらできました。 これからもっともっと勉強してきます。 またご相談することがあると思いますが、その時はよろしくお願いいたします (北国) ...
https://www.excel.studio-kazu.jp/wiki/kazuwiki/200804/20080407003325.txt - [detail] - similar
PREV NEXT
Powered by Hyper Estraier 1.4.13, with 97054 documents and 608269 words.

訪問者:カウンタValid HTML 4.01 Transitional