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の文字は消しつつ移動先では表示させるにはどうしたらよいですか?

このQ&Aに関連する最新のQ&A

A 回答 (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

この回答への補足

全体を出していなかったのですが皆さんに教えて頂いたことをふまえて下記のようにしてみましたがうまく処理できません。
どこがおかしいのでしょうか?

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

補足日時:2005/04/18 15:16
    • good
    • 0

>下記のようにしてみましたがうまく処理できません。


エラーを発生しているのでもないでしょうし、コードを見ても、一体、どのようなことをされようとしているのか、具体的な説明がないと分かりません。できれば、簡単なレイアウトを出して、ご要望の内容を言葉で示してください。
    • good
    • 0
この回答へのお礼

すみません。
うまくいってしまいました。
何かが変だったのでしょうが・・・。

でもほんとに助かりました。
皆様ありがとうございます。

お礼日時:2005/04/18 15:52

試しに実行してみたところ意図どおりの動作をしたので、プログラム自身は間違っていないと思います。


恐らくActiveSheet.UsedRange.Columns.Countの値が予想以上に大きいのではないかと思います。
「x = ActiveSheet.UsedRange.Columns.Count + 1」の行にブレークポイントを設定し、ActiveSheet.UsedRange.Columns.Countの値がどうなっているかを確認してみてください。

この回答への補足

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

補足日時:2005/04/18 15:14
    • good
    • 0

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

この回答への補足

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

補足日時:2005/04/18 13:42
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング

おすすめ情報