• ベストアンサー

マクロで文字の移動

Dim x As Integer x = ActiveSheet.UsedRange.Columns.Count + 1 Cells(1, x) = Cells(2, 1).Value Cells(2, 1).ClearContents End Sub 一部しか載せてないので変かもしれませんが、このようなマクロを作ってA2の文字列を移動したいのですが消えてしまいます。 A2の文字は消しつつ移動先では表示させるにはどうしたらよいですか?

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

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

>x = ActiveSheet.UsedRange.Columns.Count + 1 これでは、うまくないと思います。 なぜ、UsedRangeを使ったのか、分かりません。 コードが意味している内容は分かりませんが、例えば、以下のようにしてみたら、いかがでしょうか? Sub test_1() Dim x As Integer With ActiveSheet If WorksheetFunction.CountA(.Cells(1, 256)) = 0 Then  x = .Cells(1, 256).End(xlToLeft).Column  .Cells(1, x + 1).Value = .Cells(2, 1).Value  .Cells(2, 1).ClearContents End If End With End Sub

nanasupra
質問者

補足

全体を出していなかったのですが皆さんに教えて頂いたことをふまえて下記のようにしてみましたがうまく処理できません。 どこがおかしいのでしょうか? Sub syusseki() Dim i As Integer Dim x As Integer x = Cells(1, 256).End(xlToLeft).Column For i = 2 To 250 If IsNumeric(Cells(i, 2)) And Cells(i, 2) > 0 Then Cells(Cells(i, 2), x + 1).Value = "○" Cells(i, 2).ClearContents Cells(1, x + 1).Value = Cells(2, 1).Value Cells(2, 1).ClearContents End If Next End Sub

その他の回答 (3)

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

>下記のようにしてみましたがうまく処理できません。 エラーを発生しているのでもないでしょうし、コードを見ても、一体、どのようなことをされようとしているのか、具体的な説明がないと分かりません。できれば、簡単なレイアウトを出して、ご要望の内容を言葉で示してください。

nanasupra
質問者

お礼

すみません。 うまくいってしまいました。 何かが変だったのでしょうが・・・。 でもほんとに助かりました。 皆様ありがとうございます。

  • SSBBGLUV
  • ベストアンサー率47% (11/23)
回答No.2

試しに実行してみたところ意図どおりの動作をしたので、プログラム自身は間違っていないと思います。 恐らくActiveSheet.UsedRange.Columns.Countの値が予想以上に大きいのではないかと思います。 「x = ActiveSheet.UsedRange.Columns.Count + 1」の行にブレークポイントを設定し、ActiveSheet.UsedRange.Columns.Countの値がどうなっているかを確認してみてください。

nanasupra
質問者

補足

ブレークポイントとはどうやって使うのでしょうか? なんとなく意味はわかるのですがやったことがないので教えてください。

  • oyaji-2
  • ベストアンサー率24% (6/25)
回答No.1

Cells(2,1).Value のValueが余計では?

nanasupra
質問者

補足

valueは、はじめはなかったのですが、消えてしまったので足してみました。

関連するQ&A