- ベストアンサー
エクセルVBAのCells
Cells(5.5).Value = "○" と入力すると セルE5ではなくF1(1行目の5列目)に○が入るのですが、なぜでしょうか。 Range("F5") = "○" でできるのは知っています。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
誤 Cells(5.5).Value = "○" 正 Cells(5,5).Value = "○" (5.5)なので切り上げて6、行指定が省略された形なので1になり、 Cells(6,1).Value = "○" として処理されたんだと思います。
その他の回答 (4)
- Ultra-Hetare
- ベストアンサー率38% (204/526)
詳しい説明が、下記に記載されています。 https://excelwork.info/excel/cellsproperty/ 個人的には「Object.Cells ( num )」はクソ仕様だと思いますし、 小数点を四捨五入したり、データ型の違いを勝手に変換したり というところは、止めてほしいです(エラーにしてほしい) しかしながら、そこを差し引いてもVBA(特にexcel)は極めて優秀な プログラミング言語であり、一般的な業務アプリはこれ一本で 充分カバー出来ることは承知しています。 ただ、他の言語も書く場合は、この「おせっかい」を承知で、 あえて省略可能なものを省略しないで書くことは必要と思います。
- imogasi
- ベストアンサー率27% (4737/17069)
#3です。 既出回答(#1,#2)を理解するには、 Cellsで ( )内に1数値(勿論制限在り)だけ指定できるが、 Sub test01() Cells(8).Select ’A1から6番目のセル H1 MsgBox Columns.Count Cells(16386) = "BB" 'range("B2")に入る。 End Sub を実行して、実感してもらう方が、よいかも。Columns.Count列で1行下行に折り返す。 小数点以下の数を指定すると切り捨てられた数が使われるというルール。
- imogasi
- ベストアンサー率27% (4737/17069)
正解は、すでに出ているケースと思います。 ーー しかし、質問者には、下記をどうですか。 Sub test01() Range("b2").Select Selection.Cells(1, 5) = "AA" End Sub でF2セルにAAが入ります。 これを参考に。 Cellsには、Offsetに近い考えがあるように(勝手に)思っています。 普通はA1セルの前・上(仮想)を起点にしていると思えばよい。
- HohoPapa
- ベストアンサー率65% (455/693)
Cells(5.5).Value = "○" 5と5の間が小数点だからと思います。
お礼
ありがとうございます。