🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

解決済

1回答

2133閲覧

エクセルA列に縦に入力したデータを上下反転させて表示するマクロができません

trialx

総合スコア5

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

0クリップ

投稿2019/12/21 04:05

前提・実現したいこと

 エクセルの列に縦に入力したデータを、上下反転させて表示換えするマクロを作りましたが、うまく動きません。
マクロ初心者なので、変数の宣言や配列など難しいものは使わずにコードを書いています。
最初のうちは書き換えるのですが、6行目からは当初のデータを読み込むだけで、書き換えません。
ステップ実行してみても、6行目からはカウンタ変数iは1づつ減っていくのに、cells(i,1)の数値は増えていきます。
一体どこに問題があるのでしょうか。

 

現行   目標    結果
A      A     A
1      10     10
2      9      9
3      8      8
4      7      7
5      6      6
6      5      6
7      4      7
8      3      8
9      2      9
10      1     10

コード
Sub Macro1()
'

Cells(1, 1).Select

For i = 1 To 10
a = Cells(i, 1)
Next i

j = 1
For i = 10 To 1 Step -1
Cells(j, 1) = Cells(i, 1)
j = j + 1
Next i

End Sub

 エクセルの列に、縦に入力したデータを、上下反転させて表示するマクロを作りましたが、うまく動きません。
マクロ初心者なので、変数の宣言や配列など難しいものは使わずにコードを書いています。
最初のうちは書き換えるのですが、6行目から当初のデータを読み込むだけで、書き換えません。
ステップ実行してみても、6行目からはカウンタ変数iは1づつ減っていくのに、cells(i,1)の数値は増えていきます。
一体どこに問題があるのでしょうか。

現行   目標    結果
A      A     A
1      10     10
2      9      9
3      8      8
4      7      7
5      6      6
6      5      6
7      4      7
8      3      8
9      2      9
10      1     10

コード
Sub Macro1()
'

Cells(1, 1).Select

For i = 1 To 10
a = Cells(i, 1)
Next i

j = 1
For i = 10 To 1 Step -1
Cells(j, 1) = Cells(i, 1)
j = j + 1
Next i

End Sub

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
(例)PHP(CakePHP)で●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

ソースコード

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
(例)PHP(CakePHP)で●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

ソースコード

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
(例)PHP(CakePHP)で●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

ソースコード

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ステップ実行してみても、6行目からはカウンタ変数iは1づつ減っていくのに、cells(i,1)の数値は増えていきます。

一体どこに問題があるのでしょうか。

ステップ実行というのは知っていますか。
想定通りの動作にならない場合は、ステップ実行で一つずつ確認していくと原因が分かります。

最も基本的なステップ実行 - Excel VBA

今回の場合は、
6行目に代入するとき、1~5行目はすでに10~6書き換えられているで、その書き換えられた値が代入さている、ということが原因ですね。

対策としては、別の場所にコピーしてからそれを元の列に代入していくコードに書き換えるか、
配列に格納してそれを列に代入していくコードにするといいでしょう。

ちなみにSortメソッドで一発で並べ替えできますが、勉強にためにコードを書いているのですよね。

投稿2019/12/21 05:50

hatena19

総合スコア34073

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

trialx

2019/12/21 07:27

hatena19さん 回答ありがとうございます。 ステップ実行の見方を間違えていました。 参考サイトまで教えていただいて、スッキリ解決できました。 今度はSORTメソッドに挑戦してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問