• ベストアンサー

エクセルマクロで変数の受け渡しが上手くいきません。セルの結合と関係あるのでしょうか?

エクセルマクロで『型番』と入力されたセルを見つけ、 そのセルの列番号をkatabanretuに代入したいのですが、 kataban.Column=4 なのに katabanretu=2 となってしまいます。 『型番』と入力されたセルは結合されていて D1:E1です。 マクロは初心者で、記録マクロやネットを見ながらいじれる程度なので わかりません。 どうなっているのでしょうか? Set kataban = ActiveSheet.Cells.Find(What:="型番") If kataban Is Nothing Then MsgBox "[型番]列がありません!" Exit Sub Else katabanretu = kataban.Column End If

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

D1:E1を結合し、型番と入力した上で以下を実行しました。 Sub test01() Dim kataban As Range Dim katabanretu As Long Set kataban = ActiveSheet.Cells.Find(What:="型番") If kataban Is Nothing Then MsgBox "[型番]列がありません!" Exit Sub Else katabanretu = kataban.Column MsgBox katabanretu End If End Sub katabanretuは4です。 掲示されたコードより下のほうに、katabanretuに何かをさらに代入してたり、あるいは2列目に型番という文字があったりしませんか?

noname#113614
質問者

お礼

あります!下の方に・・・。 列を挿入するようにしてあるので 増えた分が6になっていたのですね! 解決しました。ありがとうございました。

その他の回答 (1)

  • higekuman
  • ベストアンサー率19% (195/979)
回答No.1

> katabanretu=2 となってしまいます。 それは、どのようにして確認しましたか? B2セルにも「型番」という文字が入っていたりはしませんよね? 私の環境では、katabanretuは4になりますよ。

noname#113614
質問者

お礼

VB画面でカーソルを合わせるとkatabanretu=2などと出てきます。 もう一つ同じような式があるのですが、そこも4=6になってしまって。 結果、列がずれてしまいます。

関連するQ&A