エクセルVBAについて次の2つについてお答えください。


質問①
「E列が空白でなければそこ、そこに記入されている文字列をN列に移動する」
というつもりで下記のマクロを作成しました。

dim xxx as integer
for xxx= 1 to 2000
If Cells(xxx, 5).Value <> "" Then
Cells(xxx, 5).Cut Destination:=Cells(xxx, 15)
xxx=xxx+1
end if
next xxx

上記のマクロを実行するとうまくいく行とうまくいかない行があります。
どこを直せばよいのでしょうか?

質問②
マクロ全体から3行目だけとか、
5~8行目だけ実行させる方法はありますか?
あれば具体的な手順を教えてください。

回答の条件
  • 1人2回まで
  • 登録:2007/11/11 04:12:57
  • 終了:2007/11/13 03:30:22

回答(3件)

id:whitecat77 No.1

whitecat77回答回数32ベストアンサー獲得回数22007/11/11 04:48:44

ポイント27pt

とりあえず①、私もあんまり詳しくないのですが、

xxx=xxx+1がいらないと思いますよ。

Next xxxで、xxxは1加算されます。

id:taroemon

ご回答ありがとうございます。

うまくいきました。

引き続き質問②についてのご回答をお待ちしています。

2007/11/11 05:19:45
id:ardarim No.2

ardarim回答回数892ベストアンサー獲得回数1422007/11/11 19:51:11

ポイント40pt

質問②についてですが、スマートなやり方はありません。


代替案としては、イミディエイトウィンドウで直接命令文を入力して実行できますので、例えば3行目をコピーして、イミディエイトウィンドウに貼り付けてEnterキーを押せば、その内容が実行できます。

イミディエイトウィンドウが表示されていない場合は、[表示]-[イミディエイトウィンドウ]で表示できます。


あとは、5~8行目だけを別のサブルーチンにして切り出すと言った方法があります。


最後にあまりきれいなやり方ではないですが、どうしても、と言う場合は、そのマクロ(Sub)内にカーソルがある状態で

(1)[デバッグ]-[ステップイン]を実行(F8キーでもok)。Subの先頭で実行が一時停止します。

(2)5行目にカーソルを持っていき、[デバッグ]-[次のステートメントの設定]を実行。すると実行箇所(黄色いライン)が5行目に移動します。

(3)[デバッグ]-[ステップオーバー]を実行(Shift+F8でもok)。5行目だけが実行され、6行目に実行箇所が移動します。

(4)8行目まで、(3)ステップオーバーの操作を繰り返します。

(5)9行目で実行を止めるときは、[実行]-[リセット]を押します。

id:taroemon

丁寧なご回答ありがとうございます。

自分は独学で学習中の初心者だったので、

簡単にできるものだと思ってたのですが、そうではないのですね。

大変参考になりました。

教えていただいた方法を試してみます。

2007/11/13 03:27:52
id:whitecat77 No.3

whitecat77回答回数32ベストアンサー獲得回数22007/11/12 23:23:59

ポイント13pt

特定のセルに、開始行と終了行を指定する方法ではいかがでしょうか。

たとえば、A1を開始行、A2を終了行として、

3行目を実行したい場合、A1 に3  A2に3 を入れます。

3-8行目を実行したい場合、A1 に3  A2に8 を入れます。

で、そのセルを読み込んで実行するマクロを書いてみます。

Sub test()


Dim xxx As Integer

Dim from_num As Integer

Dim to_num As Integer


from_num = Cells(1, 1)

to_num = Cells(1, 2)

If from_num > 0 And to_num > 0 Then

For xxx = from_num To to_num

If Cells(xxx, 5).Value <> "" Then

Cells(xxx, 5).Cut Destination:=Cells(xxx, 15)

End If

Next xxx

End If


End Sub

id:taroemon

ご回答ありがとうございます。

質問を読み間違えられたのかもしれませんね。

僕が望んでいたものではなさそうです。

2007/11/13 03:30:06

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません