Excel VBA質問箱 IV

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

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


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

【33742】条件によってセルの連結を変えたいのです... さちきょん 06/1/19(木) 19:31 質問[未読]
【33743】Re:条件によってセルの連結を変えたいので... Statis 06/1/19(木) 19:43 発言[未読]
【33745】Re:条件によってセルの連結を変えたいので... さちきょん 06/1/19(木) 20:12 発言[未読]
【33747】Re:条件によってセルの連結を変えたいので... さちきょん 06/1/19(木) 20:29 発言[未読]
【33749】Re:条件によってセルの連結を変えたいので... Statis 06/1/19(木) 21:15 回答[未読]
【33750】Re:条件によってセルの連結を変えたいので... Statis 06/1/19(木) 21:24 発言[未読]
【33752】Re:条件によってセルの連結を変えたいので... さちきょん 06/1/19(木) 21:30 発言[未読]
【33754】Re:条件によってセルの連結を変えたいので... さちきょん 06/1/19(木) 21:44 発言[未読]
【33755】Re:条件によってセルの連結を変えたいので... こたつねこ 06/1/19(木) 21:46 回答[未読]
【33757】Re:条件によってセルの連結を変えたいので... さちきょん 06/1/19(木) 21:57 発言[未読]
【33758】Re:条件によってセルの連結を変えたいので... こたつねこ 06/1/19(木) 22:03 回答[未読]
【33759】Re:条件によってセルの連結を変えたいので... さちきょん 06/1/19(木) 22:14 発言[未読]
【33760】Re:条件によってセルの連結を変えたいので... こたつねこ 06/1/19(木) 22:28 発言[未読]
【33763】Re:条件によってセルの連結を変えたいので... さちきょん 06/1/19(木) 22:51 お礼[未読]

【33742】条件によってセルの連結を変えたいのです...
質問  さちきょん  - 06/1/19(木) 19:31 -

引用なし
パスワード
   マクロ超初心者です。
本とネットで調べながら、作ってみたのですが、
行が変わっても、繰り返し処理ができません。

g = Range("G8")のように指定してしまっているからだと
思うのですが、どうやったら繰り返しになるのか
わかりません。
また、各数値が0の場合は、数値の前後の"S/" ","も
表示したくないのですが、できますか?

どうぞよろしくお願いいたします。


Sub セル統合()

g = Range("G8")
i = Range("I8")
k = Range("K8")
m = Range("M8")
o = Range("O8")
q = Range("Q8")
s = Range("S8")
u = Range("U8")

For v = 8 To 77

t = Cells(v, 5)


If t = "A" Then
Cells(v, 24) = "S/" & g & "," & "M/" & i & "," & "L/" & k & "," & "O/" & m & "," & "XO/" & o & ","


Else
If t = "B" Then
Cells(v, 24) = "M/" & i & "," & "L/" & k & "," & "O/" & m & ","
Else
If t = "C" Then
Cells(v, 24) = "フリー/"&q
Else
If t = "D" Then
Cells(v, 24) = "25-27cm/"&s
Else
If t = "E" Then
Cells(v, 24) = "サイズなし/"&u
Else
If t = "F" Then
Cells(v, 24) = "S/" & g & "," & "M/" & i & "," & "L/" & k & "," & "O/" & m & ","

End If
End If
End If
End If
End If
End If

Next v

End Sub

【33743】Re:条件によってセルの連結を変えたいの...
発言  Statis  - 06/1/19(木) 19:43 -

引用なし
パスワード
   こんばんは

良くわかりません?

>行が変わっても、
どこの所ですか?
>繰り返し処理ができません。
何を繰り返したいのでしょうか?
>また、各数値が0の場合は、数値の前後の"S/" ","も
>表示したくないのですが、できますか?
各数値で何ですか?

どのようなデータをどのようにしたいのでしょうか?

【33745】Re:条件によってセルの連結を変えたいの...
発言  さちきょん  - 06/1/19(木) 20:12 -

引用なし
パスワード
   Statisさんへ

お返事ありがとうございました。
在庫管理の表を作成しています。

サイズの規格の種類がいくつかあるので、
S,M,L,O,XOサイズの場合→A
M-L,O-XO,LOサイズの場合→B
のようにして、AからFまでカテゴリーを分けました。
カテゴリーごとに、連結するセルが違うのです。

連結して、
S/在庫数,M/在庫数,L/在庫数,O/在庫数,XO/在庫数
のように表示したいと思います。

繰り返しができないというのは、開始した行には
きちんと連結して表示できているのに、2行目は
1行目と同じ内容が表示され、3行目以降は連結
できずに空白のままです。
(8行目から77行目まで処理を繰り返したいのです)

 For v = 8 To 77
  
 with

を使ったつもりなのですが、おかしいでしょうか?


>>また、各数値が0の場合は、数値の前後の"S/" ","も
>>表示したくないのですが、できますか?
>各数値で何ですか?

セルを連結する際に、そのセルの値が0の場合
(例えば、Sサイズの在庫がない場合)
は、S/在庫数,を表示せずに

M/在庫数,L/在庫数,O/在庫数,XO/在庫数

とのみ表示させたいのです。

ややこしくてすみません。
どうぞよろしくお願いいたします。


▼Statis さん:
>こんばんは
>
>良くわかりません?
>
>>行が変わっても、
>どこの所ですか?
>>繰り返し処理ができません。
>何を繰り返したいのでしょうか?
>>また、各数値が0の場合は、数値の前後の"S/" ","も
>>表示したくないのですが、できますか?
>各数値で何ですか?
>
>どのようなデータをどのようにしたいのでしょうか?

【33747】Re:条件によってセルの連結を変えたいの...
発言  さちきょん  - 06/1/19(木) 20:29 -

引用なし
パスワード
   下のように変えたら、繰り返しができました!

g = Cells(v, 7)
i = Cells(v, 9)
k = Cells(v, 11)
m = Cells(v, 13)
o = Cells(v, 15)
q = Cells(v, 17)
s = Cells(v, 19)
u = Cells(v, 21)

在庫数0の場合の表示について、教えてください。
よろしくお願いいたします。


>>>また、各数値が0の場合は、数値の前後の"S/" ","も
>>>表示したくないのですが、できますか?
>>各数値で何ですか?
>
>セルを連結する際に、そのセルの値が0の場合
>(例えば、Sサイズの在庫がない場合)
>は、S/在庫数,を表示せずに
>
>M/在庫数,L/在庫数,O/在庫数,XO/在庫数
>
>とのみ表示させたいのです。
>
>ややこしくてすみません。
>どうぞよろしくお願いいたします。
>
>
>▼Statis さん:
>>こんばんは
>>
>>良くわかりません?
>>
>>>行が変わっても、
>>どこの所ですか?
>>>繰り返し処理ができません。
>>何を繰り返したいのでしょうか?
>>>また、各数値が0の場合は、数値の前後の"S/" ","も
>>>表示したくないのですが、できますか?
>>各数値で何ですか?
>>
>>どのようなデータをどのようにしたいのでしょうか?

【33749】Re:条件によってセルの連結を変えたいの...
回答  Statis  - 06/1/19(木) 21:15 -

引用なし
パスワード
   こんばんは

一度、試してみてください。
(べた書きですが)

Sub セル統合()
Dim i As Long, Ch As Boolean, Sp, Sp1, dd, Da As String, Da1 As String
Dim g As Long, w As Long, k As Long, m As Long, o As Long, q As Long
Dim s As Long, u As Long, Co As Long, ii As Long

For i = 8 To 77
  Ch = True
  g = Cells(i, 7).Value
  w = Cells(i, 10).Value
  k = Cells(i, 11).Value
  m = Cells(i, 13).Value
  o = Cells(i, 15).Value
  q = Cells(i, 17).Value
  s = Cells(i, 19).Value
  u = Cells(i, 21).Value
  Select Case Cells(i, 5).Value
      Case "A"
        Da = "S/_,_M/_,_L/_,_O/_,_XO/_,"
        Da1 = g & "_" & w & "_" & k & "_" & m & "_" & o
      Case "B"
        Da = "M/_,_L/_,_O/_,"
        Da1 = w & "_" & k & "_" & m
      Case "C"
        Da = "フリー/"
        Da1 = q
        Ch = False
      Case "D"
        Da = "25-27cm/"
        Da1 = s
        Ch = False
      Case "E"
        Da = "サイズなし/"
        Da1 = u
        Ch = False
      Case "F"
        Da = "S/_,_M/_,_L/_,_O/_,"
        Da1 = g & "_" & w & "_" & k & "_" & m
  End Select
  If Ch = False Then
    If Da1 <> 0 Then
      Cells(i, 24) = Da & Da1
    End If
  Else
    Sp = Split(Da, "_")
    Sp1 = Split(Da1, "_")
    Co = 0
    For ii = 0 To UBound(Sp1)
      If Sp1(ii) <> "0" Then
       dd = dd & Sp(ii + Co) & Sp1(ii) & Sp(ii + Co + 1)
       Co = Co + 1
      End If
    Next ii
    Cells(i, 24) = dd
  End If
  Erase Sp: Erase Sp1: Da = "": Da1 = "": dd = ""
Next i

End Sub

【33750】Re:条件によってセルの連結を変えたいの...
発言  Statis  - 06/1/19(木) 21:24 -

引用なし
パスワード
   こんばんは
一部訂正です。

>w = Cells(i, 10).Value
w = Cells(i, 9).Value

【33752】Re:条件によってセルの連結を変えたいの...
発言  さちきょん  - 06/1/19(木) 21:30 -

引用なし
パスワード
   すごいです!!!!
お忙しいのにすみません。

今、試してみましたが、「IFブロックに対応する END IFが
ありません」となりました。
END IFがひとつ足りないのかと思って足したら、
違うエラーがでました。

どこが違うのでしょうか?


▼Statis さん:
>こんばんは
>一部訂正です。
>
>>w = Cells(i, 10).Value
>w = Cells(i, 9).Value

【33754】Re:条件によってセルの連結を変えたいの...
発言  さちきょん  - 06/1/19(木) 21:44 -

引用なし
パスワード
   END IFのエラーは大丈夫でした。
すみません。
でも、実行時エラー 型が一致しませんというエラーです。

【33755】Re:条件によってセルの連結を変えたいの...
回答  こたつねこ  - 06/1/19(木) 21:46 -

引用なし
パスワード
   ▼さちきょん さん:
みなさんこんばんは
わたしもひとつ・・・こんなものをつくてみました。
良ければお試しを

Sub セル統合()
Dim v As Integer
Dim Size_S As String
Dim Size_M As String
Dim Size_L As String
Dim Size_O As String
Dim Size_XO As String
Dim Size_FREE As String
Dim Size_25_27 As String
Dim Size_Nothing As String
Dim strTEXT As String
Dim lngEndROW As Long

lngEndROW = Range("E65536").End(xlUp).Row
If lngEndROW < 8 Then Exit Sub
For v = 8 To lngEndROW
  Size_S = IIf(Range("G" & v).Value = "", "", "S/" & Range("G" & v).Value & ",")
  Size_M = IIf(Range("I" & v).Value = "", "", "M/" & Range("I" & v).Value & ",")
  Size_L = IIf(Range("K" & v).Value = "", "", "L/" & Range("K" & v).Value & ",")
  Size_O = IIf(Range("M" & v).Value = "", "", "O/" & Range("M" & v).Value & ",")
  Size_XO = IIf(Range("O" & v).Value = "", "", "XO/" & Range("O" & v).Value & ",")
  Size_FREE = IIf(Range("Q" & v).Value = "", "", "フリー/" & Range("Q" & v).Value & ",")
  Size_25_27 = IIf(Range("S" & v).Value = "", "", "25-27cm/" & Range("S" & v).Value & ",")
  Size_Nothing = IIf(Range("U" & v).Value = "", "", "サイズなし/" & Range("U" & v).Value & ",")

  Select Case Cells(v, 5).Value
    Case "A"
      strTEXT = Size_S & Size_M & Size_L & Size_O & Size_XO
    Case "B"
      strTEXT = Size_M & Size_L & Size_O
    Case "C"
      strTEXT = Size_FREE
    Case "D"
      strTEXT = Size_25_27
    Case "E"
      strTEXT = Size_Nothing
    Case "F"
      strTEXT = Size_S & Size_M & Size_L & Size_O
  End Select
  If strTEXT <> "" Then
    strTEXT = Left(strTEXT, Len(strTEXT) - 1)
    Cells(v, 24).Value = strTEXT
    strTEXT = ""
  End If
Next v
End Sub

【33757】Re:条件によってセルの連結を変えたいの...
発言  さちきょん  - 06/1/19(木) 21:57 -

引用なし
パスワード
   こたつねこさんへ

こんばんは。
本当にありがとうございます!
今、試してみました。
エラーはでなかったのですが、前のプログラムのまま
表示が変わりません。
今、見直しています。私には高度すぎてちょっと難しいです。

頑張ってひとつずつ理解してみます。

【33758】Re:条件によってセルの連結を変えたいの...
回答  こたつねこ  - 06/1/19(木) 22:03 -

引用なし
パスワード
   ▼さちきょん さん:
こんばんは

こちらではWindows2000、Excel2000で動いているのですが^^;
これではどうですか?

Sub セル統合()
Dim v As Integer
Dim i As Integer
Dim strSize(0 To 7) As String
Dim strTEXT As String
Dim lngEndROW As Long

lngEndROW = Range("E65536").End(xlUp).Row
If lngEndROW < 8 Then Exit Sub
For v = 8 To lngEndROW
  For i = 0 To 7
    strSize(i) = IIf(Cells(v, i * 2 + 7).Value = "", "", "S/" & Cells(v, i * 2 + 7).Value & ",")
  Next i
  
  Select Case Cells(v, 5).Value
    Case "A"
      strTEXT = strSize(0) & strSize(1) & strSize(2) & strSize(3) & strSize(4)
    Case "B"
      strTEXT = strSize(1) & strSize(2) & strSize(3)
    Case "C"
      strTEXT = strSize(5)
    Case "D"
      strTEXT = strSize(6)
    Case "E"
      strTEXT = strSize(7)
    Case "F"
      strTEXT = strSize(0) & strSize(1) & strSize(2) & strSize(3)
  End Select
  If strTEXT <> "" Then
    strTEXT = Left(strTEXT, Len(strTEXT) - 1)
    Cells(v, 24).Value = strTEXT
    strTEXT = ""
  End If
Next v
End Sub

【33759】Re:条件によってセルの連結を変えたいの...
発言  さちきょん  - 06/1/19(木) 22:14 -

引用なし
パスワード
   こたつねこさんへ

すごいです!最初のも次のも成功です!!
尊敬してしまいます。ありがとうございました!
最初のほうが理解しやすかったのですが、
次のところの意味を教えていただけませんか?

よろしくお願いいたします。


●lngEndROW = Range("E65536").End(xlUp).Row


● Size_S = IIf(Range("G" & v).Value = "", "", "S/" & Range("G" & v).Value & ",")

 ※これは、IfじゃなくてIIfなんですか?


●If strTEXT <> "" Then
    strTEXT = Left(strTEXT, Len(strTEXT) - 1)
    Cells(v, 24).Value = strTEXT
    strTEXT = ""

【33760】Re:条件によってセルの連結を変えたいの...
発言  こたつねこ  - 06/1/19(木) 22:28 -

引用なし
パスワード
   ▼さちきょん さん:
こんばんは

>すごいです!最初のも次のも成功です!!
動作して何よりです。

>●lngEndROW = Range("E65536").End(xlUp).Row
これは、さちきょんさんが提示されたコードでは77行目まで
ループされていたのですが、77行目まで入力がされていない
場合、無駄な部分が出てきますので、E列で入力されている
最終行の行番号を取得しています。

>● Size_S = IIf(Range("G" & v).Value = "", "", "S/" & Range("G" & v).Value & ",")
>
> ※これは、IfじゃなくてIIfなんですか?
変数に直接条件判断で値を入れたい場合はIIF関数を使用します。

>●If strTEXT <> "" Then
>    strTEXT = Left(strTEXT, Len(strTEXT) - 1)
>    Cells(v, 24).Value = strTEXT
>    strTEXT = ""
ここは、もしもすべての数量が0とかの場合は、セルに値を入れな
いようにしています。

説明が苦手なのでちゃんと伝えられているか、まったく自信があり
ません、Helpを参照してみてくださいね。

【33763】Re:条件によってセルの連結を変えたいの...
お礼  さちきょん  - 06/1/19(木) 22:51 -

引用なし
パスワード
   こたつねこさん、Statisさん

本当にありがとうございました。
お二人ともプログラマーさんなのですかね。
先生になってほしいくらいです。

お忙しいところ、ご丁寧に教えていただき
ありがとうございました。

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