アプリ版:「スタンプのみでお礼する」機能のリリースについて

マクロの記憶でのプロシージャを
Rangeを変数型にしたいのです。
行も列も定めまずに、範囲はA1:BX45です。
Offsetを使うのか、もう何がなんだかわからないので
教えてください!!
マクロの記憶でのプロシージャです。

Keyboard Shortcut: Ctrl+d
'

End Sub
Range("R26:T27").Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = True
.ReadingOrder = xlContext
.MergeCells = False
End With
Selection.Merge


End Sub

A 回答 (3件)

連続で2~3回のセル結合作業を「マクロの記録」します。


セル結合作業の「マクロの記録」を「相対参照」で行います。
下記のようなコードが得られます。

Sub Macro1()
  ActiveCell.Range("A1:C2").Select
  With Selection
    .HorizontalAlignment = xlCenter
    .VerticalAlignment = xlCenter
    .WrapText = False
    .Orientation = 0
    .AddIndent = False
    .IndentLevel = 0
    .ShrinkToFit = False
    .ReadingOrder = xlContext
    .MergeCells = False
  End With
  Selection.Merge
  ActiveCell.Offset(2, 0).Range("A1:C2").Select
  With Selection
    .HorizontalAlignment = xlCenter
    .VerticalAlignment = xlCenter
    .WrapText = False
    .Orientation = 0
    .AddIndent = False
    .IndentLevel = 0
    .ShrinkToFit = False
    .ReadingOrder = xlContext
    .MergeCells = False
  End With
  Selection.Merge
  ActiveCell.Offset(2, 0).Range("A1:C2").Select
  With Selection
    .HorizontalAlignment = xlCenter
    .VerticalAlignment = xlCenter
    .WrapText = False
    .Orientation = 0
    .AddIndent = False
    .IndentLevel = 0
    .ShrinkToFit = False
    .ReadingOrder = xlContext
    .MergeCells = False
  End With
  Selection.Merge
End Sub

不要なコードを削除し必要な部分のみにすると、下記のようになります。

Sub Macro1test1()
  ActiveCell.Range("A1:C2").Select
  Selection.Merge
  ActiveCell.Offset(2, 0).Range("A1:C2").Select
  Selection.Merge
  ActiveCell.Offset(2, 0).Range("A1:C2").Select
  Selection.Merge
End Sub

上記マクロを実行すると、1行置きにセル結合されます。
Offsetプロパティの、行インデックス値が影響しているようです。
行インデックス値を、1 に変えてマクロを実行してみてください。

取りあえず、ここまでを確認してください。
ここまでが確認できてから、次のステップに移りたいと思います。
    • good
    • 0

何をやりたいのか意図が見えませんが



選択範囲を結合したいならわざわざマクロを使わずとも
ツール(D)->ユーザー設定(C)
コマンドタブの分類(G)一覧からコマンド(D)内にあるセルの結合コマンドをツールバーの何処かにドラッグしてあげれば結合ボタンが追加されます

範囲選択せず現在位置から決まった範囲を結合したいなら
Sub Macro1()
Dim NowRow As Long
Dim NowCol As Long

NowRow = ActiveCell.Row
NowCol = ActiveCell.Column

Range(Cells(NowRow, NowCol), Cells(NowRow + 2, NowCol + 3)).MergeCells = True
End Sub

+の数字を変えると結合範囲が変わります。
マクロ記録で.MergeCells以外の代入がありますがセルのプロパティーで結合選択を行うときにその他の項目がありますがそれも記録されているためです
実際に結合する命令は.MergeCellsです。

やりたい事ってこれで合ってます?
    • good
    • 0

> Rangeを変数型にしたいのです。


> 行も列も定めまずに、範囲はA1:BX45です。

まったく意味不明です。
エクセル以前にもう少し日本語を勉強されることをおすすめします。
もし、A1:BX45 を変数にいれて結合し、中央揃えしたいということなら

Sub test()
Dim myRng As Range
Set myRng = Range("A1:BX45")
With myRng
.MergeCells = True
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.ShrinkToFit = True
.ReadingOrder = xlContext
End With
Set myRng = Nothing
End Sub

A1:BX45の部分をA1セルからの行列数で指定したいということなら

Sub test02()
Dim myRng As Range
Set myRng = Range("A1").Resize(45, 76)
With myRng
.MergeCells = True
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.ShrinkToFit = True
.ReadingOrder = xlContext
End With
Set myRng = Nothing
End Sub

ぜんぜん違っていたらごめんなさい。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!