Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5152 / 13646 ツリー ←次へ | 前へ→

【52355】余計な文字が出てしまいます ゆばーば 07/11/10(土) 17:50 質問[未読]
【52356】Re:余計な文字が出てしまいます かみちゃん 07/11/10(土) 19:18 発言[未読]
【52358】Re:余計な文字が出てしまいます ゆばーば 07/11/10(土) 21:12 質問[未読]
【52361】Re:余計な文字が出てしまいます かみちゃん 07/11/10(土) 22:00 発言[未読]
【52363】Re:余計な文字が出てしまいます ゆばーば 07/11/10(土) 22:40 お礼[未読]

【52355】余計な文字が出てしまいます
質問  ゆばーば  - 07/11/10(土) 17:50 -

引用なし
パスワード
   Sheet1のリストをSheet2のタックシールに配置する方法を
先日こちらで教えていただき、少し手を加えましたところ、最後のタックシールに余分な文字が出てしまいます。どうすれば出なくなるのか、全然解かりません。
どうかお知恵をお貸し下さい。

Dim lngRow As Long
 Dim lngTuckRow As Long
 Dim cntCT As Integer

 lngTuckRow = 1
 'Sheet1の5行目〜30行目までを処理する場合
 For lngRow = 5 To 30
  Sheets("Sheet2").Range("A" & lngTuckRow).Value = Sheets("Sheet1").Range("A" & lngRow).Value
  Sheets("Sheet2").Range("A" & lngTuckRow).Interior.ColorIndex = 1
  Sheets("Sheet2").Range("A" & lngTuckRow).Font.ColorIndex = 2
  Sheets("Sheet2").Range("A" & lngTuckRow + 1).Value = Sheets("Sheet1").Range("E" & lngRow).Value
  Sheets("Sheet2").Range("A" & lngTuckRow + 2).Value = Sheets("Sheet1").Range("B" & lngRow).Value
  Sheets("Sheet2").Range("A" & lngTuckRow + 3).Value = Sheets("Sheet1").Range("C" & lngRow).Value
  Sheets("Sheet2").Range("A" & lngTuckRow + 4).Value = Sheets("Sheet1").Range("D" & lngRow).Value & " " & Range("F" & lngRow) & "入"

  cntCT = Sheets("Sheet1").Range("G" & lngRow).Value
  If cntCT >= 2 Then
   Sheets("Sheet2").Range("A" & lngTuckRow).Resize(6).Copy Sheets("Sheet2").Range("B" & lngTuckRow)
   If cntCT >= 2 Then
    Sheets("Sheet2").Range("A" & lngTuckRow).Resize(6, 2).Copy _
     Sheets("Sheet2").Range("A" & lngTuckRow).Resize(6 * Int((cntCT + 1) / 2), 2)
   End If
   'C/T数が奇数の場合は、B列の最終行から6行を消去
   If cntCT Mod 2 = 1 Then
    Sheets("Sheet2").Range("B" & lngTuckRow).Offset(6 * Int(cntCT / 2)).Resize(6).ClearContents
   End If
  End If
  lngTuckRow = lngTuckRow + 6 * (Int((cntCT + 1) / 2))
 Next
 Sheet2.Select
 
End Sub

【52356】Re:余計な文字が出てしまいます
発言  かみちゃん E-MAIL  - 07/11/10(土) 19:18 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>Sheet1のリストをSheet2のタックシールに配置する方法を
>先日こちらで教えていただき、少し手を加えましたところ、最後のタックシール
>に余分な文字が出てしまいます。

[52250]のご質問のことかと思いますが、
元々提示させていただたコードでは、きちんと処理されますか?
それであれば、どこに手を加えたか説明できませんか?

【52358】Re:余計な文字が出てしまいます
質問  ゆばーば  - 07/11/10(土) 21:12 -

引用なし
パスワード
   かみちゃんさん

 先日は大変お世話になりました。
手を加えたと言えば、D列とF列を一緒のセルに入れた末尾に「入」と文字を入れましたね・・そのDとFの間にスペースを入れました。
それから、一番上の品番を白抜きにしたんです。
そうしましたら、必要数コピーされたタックシールの次のシールのA列が黒くなって、5行目に「入」と言う文字が出てしまうのです。
今、仕事で大活躍している物なので、次のページにまたがっていれば印刷しないように気をつけて使っております。ただ、急いでいたりうっかりしてタックシールを無駄にしたくないので。

【52361】Re:余計な文字が出てしまいます
発言  かみちゃん  - 07/11/10(土) 22:00 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>それから、一番上の品番を白抜きにしたんです。
>そうしましたら、必要数コピーされたタックシールの次のシールのA列が黒くなっ
>て、5行目に「入」と言う文字が出てしまうのです。

原因がわかりました。
 For lngRow = 5 To 30
というコードにしていますが、
5行目から30行目まですべてデータが入っていれば、問題ないのですが、
たとえば、10行目くらいまでしかデータが入っていない場合は、この事象になります。

30という部分をデータの最終行までとする場合には、以下のようなコードに修正してください。
 '〜省略〜
 Dim cntCT As Integer
 Dim lngLastRow As Long

 lngTuckRow = 1
 'Sheet1の5行目〜A列の最終行までを処理する場合
 lngLastRow = Sheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row
 For lngRow = 5 To lngLastRow
 '〜省略〜

【52363】Re:余計な文字が出てしまいます
お礼  ゆばーば  - 07/11/10(土) 22:40 -

引用なし
パスワード
   かみちゃんさん

 本当〜に素晴らしいです!
又々完璧です。
重ね重ねありがとうございます!!
少し時間がかかるようにはなりましたけど、問題ないです。
又何かありましたら、是非ご教授下さい。
今日もぐっすり眠れます。

5152 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free