• ベストアンサー

簡単な質問ですみません

すみません。簡単な質問で申し訳ないですが、何年かぶりにVBAをやっています。 Cells(8,3)からCElls(8,8)までのセル内の文字列をCells(8,8)のセルに一つにまとめたいのですが、 セル内が文字の場合は問題ないのですが、1などの数値だけの場合はエラーになります。 必ず文字として認識して、文字列を作るようにしたいのですが、 セルの設定に問題があるのでしょうか、それともVBAに欠陥があるのでしょうか。 教えてください。次は、問題の箇所をシンプルにしたものです。 Sub TEST() For RETU = 3 To 7 Cells(8, 8) = Cells(8, 8) + Cells(8, RETU) Next RETU End Sub

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

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

C-G列が 1 sd fgh 安藤 33 結果 1sdfgh安藤33 Sub TEST() For RETU = 3 To 7 Cells(8, 8) = Cells(8, 8) & Cells(8, RETU) Next RETU MsgBox Cells(8, 8) End Sub でうまくいきますよ。昔のBASICと違って文字列連結に+は使わないほうが良いようです。 VB6.0の解説書では、&を使うことが推奨されています、という表現ですが、エクセルVBAではエラーになりますね。

その他の回答 (3)

回答No.4

こんにちは。 &の連結でかまいませんが、データ型と表現を意識するならFORMATを使用して文字列型表現に明確化して 連結するとエラーになりません。 FORMATに第2パラメータを付与することで 表現方法をコントロールすることも可能です。 Sub TEST() For RETU = 3 To 7 Cells(8, 8) = Cells(8, 8) & FORMAT(Cells(8, RETU)) Next RETU End Sub

noname#18526
質問者

補足

みなさん有難うございます。解決です。

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

こんにちは。 [&] でも[+]でも、きちんと、Cellsのプロパティや型を指定していれば、どちらでも問題はありませんね。[&]は、今は、文字列の結合には使うのが一般的になっているだけです。でも、自動キャストに任せておくと、うまくいかないことがありますから、データ型の指定やプロパティを明示的に行ったほうが、エラーが少ないです。 Sub TextBinding() Dim RETU As Long Dim buf As String For RETU = 3 To 7  buf = buf + Cells(8, RETU).Text  'buf = buf + CStr(Cells(8, RETU).Value) Next RETU  Cells(8, 8).Value = buf End Sub

  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.1

Cells(8, 8) = Cells(8, 8) & Cells(8, RETU) とか Cells(8, 8).Value = Cells(8, 8) & Cells(8, RETU) とか じゃだめですかね? 「+」使うと連結じゃなくて、計算されちゃうんじゃ?

関連するQ&A