エクセル2013のVBAで結合セル基準Offset
未読分:3件
昨日以降(0) 2日前以降(0) 3日前以降(0) 4日前以降(0) 5日前以降(0)
近田 伸矢, 植木 悠二, 上田 寛
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。
Message#3 2014年12月15日(月)15時29分 From: 羽生ゆずるぅ | 返事 削除 変更 |
ご質問の趣旨がよく理解できないのです。 結合セルが[C3:I13]まであって、 ・行方向は4から17セルまで →これはよく分からないです。3からではないでしょうか? ・列方向はC列からI列までをコピー これは、結合セルを一つにして、コピーするという意味だと思いました。 というなら、要するに、結合セルというものは、「左上端のセル」を基点としているから、 Range("B3").MergeArea.Copy Range("B17") こういうことではないのかな? それとも、たんに17行先なら With Range("B3") .MergeArea.Copy .Offset(18) End With 一番上にセルの基点として、17行先なら、 With Range("B3").MergeArea .Copy .Offset(17 - .Rows.Count, 0).Resize(.Rows.Count, .Columns.Count) End With こういうことかな? |
Message#2 2014年12月15日(月)15時26分 From: VBAマスター | 返事 削除 変更 |
>ActiveWorkbook.ActiveSheetの、例えばC3からI3まで結合されているセルを基準ActiveCellにして 何がアクティブセルになっているのか、まず調べてみましょう。 ○状況 C3からI3まで結合済みにしてある sub macro1() range("C3").select msgbox activecell.address end sub >行方向は4から17セルまで列方向はC列からI列までをコピーしたい このように(コピーしたい範囲の)行数や列数が「既知である」と前提を置いてしまうと、「C3:I3が結合されている」とかはどうでもよくなってしまいます。 sub macro2() range("C3").select activecell.offset(1).resize(14,7).copy end sub そうではなくて何か結合セルの「今の姿」を基準にどーにかしたいなら、上述マクロ2の「7」あるいは「14」の部分に、今の状態から該当する数値を拾ってきて当てはめるような工夫をします。 |
Message#1 2014年12月15日(月)15時25分 From: ミスターさん | 返事 削除 変更 |
エクセル2013のVBAで、ActiveWorkbook.ActiveSheetの、例えばC3からI3まで結合されているセルを基準ActiveCellにして、行方向は4から17セルまで列方向はC列からI列までをコピーしたいのですが、思ったようにOffsetで位置がとれず列がどうしてもずれてしまいます。 どのような指定をすればできるでしょうか? すいませんが、よろしくお願いいたします。 |
昨日以降 2日前以降 3日前以降 4日前以降 5日前以降