• ベストアンサー

変数の間違い?

シート「M_得意先」のBS列にあるデータを上から順番にシート「sheet2」の1行目に左から一つづつ入力させるコードを作成しています。 以下のコードで問題なく動作自体はするのですが、データの入力先を Sheets("Sheet2").Cells(1 & wcnt2).Value のように記述しているにも関わらず、なぜかデータがB列ではなくL列から入力されてしまいます。ローカルウィンドウでwcnt2に格納された値を見ても「2」であり、B列から入力されるはずなのですが... 原因が分かる方、教えてください。 尚、同じ動きをする別のコードがあればそちらを作成するヒントでも結構です。よろしくお願いします。 '得意先コードをAシートに追加する Dim wcnt As Long Dim wcnt2 As Long wcnt = 2 wcnt2 = 2 Do Until Sheets("M_得意先").Range("BS" & wcnt).Value = "" Sheets("Sheet2").Cells(1 & wcnt2).Value = Sheets("M_得意先").Range("BS" & wcnt).Value wcnt = wcnt + 1 wcnt2 = wcnt2 + 1 Loop

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

  • ベストアンサー
  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.2

CellsとRangeの使い方を理解しましょう。 Range(セルの列名と行番号を文字列で指定します) Cells(セルの行番号の数値,セルの列番号の数値)といった具合に指定します。 もし、A列を2行目から順にというのであれば Cells(2,1) Cells(3,1) ・・・ 或いは Range("A" & 2) Range("A" & 3) ・・・ となるように変数を利用してください。 別案ですが、 得意先コードをAシートに追加する の場合 コピペを利用してみてください。 コードは マクロの記録から得られます。記録で得られたコードを手直しすれば、かなりシンプルになりますし Do Until Sheets("M_得意先").Range("BS" & wcnt).Value = "" を使用するより速さの改善も期待できると思います。

その他の回答 (1)

  • kybo
  • ベストアンサー率53% (349/647)
回答No.1

Sheets("Sheet2").Cells(1, wcnt2).Value としてみて下さい。(カンマが抜けてます) 「1 & wcnt2」は「12」で12列目のL列となるのだと思われます。

関連するQ&A