• ベストアンサー

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

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

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんばんは。 私も、前々から、これに関しては疑問に感じていました。 それは、VBAのワークシートの引数の元のソース部分は、数値処理なのに、Columns は、文字によって入れることに成り立ちます。確かに、変数として扱うには、"A:C" は上手くないのは同感です。Columnsの引数は、index で、Rows との整合性がなくてはならないのに、その統一が取れていません。これは、設計上のミスかもしれません。 最初に、test1 の場合。 Sub test1()  With ActiveSheet   .Range(.Columns(1), .Columns(3)).Select  End With End Sub このような形は、一般的ではありません。それは、Rangeの内部の引数にオブジェクトを入れるということは、納まりがよくないからです。基本的に、親オブジェクトから、プロパティとして一続きなっていなければなりません。 Sub test2()  With ActiveSheet   .Cells(1, 1).Resize(, 3).EntireColumn.Select   'Cells(1, 1).Resize(, 3).ColumnWidth = 20 '列幅を20にする  End With End Sub そこで、数値処理する場合は、こういう形にするしかないのかなって思います。

uiyiuq
質問者

お礼

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

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

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

やってみると Columnsの複数列指定の場合A:Cのようにすべきで1:3はエラーです。 1つの列の場合は数字指定が出来ます。 Application.ReferenceStyle = xlR1C1が関係してないかと思って やってみましたが、関係ないようです。 不統一な感じで、理由不明ですが、やむを得ません。 Sub test01() Columns("A:C").ColumnWidth = 15 End Sub Sub test02() With Application .ReferenceStyle = xlR1C1 End With Columns(4).Select Selection.ColumnWidth = 10 End Sub Sub test03() With Application .ReferenceStyle = xlA1 End With Columns(6).Select Selection.ColumnWidth = 10 End Sub

uiyiuq
質問者

お礼

ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

Range(Columns(1), Columns(3)).ColumnWidth = 10 が正解でしょうが、下記でも出来ます。 Range(Cells(1, 1), Cells(1, 3)).EntireColumn.ColumnWidth = 20 Range(Cells(1), Cells(3)).EntireColumn.ColumnWidth = 30

uiyiuq
質問者

お礼

ありがとうございます。

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

関連するQ&A

  • 数字と文字列から数字のみ取り出したい

    下記のような数字と文字の組み合わさった文字列から数字のみを取り出したいのですが、 基準となる文字もなく、数字の桁、文字数もバラバラで、さらに文字部分にも数字が 入っていて調べた数式が使えず困っています。 (例1)109778大倉山マンション第3⇒109778 を取り出したい (例2)13482マックハイム綱島第10 ⇒ 13482 を取り出したい (例3)12896ハイム大倉山⇒12896 を取り出したい (例4)1198藤和シティコープ大倉山太尾町A棟⇒1198を取り出したい 調べた数式=LEFT(A1,LEN(A1)*10-SUM(LEN(SUBSTITUTE(A1,{0,1,2,3,4,5,6,7,8,9},)))) 上記の数式だと(例1)(例2)の場合、建物名の数値を反映してしまい数値のみ取り出せません。 数値部分はみたところ4~6桁でした。 何か良い数式がありましたら、ご教授願います。

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

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

  • 16表記の文字列を数字に直したい(C/C++標準関数)

    16表記の文字列を数字に直したい(C/C++標準関数) 例えば、"FF”な255 or -127という風に16表記の文字列を数字に直すC/C++の標準関数はありますか? なければ、どのようなやり方で行っていますか? VxWorksのprogramを開発しようとしているのですが、どんな標準関数が使えるのか、 直接契約していないので分かりません。 組み込み製品の説明書にはC/C++の仕様の説明書がないですね。 VxWorksでsupport されている標準関数はどんなものがあるかもご存知の方教えてください。 シリアル通信のプログラムで伝聞がASCIIで書かれていて、数値は10進だったり、16進だったりします。

  • エクセルで半角数字には数値と文字列がある?

    http://okwave.jp/qa/q6473596.html の質問を見て私も納得がいかず質問させていただきます。 たとえば、A1セルの書式を文字列に設定してから半角で数字を打ち込むと数字は数値でなく文字列としてセルに入ります。 この入力後、A1セルの書式を標準や数値に直してもそのセルの中の数字は左に寄ったままで文字列のままでいるようです。 (でもこれをセルの中でエンターキーを押したりすると数値になってしまいますが) 次にB1セルの書式を標準あるいは数値にして数字を打ち込むと、当然のことですが数字は数値としてセルに入ります。 この入力後、B1セルの書式を文字列に変えると数字は左に寄りますから一見文字列になったように見えます。 ところが上記のセルとこのセルをA1=B1で試してみるとFALSEが返ります。 逆に同じ数字を数値として打ち込んだセルと=で試すとTRUEが返ります。 これはA1とB1は同じ文字列としての数字ではないという証拠だと思います。 B1セルの書式を標準に戻すとまた数字は右よりにもどりますから、セルの中の数字は数値のままのようです。 つまり、半角の数字にはセルの書式にかかわらず文字列と数値の二つがあるということなのでしょうか? だとしたらこの二つはどうやって区別すればいいのでしょうか?

  • エクセルVBAで列幅設定

    A列の幅を、C~F列の幅(同一ではありません)に設定しようと思いました。 ところが Columns("A").ColumnWidth = Range("C1:F1").Width とすると、ColumnWidthとWidthの単位がまったく違うのでエラーになります。 同じ単位で設定するには Columns("A").ColumnWidth = Columns("C").ColumnWidth + Columns("D").ColumnWidth + Columns("E").ColumnWidth + Columns("F").ColumnWidth とするか、 Sub test02() Dim c As Range Dim x As Single For Each c In Range("C1:F1") x = x + c.ColumnWidth Next Columns("A").ColumnWidth = x End Sub などのように手の込んだことをするしか思いつきません。 もっと簡単な方法はないでしょうか?

  • Excelの文字列と文字列の連結

    A1のセルにはj50 C1のセルには01(ユーザ定義で00の書式) この二つの数値をCONCATENATE()関数を用いて文字列を 連結するとj501となってしまいます。 C1のセルを文字列の書式にするとうまくj5001と表示されますがそれ以外に方法はないでしょうか?

  • エクセルマクロ 同じ操作をする複数の列の記述は?

    列の幅を調整するときに、同じ幅の列をまとめて記述する方法を教えてください。 個別に記述し、やりたいことはできているのですが、まとめて記述する方法が知りたいです。 Columns("A").ColumnWidth = 4.63 '各列の幅を変更 Columns("b").ColumnWidth = 8.38 Columns("C").ColumnWidth = 12.75 Columns("D").ColumnWidth = 6.38 Columns("e").ColumnWidth = 4.13 Columns("F").ColumnWidth = 4.63 Columns("g").ColumnWidth = 8.38 Columns("H").ColumnWidth = 12.75 AとF列=4.63 をどのように記述したらいいのでしょうか

  • A列とC列に数字、B列に文字列が下記の通り配置されています。A列の番号

    A列とC列に数字、B列に文字列が下記の通り配置されています。A列の番号の小さいものが”親”、番号の大きいものが”子”の様な関係(1が親、3が子、6が孫の関係)にある配置が有る場合に、D列に自分の親の文字列、E列にC列の値を元に値(子供は親×子、孫は親×子×孫の関係)を設定したい場合、どの様な方法で対応すればよいでしょうか? A列   B列   C列   D列   E列 1   文字A   3          3 3   文字B   2   文字A   6 6   文字C   2   文字B   12 1   文字D   1          1 3   文字E   2   文字D   2 6   文字F   2   文字E   4 3   文字G   1   文字D   1 6   文字H   1   文字G   1

  • [C@3331394などの文字列

    Stringを表示させようとして[C@3331394などという文字列("[C@"以下の数字は毎回変わります。)が意図せず出てきてしまい、困っています。これはメモリ番地とかでしょうか?どなたかこのような文字列を見かけたことのあるかた、教えてください。 ちなみにezplusのエミュにてauアプリを開発しています。 http通信をしてサーバから文字列を取ってきて、それを表示する練習用のプログラムを書いてまして、その文字列が問題の文字列になってしまいます。 エミュでも、携帯実機でも出てきてしまいます。

    • ベストアンサー
    • Java
  • 文字だけ残して数字だけ消す

    Excel2003 VBAで文字だけを残して数字だけを消す方法を色々と考えたのですが 上手くマクロが作れずにおります。 例として、 A列    B列  C列 7月1日  東京  ABCDEF123456GHIJK のような、C列の部分のみ、文字と文字の間にある数字の部分だけを消したいのです。 理想的な結果としては 7月1日 東京 ABCDEFGHIJK という状態にしたいのですが可能でしょうか? ctrl+Gでは、全部消えてしまって困っています。 以上、宜しくお願いします。

このQ&Aのポイント
  • 購入したPCで管理者が表示されない問題が発生しました。
  • 再セットアップを行ってもオフィス2021が認証されなくなりました。
  • NECサービスセンターでの対応が分かりにくく、Microsoft社に問題解決を依頼したが質問方法が分からず困っています。
回答を見る

専門家に質問してみよう