Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1642 / 13644 ツリー ←次へ | 前へ→

【72918】追加ボタンによる行挿入 大渕 12/10/8(月) 1:05 質問[未読]
【72919】Re:追加ボタンによる行挿入 UO3 12/10/8(月) 8:11 発言[未読]
【72922】Re:追加ボタンによる行挿入 大渕 12/10/9(火) 23:04 お礼[未読]
【72920】Re:追加ボタンによる行挿入 UO3 12/10/8(月) 8:27 発言[未読]
【72921】Re:追加ボタンによる行挿入 12/10/8(月) 19:04 発言[未読]
【72923】Re:追加ボタンによる行挿入 大渕 12/10/9(火) 23:07 お礼[未読]

【72918】追加ボタンによる行挿入
質問  大渕  - 12/10/8(月) 1:05 -

引用なし
パスワード
   マクロの記録程度しか出来ない初心者です
現在下記の通り追加ボタンを作って、7行目に6行目までの関数を含むセルを
オートフィルして入力開始のB7にカーソルを合わせるというマクロを記録しました。

Sub 追加()
'
' 追加 Macro
'

'
  Range("A6:S6").Select
  Selection.AutoFill Destination:=Range("A6:S7"), Type:=xlFillDefault
  Range("A6:S7").Select
  Range("B7").Select
End Sub


しかしこれでは、新たに8行を追加することができなくて、7行目で同じ作業をするだけになってしまいます。

7行目の入力作業が終わったら、また8行目にオートフィルをかけて入力開始地点から入力作業ができるようにしたいです。

お手数をお掛けしますが、よろしくお願いします。

【72919】Re:追加ボタンによる行挿入
発言  UO3  - 12/10/8(月) 8:11 -

引用なし
パスワード
   ▼大渕 さん:

おはようございます。

要件としては、「シートの最後の行の下の行に、最後の行の数式をコピー」ということでしょうか?

という要件であれば、それをコードにするのは容易なんですが、私のお薦めは
マクロ処理ではなく、同じ式が入っている領域を、
2003でいえば「リスト」、2007以降でいれば「テーブル」として設定しておきます。
こうしておきますと、
2003の場合、このリスト内の任意の場所を選択しますと、リストの最後に1行、追加行スペースが生成され
その追加行スペースは、上の行の指揮や書式を継承します。
2007以降の場合は、領域の1つ下の行に何かしら入力するだけで、式、書式が自動的に継承されます。

一度、お試しになられてはいかがでしょう。

【72920】Re:追加ボタンによる行挿入
発言  UO3  - 12/10/8(月) 8:27 -

引用なし
パスワード
   ▼大渕 さん:

私のお薦めは上記の通りなんですが、VBAでということなら

Sub 追加_2()
  Dim z As Long
  
  With ActiveSheet.UsedRange
    z = .Cells(.Cells.Count).Row
  End With
  
  With Range("A" & z & ":S" & z)
    .Copy .Offset(1)
    .Cells(1).Offset(1, 1).Select
  End With
    
End Sub

【72921】Re:追加ボタンによる行挿入
発言    - 12/10/8(月) 19:04 -

引用なし
パスワード
   こんにちは。

すでにUO3さんから適切な回答がありました。
徐々にVBAに移行して行かれるといいと思います。

が、マクロの記録でも工夫をすればできます。
こういう工夫を考えた経験が あとでVBAを考えるときに効いてきます。
セルアドレスは適当に修正して下さい。
ちなみに エクセル97での記録です。
大渕さんの環境とは細かい部分で違いがあるかも知れません。

Sub Macro3()
'
' Macro3 Macro
' マクロ記録日 : 2012/10/8 ユーザー名 : kei
'

'
  Application.Goto Reference:="R65536C1"
  Selection.End(xlUp).Select
  ActiveCell.Range("A1:D1").Select
  Selection.Copy
  ActiveCell.Offset(1, 0).Range("A1").Select
  ActiveSheet.Paste
  Range("B2").Select
End Sub

手順
1) 名前ボックスにA65536と入力してエンターキー
 (単純にA65536を選択でもOK. できるコードは違いますが)
2) Ctrl + ↑ 
3) 記録を相対参照に切り替える
4) Shift + → を数回叩いてデータの1行分を選択
5) コピー
6) ↓キー
7) 貼付
8) 記録を絶対参照に戻す
9) B7セル選択

最後に残るぐるぐるが気になるようでしたら、それを消す作業も記録して下さい。

【72922】Re:追加ボタンによる行挿入
お礼  大渕  - 12/10/9(火) 23:04 -

引用なし
パスワード
   ▼UO3 さん:ありがとうございます。

想像していたものがまさに出来ました!!
ただ、入力する際関数が含まれるセルを飛ばしてタブ移動出来るように、シートに保護を掛けて入力しているんですが、保護かけたままだと追加出来ないんですね。

マクロに拘りすぎてましたが、もっとExcelで出来ることを調べてみようと思います。ありがとうございました。

【72923】Re:追加ボタンによる行挿入
お礼  大渕  - 12/10/9(火) 23:07 -

引用なし
パスワード
   ▼佳 さん:ありがとうございます。

UO3さんのやり方で求めていたことが出来たので、マクロをやろうとする前にExcelで出来ることをもっと調べてからやることにします。
細かい説明までして頂いてありがとうございました。

1642 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free