- 締切済み
Rangeを決まったセルではなく、変数で「セルの結合が出来るプロシージャ」は?
Rangeが定まらず、その都度指定した箇所から 2行下がって右に3列とセルの結合を繰り返す作業そしているので これをマクロにしたいのですが この”Rangeが定まらず、その都度指定した箇所から”のプロシージャが分かりません。 また、「セルの結合」でけでなく ”Rangeが定まらず、指定した箇所から”の「セルの移動」のプロシージャもわからないので教えてください!!
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- xls88
- ベストアンサー率56% (669/1189)
↓こちらに移動されたようです。 エクセルのマクロ セルの結合プロシージャを教えてください。 http://oshiete1.goo.ne.jp/qa4491084.html?ans_count_asc=20
- imogasi
- ベストアンサー率27% (4737/17069)
セルの結合のコードはマクロの記録をとればわかることじゃない。 >Rangeが定まらず ではなく 右上隅のセルが変わる法則性を説明するというか、自分で定式化しないと。 縦何行、横何列はどの結合セルの場所でも決まっているのかな。 突き詰めると Range(Cells(i,j)、Cells(k,l))の書き方を知らないのでは。 2行、3列を結合するなら kはi+1, lはj+2 でよいのかな。後はiの動きを繰り返し化に持って行く(i(を含む)の式にする)
- xls88
- ベストアンサー率56% (669/1189)
>回答番号:No.1 この回答への補足 カットした後にセルを移動していないので、カットした位置でペーストしています。 つまり、元の鞘に収まったというわけです。 (1)を追加してみます。これでA1セルに貼り付けられます。 Worksheets("Sheet1").Activate ActiveCell.Offset(rowOffset:=3, columnOffset:=-2).Activate Selection.Cut Range("A1").Select '(1)A1セルに移動 ActiveSheet.Paste あるいは、 ActiveCell.Offset(rowOffset:=-3, columnOffset:=2).Activate とすれば最初のActiveCellに貼り付けられます。 Cutメソッドをヘルプで見ると 構文 式.Cut(Destination) Destination 貼り付け先のセル範囲。この引数を省略すると、クリップボードに貼り付けられます。 となっています。 これを使えば、 ActiveSheet.Paste が要らなくなります。 Worksheets("Sheet1").Activate ActiveCell.Offset(3, -2).Cut Destination:=Range("A1") 引数名を省略して ActiveCell.Offset(3, -2).Cut Range("A1") と書くこともできます。
- xls88
- ベストアンサー率56% (669/1189)
Offsetプロパティを使えばどうでしょうか。 以下、ヘルプからの抜粋です。 次の使用例は、シート 1 のアクティブ セルから 3 列右、3 行下のセルをアクティブにします。 Worksheets("Sheet1").Activate ActiveCell.Offset(rowOffset:=3, columnOffset:=3).Activate 「相対参照」で「マクロの記録」をしてみてください。
お礼
ご回答、ありがとうございます。 早速対応してみます!
補足
xlsさま すみません。 早速上記のプロシージャを貼り付けて カット&ペーストでの移動のプロシージャを作成してみたのですが 文字がペーストされないのです。 どうしたら良いでしょうか? ↓ Sub 移動右がわ() ' ' 移動右がわ Macro ' マクロ記録日 : 2008/11/18 ユーザー名 : ●●●● ' ' Keyboard Shortcut: Ctrl+f ' Worksheets("Sheet1").Activate ActiveCell.Offset(rowOffset:=3, columnOffset:=-2).Activate Selection.Cut ActiveSheet.Paste End Sub