質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

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

マクロ

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

Q&A

解決済

2回答

1448閲覧

シート1に記載されたF列、G列の値を メモ帳にコピペするボタンを作成したいです。

退会済みユーザー

退会済みユーザー

総合スコア0

VBA

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

マクロ

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

0グッド

1クリップ

投稿2019/09/02 00:11

シート1に記載されたF列、G列の値を
メモ帳にコピペするボタンを作成したいです。

現在1列は色々と調べて作成できました。
下記を元に二列をコピペするものを作成していますが、
それがうまくいきません。

コピペの順番は、F1→G1→F2→G2・・・と
上から交互にコピーして同じメモ帳に張り付けていく・・・というVBAを作成したいと思っています。

現在の【▼2列コピーしたいVBAの途中経過】では、【NEXTに対するFORがありません】とエラー文が出てしまいますが、NEXTとFORは一個ずつ一応入っていますので、根本的に何かが違うような気がしています。

お力お借り頂けますと幸いです。

▼1列のコピペは成功しました。

Sub makeText() Dim ws As Worksheet Set ws = ThisWorkbook.Worksheets(1) Dim datFile As String datFile = ActiveWorkbook.Path & "\data.txt" Open datFile For Output As #1 Dim i As Long i = 1 Do While ws.Cells(i, 1).Value <> "" Print #1, ws.Cells(i, 1).Value i = i + 1 Loop Close #1 End Sub

▼2列コピーしたいVBAの途中経過

Sub makeText() Dim ws As Worksheet Set ws = ThisWorkbook.Worksheets("sheet1") Dim datFile As String datFile = ActiveWorkbook.Path & "\PC\data.html" Open datFile For Output As #1 Dim i As Long i = 1 For j = 5 To 6 Do While ws.Cells(i, j).Value <> "" Print #1, ws.Cells(i, j).Value Next i = i + 1 Loop Close #1 End Sub

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

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

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

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

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

meg_

2019/09/02 00:36

ForループとWhileループの組み合わせの書き方が何か変ではないでしょうか?
sage

2019/09/03 10:18

構文上の問題がありますが、その前にまず仕様を明確にしましょう。 従来(1列のみのコピペ)はnullセルが見つかると終了でした。 2列のコピペの場合、F1→G1→F2→G2・・・と書いていますが、そのどこかでnullセルが見つかると終了していいのでしょうか?(G1がnullでF2がnullでない場合にprintを継続すべきか終了すべきか、F2がnullでG2がnullでない場合にprintを継続すべきか終了すべきか) これが決定しないと処理ロジックを決定できません。
guest

回答2

0

ベストアンサー

以下のようにしてください。

VBA

1i = 1 2Do While ws.Cells(i, 5).Value <> "" 3 For j = 5 To 6 4 Print #1, ws.Cells(i, j).Value 5 Next 6 i = i + 1 7Loop

投稿2019/09/02 02:09

tatsu99

総合スコア5438

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

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

0

ループの組み合わせがおかしいです。
Do~For~Next~Loop にならないとダメです。

VBA

1i = 1 2Do While ws.Cells(i, j).Value <> "" 3 For j = 5 To 6 4 Print #1, ws.Cells(i, j).Value 5 Next 6 i = i + 1 7Loop

.

投稿2019/09/02 01:02

編集2019/09/02 01:03
ttyp03

総合スコア16998

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

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

退会済みユーザー

退会済みユーザー

2019/09/02 01:30

ありがとうございます。ただ上記では、アプリケーション定義またはオブジェクト定義のエラーです。となってしまいます。
ttyp03

2019/09/02 02:20

失礼しました。 Do While ws.Cells(i, j).Value <> "" が Do While ws.Cells(i, 5).Value <> "" ですかね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問