• ベストアンサー

列を数値で選択する方法をご教授ください

エクセル2007です。 Columns("a:b").Select なら列を選択できますが、 Columns(1 & ":" & 2).Select だと 「実行時エラー1004、アプリケーション定義またはオブジェクト定義のエラーです」 になってしまいます。 数値にしたい理由は、変数を代入したいからです。 アドバイスよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

Columns("1:2")といった書きぶりはありませんので,別の方法を使うしかありません。 実際の所,趣味に応じて書きぶりは多々ありますが,たとえば range(columns(1), columns(2)).select など。

iuy65ghj8
質問者

お礼

参考になりました。ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.2

下記で試してください。 Range(Columns(1), Columns(2)).Select ただVBAでは大概の場合Selectしなくても大丈夫です。 Selectしない方が処理速度が速くなります。

iuy65ghj8
質問者

お礼

ありがとうございました。大変参考になりました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • vba 離れた列を選択するには?

    Range(Columns(5), Columns(10)).Select これだと5列目から10列目の全てが選択されてしまいます。 荘ではなく、5列目と10列目のみ選択状態にするにはどうすればいいでしょうか? 列はアルファベッドではなく数値で指定したいです。

  • 「Columns("A:C")」の列文字を数字にして表記したい

    こんばんは。早速ですが質問します。 『Columns("A:C").ColumnWidth = 3』 の("A:C")の部分(列文字)を数値にしたいのですが 『Columns(1 & ":" & 3).ColumnWidth = 3』 だと 「アプリケーション定義またはオブジェクト定義のエラーです。」になります。 『Columns(1).ColumnWidth = 3』 ならエラーになりません。 どうやって数字で表示すればいいでしょう? よろしくお願いします。

  • Excelのコンボボックス選択方法

    VB初心者です。宜しく御願いします。 ExcelのコンボボックスをVBから選択したいのですが、上手くいきません。 AAAというコンボボックスで中身が「111」「222」「333」の場合、 objXlsSeet.Range("AAA").Select = "222" としたのですが、実行時エラー'1004' アプリケーション定義またはオブジェクト定義のエラーです。 となります。 ご教授御願いします。宜しくお願い致します。

  • VBA 検索列がエクセル側で選択されない状態で検索

    Columns("B:B").Select Const find_replace = 1849 Application.FindFormat.Clear Application.CommandBars.FindControl(ID:=find_replace).Execute B列を選択し検索ダイアログを表示させています。 このコードだと、Excel上でB列が選択され、パッと見、どこを選択しているかモロばれで、みっともないのですが、 エクセル上でそれが見えないよう、VBAを変更することはできるのでしょうか?

  • 離れた列をvbaで数値で選択するには?

    Sub Macro1() Range("a:c,e:g").Select End Sub を数値にしたいのですが、 Sub Macro2() Range(Columns(1), Columns(3) & ":" & Columns(5), Columns(7)).Select End Sub だと、rangeでコンパイルエラーになります。 http://okwave.jp/qa/q7329478.html を見たのですが、 どうすればいいのかわからないので教えてください。

  • VBA 文字列と数値の混在

    Excel VBA 独学中の初心者です。独学中の初心者です。 データ型に関する以下の疑問についてお答えいただける方、よろしくお願い致します。 疑問1.「文字列 & 数値」でエラーにならず、結果は文字列になるようですが、これはVBAの規則上当たり前のことでしょうか。 疑問2.InputBox関数の戻り値は、Typeを省略した場合文字列と思いますが、これを数値型の変数に代入してもエラーは発生しませんでした。これも当たり前のことでしょうか。 具体例は以下です。 ------------------ Option Explicit Sub 文字列と数値の疑問() '初期設定 Cells.Clear Range("A1").Select '本題はここから Dim i As Long Dim j As Long Dim strRange As String Dim strInput As String '------------------ '疑問1の例 i = 2 strRange = "A" & i '疑問1:文字列と数値変数(長整数型)を文字列連結演算子で連結してもエラーにならない。・・・なぜ? '結果は1つの文字列→strRange ="A2" '例 Range(strRange).Select '動作OK Range(strRange) = i '動作OK '------------------ '疑問2の例 strInput = InputBox("選択行を入力してください", , "4") 'strInputは文字列型変数 j = strInput '疑問2:数値変数(長整数型変数)に文字型変数を代入してもエラーにならない・・・なぜ? '結果は長整数型変数(数値) j=4 (Input BOX をデフォルトでOKしたとき) '例:以下の両方とも動作OK '1) strRange = "A" & strInput '文字列 & 文字列 →文字列 strRange ="A4";疑問なし Range(strRange).Select '動作OK Range(strRange) = strInput '2) Cells.Clear '確認用にクリアスクリーン Range("A1").Select '確認用にセル位置移動 strRange = "A" & j '文字列 & 数値 →文字列 strRange ="A4";疑問1と同じ Range(strRange).Select '動作OK Range(strRange) = j '動作OK End Sub

  • 列幅が変更されるエリアデータでの平均値取得方法

    excel2010 B6セルから*6(*の列はデータの数により変更されます)までのデータ平均をマクロで *+1の列に記述しようとしています。 B6からBI6までデータがあればBJ6セルでAVERAGE(B6:BI6)と表記したいということです。 マクロでは Range("BJ6") = "=AVERAGE(B6:BI6)" です。 方法としては、データを貼り付けた最終列の1つ右の列にセルをもっていき、 B6から*6までの平均を記述しようとしています。 '最終列の1つ右のセル列選択 Cells(6, Columns.Count).End(xlToLeft).Offset(0, 1).Select Range(Cells(6, Columns.Count).End(xlToLeft).Offset(0, 1).Address) = "=AVERAGE(B6:Cells(6, Columns.Count).End(xlToLeft).Address)" で実行すると実行時エラー1004 アプリケーション定義またはオブジェクト定義のエラーです というエラーが表示されます。 何が 間違っているのでしょうか? Range(Cells(6, Columns.Count).End(xlToLeft).Offset(0, 1).Address) = "=AVERAGE(B6:BI6)" を実行すると、 BJ6セルに=AVERAGE(B6:BI6) と表示されたので、 BI6に相当する部分は、 Cells(6, Columns.Count).End(xlToLeft).Address で表せると思うのですが…。

  • 実行時エラー '1004' の解決方法を教えて下さい。

    Excel 2003でデータ解析をしていますが、 実行時エラー '1004': アプリケーション定義またはオブジェクト定義のエラーです。 と出てしまい「デバッグ」をクリックすると、 ActiveSheet.Shapes("変数" & CStr(i)).Ungroup.Select の部分が黄色くマークされています。 パソコンに詳しくないのでどこをどのように修正すればエラーが出なくなりますでしょうか? ご存知の方、どうぞよろしくお願いいたします。

  • 列を2度コピーするマクロ

    B列をC列にコピーした後、A列をB列にコピーするという2段階コピーの下記マクロを、「新しいマクロの記録」を使って作りました。 しかし下記マクロは 列選択時の青反転が実行時に残って、使用感がいまひとつです。 「新しいマクロの記録」ではなく、もっとスマートなマクロはできないでしょうか? なお、列選択ではなく必要なセル数だけ選択すれば青反転はなくなると思いますが、行数が確定していないので列選択にしたいと思っています。 ついでに下記マクロについて質問です。 11行目はなぜ5行目とは違うのでしょうか?.PasteとPasteSpecial Pasteとの違いを教えていただければ幸いです。 Sub Macro1() Columns("B:B").Select Selection.Copy Columns("C:C").Select ActiveSheet.Paste Columns("A:A").Select Application.CutCopyMode = False Selection.Copy Columns("B:B").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("A2").Select Application.CutCopyMode = False ActiveWorkbook.Save End Sub

  • 列全体をコピーして別の列に貼り付けたい

    列全体をコピーして別の列に貼り付けたいのですが、 「そのコマンドは複数の選択範囲に対して実行できません。」 とエラーになってしまいます。 コードは以下のとおりです。 Worksheets("aaa").Columns(1).Select Selection.Copy Worksheets("aaa").Columns(3).Select ActiveSheet.Paste よろしくお願いします。

専門家に質問してみよう