- ベストアンサー
マクロで文字の移動
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の文字は消しつつ移動先では表示させるにはどうしたらよいですか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>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
その他の回答 (3)
- Wendy02
- ベストアンサー率57% (3570/6232)
>下記のようにしてみましたがうまく処理できません。 エラーを発生しているのでもないでしょうし、コードを見ても、一体、どのようなことをされようとしているのか、具体的な説明がないと分かりません。できれば、簡単なレイアウトを出して、ご要望の内容を言葉で示してください。
お礼
すみません。 うまくいってしまいました。 何かが変だったのでしょうが・・・。 でもほんとに助かりました。 皆様ありがとうございます。
- SSBBGLUV
- ベストアンサー率47% (11/23)
試しに実行してみたところ意図どおりの動作をしたので、プログラム自身は間違っていないと思います。 恐らくActiveSheet.UsedRange.Columns.Countの値が予想以上に大きいのではないかと思います。 「x = ActiveSheet.UsedRange.Columns.Count + 1」の行にブレークポイントを設定し、ActiveSheet.UsedRange.Columns.Countの値がどうなっているかを確認してみてください。
補足
ブレークポイントとはどうやって使うのでしょうか? なんとなく意味はわかるのですがやったことがないので教えてください。
- oyaji-2
- ベストアンサー率24% (6/25)
Cells(2,1).Value のValueが余計では?
補足
valueは、はじめはなかったのですが、消えてしまったので足してみました。
補足
全体を出していなかったのですが皆さんに教えて頂いたことをふまえて下記のようにしてみましたがうまく処理できません。 どこがおかしいのでしょうか? 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