• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:マクロでの別シートへの書き出しについて)

マクロでの別シートへの書き出しについて

このQ&Aのポイント
  • マクロを使用してSheet1のA1に入力された長いコードから特定の文字列を切り取り、別のシートに書き出す方法について説明します。
  • 具体的には、Sheet1のA1に入力されたコードから先頭の18文字を除き、取得した文字列の先頭から1文字飛ばした16文字をSheet2のA1に書き出し、その続きの16文字をSheet2のB1に書き出します。
  • また、Sheet2のA2には、先ほど書き出した文字列の次の16文字を書き出し、Sheet2のB2にはその続きの16文字を書き出します。

質問者が選んだベストアンサー

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

No.1です。 補足欄について。 つまり、(1)と(2)を、A1の文字数に応じて繰り返すということでしょうか。 それなら、こんな感じかな。 Dim strCode As String Dim i As Long strCode = Worksheets("Sheet1").Range("A1").Value i = 1 Do Until (i - 1) * 52 >= Len(strCode)   With Worksheets("Sheet2")     .Cells(i, 1).Value = Mid(strCode, 20 + (i - 1) * 33, 16)     .Cells(i, 2).Value = Mid(strCode, 36 + (i - 1) * 33, 16)   End With   i = i + 1 Loop

jinah
質問者

お礼

ありがとうございます。 Do Until (i - 1) * 52 >= Len(strCode) の部分がなかなかできず、困っていましたが解決しました!

その他の回答 (1)

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 Mid関数を使用すればいいのでは? Dim strCode As String strCode = Worksheets("Sheet1").Range("A1").Value With Worksheets("Sheet2")   .Range("A1").Value = Mid(strCode, 20, 16)   .Range("B1").Value = Mid(strCode, 36, 16)   .Range("A2").Value = Mid(strCode, 53, 16)   .Range("B2").Value = Mid(strCode, 69, 16) End With

jinah
質問者

補足

回答ありがとうございます。 関数で同じように作成していたのですが、Sheet1のA1に入るコードの文字数が果てしない数なので、VBAでループ出来たらなと思いまして質問しました。A1のコードの文字数を出して、ループするにはどうしたら良いのでしょうか? 説明が足らずすいませんでした

関連するQ&A

専門家に質問してみよう