- ベストアンサー
Excel VBAでセルの範囲を選択し、左に拡張する方法
- Excel VBAを使用して、セルの範囲を選択し、その範囲を左に拡張する方法について教えてください。
- 具体的には、B2からB15までの範囲を選択した場合、その範囲をA2からB15まで拡張したいと考えています。
- 現在、単一セルだけを選択した場合には正しく拡張されますが、複数範囲を選択した場合にも同じ結果になってしまいます。どのように修正すれば良いでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
関連するQ&A
- エクセルVBAで、とびとびのセルの順次選択方法?!
仮にA1:B10という範囲内で、空白のセルだけを一つずつ順番に選択しようと思い、以下のコードを書いてみました。 実行してみると、範囲内がすべて空白の場合にはA1→B1→A2→B2→・・・と、選択してくれます。 しかし、空白と空白以外のセルが混在していると、最初の空白セルから下に、範囲内の空白セル数分だけ、空白であると否とを問わず選択してしまいます。 ( ̄□ ̄;)!! myRngには空白セルだけを指定され、myRng.Cells.Countでもちゃんと空白セル数がカウントされます。 でも、myRng.Cells(i).Select では正しく選択されないのはなぜでしょうか? Cells(i)を使用せず、ループを For Each c In myRng c.Select Application.Wait Now + TimeValue("0:00:01") Next c で回せば選択できるのに・・・・・。 Sub test01() Dim x As Long, i As Long, myRng As Range With ActiveSheet Set myRng = .Range("A1:B10").SpecialCells(xlCellTypeBlanks) x = myRng.Cells.Count For i = 1 To x myRng.Cells(i).Select Application.Wait Now + TimeValue("0:00:01") Next i End With Set myRng = Nothing End Sub ご教示くださいませ。 (o。_。)oペコッ.
- ベストアンサー
- オフィス系ソフト
- 日付が表示されているセルのみ範囲指定したい
Excel2007でマクロ作成中の初心者です。 範囲指定がうまくいかない。 1)セルB30 =IF(A30="","",VLOOKUP(A30,表データ,2,FALSE)) セルB31 =IF(A30="","",VLOOKUP(A31,表データ,2,FALSE)) 以下略 というように、セルB30~B60まで関数が入っており、 以下のように表示されています。 1 9月21日 2 9月22日 以下略 〃 29 10月19日 30 10月20日 31 ←(ここのセルは日付表示されず空欄。 関数 =IF(A60="","",VLOOKUP(A60,表データ,2,FALSE))が入っている) 2)以下のコードを実行すると Sub 範囲を選択() Range("B30").CurrentRegion.Select Selection.Resize(Selection.Rows.Count - 1).Select Selection.Offset(1, 0).Select Selection.Resize(Selection.Rows.Count - 1).Select End sub 1から31行まで選択されてしまします。これを30行目まで、日付の表示あるセルのみ 選択したいのですが、どうすればよろしいでしょうか
- ベストアンサー
- Visual Basic
- VBA、セルの選択範囲について
下記のような表を用意し、 A B C D E 1 1月 2月 3月 合計 2 Aさん 1 2 3 6 3 Bさん 1 2 3 6 4 Cさん 1 2 3 6 5 合 計 3 6 9 18 セルの範囲選択を指定し別シートの任意のセルへコピーをVBAで行いたいのですが、 Aさん、Bさん、Cさんという範囲を選択する為に、合計という文字は含みたくないので、 Range("A2").Select Range(Selection, Selection.End(xlDown).Offset(-1)).Select と記載し、これは出来ました。 同様に、 1月、2月、3月という範囲も同様にxlToRightを使用し選択出来ました。 Range("B1").Select Range(Selection.End(xlToRight).Offset(, -1), Selection).Select しかし、B2:D4の範囲の指定の仕方がわかりませんでした。 データのレコード数は一定ではないのでB2:D4というように範囲を指定する事は出来ません。 そのときに応じてDさん、Eさんと増えたり、4月、5月と増えたりするので。 何か方法があればご指導お願いします。
- ベストアンサー
- オフィス系ソフト
- ExcelVBAで複数範囲した色セルと、条件で別セルも同色になるようにしたい
▼Excel2003を利用でSheet1とSheet2を使っての質問です▼ 下記に簡単に事例を記載いたします。(※実際にはデータが沢山あります) ★Sheet1にはA1~G3範囲横7列縦3行の表があり、表中にはA1、B1、C1、D1が空白でその次からは1~17までの数字が横列に沿って順次入っています。G3セルが最後の数字の17となっています。 横7列に入っている数字はA1、A2、A3、A4空白のセル以外は列毎にセル背景色が異なり全部で7色入っています。 ★次にSheet2に新たにA1~D4範囲内に表を作り、順次セルに数字値を入力し、例えばSheet2のA1セルが1だったら、そのSheet2のA1セル背景色をSheet1の表中の1が入力されているセルと同じ背景色にしたいです。 以上の課題をExcelVBAを使って解決したいのですがご存じの方いらっしゃいましたらVBAでどうプログラミング表現すれば良いか教えていただければ幸いです。 ちなみに私自身はExcelVBAを一度も使ったことがなく初心者です。 恐縮ながらもよろしくお願い申し上げます。
- 締切済み
- Visual Basic
- 複数行の最下行の範囲選択
こんにちは、マクロ初心者です。 A B C D E F G H I 1 あ あ あ あ あ あ 2 あ あ あ あ あ あ 3 あ あ あ 4 あ あ 5 あ あ 6 あ あ 7 あ あ 8 あ あ 9 あ 10 上記のような表があるとき セル"A"列から"I"列までの最下行にあたる行を検索し、 更に最下行までの範囲をコピーして、別シートにコピーさせたいのです。 (上記の例だと、セル"A1"~"I9"の範囲をコピーする) Range("A1", Range("I1").End(xlDown)).Select Selection.Offset(0, 0).Select 上記のコードでできると思ったのですが、なぜか不必要な範囲まで選択されてしまいます。 (下方向に数行余計に選択されてしまう) これではダメなのでしょうか? ちなみに、数式などは入っておらず、入力されていないセルは全て空白です。 A列だけの最下行を選択するというのは簡単に出来たのですが、このように複数の範囲を 選択する場合は、どのようにコードを書くべきでしょうか。 マクロのスキルが無い為困っています。 アドバイスをよろしくお願いいたします。
- ベストアンサー
- Visual Basic
- Excel(セルの結合マクロ)
いつもお世話になっております。 Excelのマクロで、選択範囲の中で、下のセルが空白のものは、上のセルと結合されるマクロを作りたいと考えています。 (例1:A1セルに”TEST”が入力されており、A2,A3セルが空白として、A1:A3を選択し、マクロを実行するとA1からA3がセル結合される 例2:A1に”TEST2”B2に"TEST3"が入力されており、A1:B3を選択すると、A1からA3が結合され、B2とB3も結合される) 説明が下手で申し訳ないのですが、お力を貸していただけませんでしょうか? よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- ExcelVBA:セルの範囲を指定し、線を引く方法
プログラムでセルの範囲を指定し、線を引きたいのですが、マクロでやった結果うまくいったのですが、自分でプログラムを作るとセルの範囲を選択するときに違った動作をしてしまいます。 下のコードはセルAの線、Bの線、……、と線を引くために範囲を選択しているのですが、この部分の選択範囲がおかしくなってしまいます。 Range("A:A,B:B,C:C,D:D,E:E,F:F,G:G,G:G").Select With Selection.Borders(xlEdgeRight) .LineStyle = xlContinuous End With 一回一回範囲を指定し、線を引く方法もありますが、どのように対処すればよいでしょうか? 回答よろしくお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- Excelマクロ:変数でセル範囲指定
マクロの迷い人です。 Excelの表をマクロで印刷しようと思っています。 行の数が毎回違うため、最終セルもその都度指定しなければなりません。 A1 B1 A2 B2 A3 B3 A4 B4 この例で、A5 B5 以降は空セルとします。 印刷範囲を Range("A1:B4")と書かずに、そのときどきのアクティブセルを変数に代入し、変数を使って範囲指定したいのです。 Sub MacroTest () Dim a As Variant Dim b As Variant Range("B1").Activate Do While a <> 0 ActiveCell.Offset(1, 0).Activate '空白でなければ一つ下に移る a = ActiveCell.Value Loop ActiveCell.Offset(-1, 0).Activate '上の行に移る b = ActiveCell.Value Range("A1:"& b).Select End Sub こうしてみましたがダメでした。 デバッグの方法がわからないので教えて下さい。よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- エクセルVBAでセル範囲選択→並べ替え
大きなデータを選択する場合でA列には空白がない場合、 Range("A1").CurrentRegion.Select でいいと思うのですが、このデータを並べ替えようとするとき、1行から4行めには別の文字列がはいっており、5行目以下がデータであるとき、 Range("A1").CurrentRegion.Offset(4).Selectで下にさげると、最終選択範囲も下がってしまいます。 最終の範囲を変えず、開始位置を5行目にかえるにはどうすればよいのでしょうか?
- ベストアンサー
- オフィス系ソフト
- 【EXCEL VBA】定数で与えられたセルを使いセル範囲を選択する方法
【EXCEL VBA】定数で与えられたセルを使いセル範囲を選択する方法 VBA初心者です。よろしくお願いします。 実行したい処理は決めたのですが、Excelのレイアウトが未定です。 そこで、レイアウト変更を考慮し、処理対象セルを定数で与えています。 例えば、 Range("B2:B8").Select は、 Const IchI As String = "B2" Range(Range(IchI), Range(IchI).Offset(6, 0)).Select ・・・(1) としています。(これ自体おかしいのかもしれません。。。) しかし複数のセル範囲 例えば、 Range("B2:B8,F2:F8").Select の場合、どうしたらいいのかわかりません。 (1)自体おかしいのかもしれません。 良い方法があれば教えてください。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
お礼
早速のご回答ありがとうございます resizeの行数の設定が原因だったのですね、 本当に助かりました。