Excel VBA質問箱 IV

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

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


11224 / 13644 ツリー ←次へ | 前へ→

【17282】セルに取得した文字列を入力するには りんりん 04/8/26(木) 14:16 質問[未読]
【17289】Re:セルに取得した文字列を入力するには Jaka 04/8/26(木) 15:10 発言[未読]
【17296】Re:セルに取得した文字列を入力するには Jaka 04/8/26(木) 15:52 回答[未読]
【17297】Re:セルに取得した文字列を入力するには りんりん 04/8/26(木) 16:00 回答[未読]
【17299】Re:セルに取得した文字列を入力するには Asaki 04/8/26(木) 16:04 発言[未読]
【17302】Re:セルに取得した文字列を入力するには Jaka 04/8/26(木) 16:25 回答[未読]
【17351】Re:セルに取得した文字列を入力するには りんりん 04/8/27(金) 14:16 お礼[未読]

【17282】セルに取得した文字列を入力するには
質問  りんりん  - 04/8/26(木) 14:16 -

引用なし
パスワード
   こんにちは。
以前この質問箱で質問して、下記のコードを使って、文字列を取得して
セルに入力するという方法を教えていただいたのですが、今までは
正常に使えていたコードが突然正常に働かなくなりました。
H列にCK30、CK50、CK70という文字を入力するためのコードなのですが、
下記のように一部だけH列が”0”を表示してしまうようになったのです。
元データは以前と変わらない様式なのですが、”0”と表示されてしまう
理由がどうしてもわかりません。
どこが悪いのか、もしくは疑わしい点があれば、教えていただきたいです。
よろしくお願いします。


-------------------------------------------------------------------------

Sub 部門コードの入力()

Dim r As Long, N As Long
Dim acs As String, mj As String

acs = ActiveWorkbook.ActiveSheet.Name
N = Sheets(acs).Range("C" & Rows.Count).End(xlUp).Row

i = 0

For r = 1 To N
If Cells(r, 3).Value Like "*CK*" = True Then
mj = Cells(r, 3).Text

Cells(r + 2, 8) = Right(mj, 3) & "0"
Cells(r + 2, 3).Offset(1).Select

Do While Cells(r + 1, 3).Offset(1 + i) <> ""
  Cells(r + 1, 8).Offset(1 + i) = Right(mj, 3) & "0"
  i = i + 1
  Loop
  i = 0
  
End If

Next r

End Sub

-----------------------------------------------------------------------
上のコードを使って作る表は下のような表です。
H列は元々は空欄で、何も入っていません。
このH列にC列のCK3や、CK5、CK7という文字と、”0”を組み合わせた
文字を入力するというコードです。
この表の行数は不特定で、間に空欄を含みます。


 A    B    C     D     E    F    G      H
        〈 CK3     0 〉
区分1 区分2   品番  仕入先  単価  数量   金額
     OLD   HPS0001  7005  0.01  1000   10    CK30
     OLD   HSJ0002  6005  0.02  2000   40    CK30
     OLD   HGC0001  7005  0.01  1000   10      0
     OLD   HGC0002  6005  0.02  2000   40      0

        〈 CK5     0 〉
    OLD   HPS0001  7005  0.01  1000    10    CK50
    OLD   HSJ0002  6005  0.02  2000    40    CK50

        〈 CK7     0 〉
     OLD   HPS0001  7005  0.01  1000   10    CK70
     OLD   HSJ0002  6005  0.02  2000   40    CK70

--------------------------------------------------------------------------

以上のような内容ですが、理解できますでしょうか?
宜しくお願いします。

【17289】Re:セルに取得した文字列を入力するには
発言  Jaka  - 04/8/26(木) 15:10 -

引用なし
パスワード
   >以前この質問箱で質問して、下記のコードを使って、文字列を取得して
リンク先もつけてくれた方がいいんですけど...。

こんにちは。
まず、
        〈 CK3     0 〉
        〈 CK5     0 〉

        〈 CK7     0 〉
この類が、きちんと別々のセルに分類されているのでしょうか?
C列にCK×のたぐいだけ入っていますか?

また、
1行目から3行目までは、こんな感じになっているいていいのでしょうか?
2行目が明細??

        〈 CK3     0 〉
区分1 区分2   品番  仕入先  単価  数量   金額
     OLD   HPS0001  7005  0.01  1000   10    CK30

因みに、こっちの方には明細が無いんですけど....。
明細が無いのに明細があるのと同じパターンで、繰り返すのはまずいと思いますけど...。

        〈 CK5     0 〉
    OLD   HPS0001  7005  0.01  1000    10    CK50
    OLD   HSJ0002  6005  0.02  2000    40    CK50

        〈 CK7     0 〉
    OLD   HPS0001  7005  0.01  1000   10    CK70
     OLD   HSJ0002  6005  0.02  2000   40    CK70

【17296】Re:セルに取得した文字列を入力するには
回答  Jaka  - 04/8/26(木) 15:52 -

引用なし
パスワード
   >        〈 CK3     0 〉
>区分1 区分2   品番  仕入先  単価  数量   金額
  ↑ここを上下入れ替えて、
区分1 区分2   品番  仕入先  単価  数量   金額
        〈 CK3     0 〉

>Do While Cells(r + 1, 3).Offset(1 + i) <> ""
>  Cells(r + 1, 8).Offset(1 + i) = Right(mj, 3) & "0"
   ↓
Do While Cells(r + 1, 3).Offset(i) <> ""
  Cells(r + 1, 8).Offset(i) = Right(mj, 3) & "0"

これでいいと思いますけど。

【17297】Re:セルに取得した文字列を入力するには
回答  りんりん  - 04/8/26(木) 16:00 -

引用なし
パスワード
   >リンク先もつけてくれた方がいいんですけど...。

リンク先とは?このファイルはリンクはしてないんですけど…。

>こんにちは。
>まず、
>        〈 CK3     0 〉
>        〈 CK5     0 〉
>
>        〈 CK7     0 〉
>この類が、きちんと別々のセルに分類されているのでしょうか?
>C列にCK×のたぐいだけ入っていますか?

はい。ちゃんと別々のセルに入っています。
C列には、"品番"という文字と、"HPS0001"等の文字列と"< CK3 ”以外は
入っていません。

>また、
>1行目から3行目までは、こんな感じになっているいていいのでしょうか?
>2行目が明細??
>
>        〈 CK3     0 〉
>区分1 区分2   品番  仕入先  単価  数量   金額
>     OLD   HPS0001  7005  0.01  1000   10    CK30

そうです。テキストファイルをエクセルに落としたものなので、
ちょっと内容の表示の仕方が変ですが、2行目が明細になっています。

                
>因みに、こっちの方には明細が無いんですけど....。
>明細が無いのに明細があるのと同じパターンで、繰り返すのはまずいと思いますけど...。
>
>        〈 CK5     0 〉
>    OLD   HPS0001  7005  0.01  1000    10    CK50
>    OLD   HSJ0002  6005  0.02  2000    40    CK50
>
>        〈 CK7     0 〉
>     OLD   HPS0001  7005  0.01  1000   10    CK70
>     OLD   HSJ0002  6005  0.02  2000   40    CK70

すいません(>_<)
書くのを忘れてました。
上のパターンと同じく、下のやつにも2行目に明細が入っています。
こんな感じです。

        〈 CK5     0 〉
区分1 区分2   品番  仕入先  単価  数量   金額
    OLD   HPS0001  7005  0.01  1000    10    CK50
    OLD   HSJ0002  6005  0.02  2000    40    CK50

        〈 CK7     0 〉
区分1 区分2   品番  仕入先  単価  数量   金額
    OLD   HPS0001  7005  0.01  1000   10    CK70
     OLD   HSJ0002  6005  0.02  2000   40    CK70

【17299】Re:セルに取得した文字列を入力するには
発言  Asaki  - 04/8/26(木) 16:04 -

引用なし
パスワード
   こんにちは。

>>リンク先もつけてくれた方がいいんですけど...。
>リンク先とは?このファイルはリンクはしてないんですけど…。
以前に質問されたのであれば、そのスレッドのURLを提示してください、ってことです。

【17302】Re:セルに取得した文字列を入力するには
回答  Jaka  - 04/8/26(木) 16:25 -

引用なし
パスワード
   i = 2 'この i = 0 が離れていたから、気づきにくかったんじゃないのかな?
Do While Cells(r + 1, 3).Offset(i) <> ""
  Cells(r + 1, 8).Offset(i) = Right(mj, 3) & "0"
  i = i + 1
Loop

【17351】Re:セルに取得した文字列を入力するには
お礼  りんりん  - 04/8/27(金) 14:16 -

引用なし
パスワード
   Jakaさんアドバイスありがとうございました。
いろいろ考えていただいたのですが、
その後、C列にCK30、CK50、CK70以外にも
"CK"という文字列が入っていたことが
わかり、それがマクロが正確に働かなかった
原因だったことがわかりました。

お手数をおかけして、申し訳ありませんでした。
ありがとうございました。

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