dポイントプレゼントキャンペーン実施中!

応用が効かなくて申し訳ありません。
1798323で素敵なご回答をいただいたのですが、
状況が進展して変わってくるとVBAの書き換えがわからなくなりました。もう一度教えてください。

※変更点は、入力元がAI列、『入力先をQ~V列に限定』したい点です。

  Q    R    S    T   U V・・ AI
1 田中 鈴木 佐藤          山田
2 鈴木 山田              海岡
3 田中 佐藤              佐藤

というような表があり、T1に「山田」、S2「海岡」と、その行に関してAI列に新規の名前が入力されたときに自動入力することをVBAでどのように書けばよいのか、ご教授お願いいたします。
尚、3行目には「佐藤」さんがすでいるので入力不要です。
よろしくお願いします。

A 回答 (13件中11~13件)

こんにちは~



Q列からV列がすべてうまっている状態で、AI列に別の名前を入力した場合はどうするのでしょうか?
それは考慮しなくてもよければ、以下のコードを試してみてください。

該当シートのシート見出しを右クリックして 「コードの表示」

'------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer

With Target
If .Column <> 35 Or .Row < 5 Then Exit Sub
If .Count > 1 Then Exit Sub
If .Value = "" Then Exit Sub

Application.EnableEvents = False
For i = 17 To 22
If Cells(.Row, i).Value = .Value Then
Exit For

Else
If Cells(.Row, i).Value = "" Then
Cells(.Row, i).Value = .Value
Exit For
End If
End If
Next i
Application.EnableEvents = True
End With

End Sub
'-----------------------------------------------------------

No.1さんのだと、Q列からV列に何も入力されていないような場合うまくいかないと思います。
あと、重複チェックもちょっとちがうような‥
かんちがいでしたらゴメンナサイ。

この回答への補足

shiotan99さん、ありがとうございました。完璧です。
Q~Vの6件を越えることはないと仕事で使う現場からの要望でしたが、増やしたいとき、たとえば、z列まで拡張したいときは、8行目の「For i = 17 To 22」をさわればいいのですね?

もうひとつ、追加質問事項をお世話いただけるでしょうか?入力元をAIだけでなく、ほかにもいくつか設定したいのです。たとえばAI,AQ,AY・・・といくつか入力元を持ちたいのです。入力先はQ~Vで変更ありません。よろしくご指導お願いいたします。楽しみにお待ち申し上げています。

補足日時:2005/11/24 18:55
    • good
    • 0

kamejiroさんの応用ということなら


それぞれの入力位置を検討といううことになるかと
Sub テスト2()

i = 1
Do Until Cells(i, 35) = ""
j = 17
flg = ""
Do Until flg = "END"
If j = 22 Then
flg = "END"
End If
If Cells(i, j) = Cells(i, 35) Then
flg = "END"
End If
If Cells(i, j) = "" Then
Cells(i, j) = Cells(i, 35)
flg = "END"
End If
j = j + 1
Loop
i = i + 1
Loop
End Sub

それにしてもkamejiroさん、最初からこのような変更もありうるとを想定してのコードなのかすばらしいな~ ('-'*)
 VBA勉強中の onntaoでした

この回答への補足

ありがとうございます^^。できました。
しかしながら、1行目に見出し、2行目からデータ入力というケースなら可能なようですが、
今回設定しているシートは、1行目~4行目に見出しや空白にあけておきたいのです。5行目から入力したい場合、このマクロを実行したときにうまくいかないみたいです。引き続きご指導いただけますでしょうか?

補足日時:2005/11/24 16:50
    • good
    • 0
この回答へのお礼

onntaoさん、ありがとうございました。大変参考になりました。入力元の1行目~4行目に何か文字がはいっておれば、5行目からの入力が可能であることは確認できました。kamejiroさんからもご回答いただいて尚、補足質問をお願いしています。ご回答、心より感謝いたします。当初ポイント対象だったのですが、その後、多数の方のご回答をいただいた関係で、今回はごめんなさい。m(_ _)m

お礼日時:2005/11/25 11:09

こんにちは。



こんなものでよいと思います。
イベント・ドリブン型のマクロですから、使い方は、単に、AI列に入力するだけです。

'シートタブから、コードの表示で以下を貼り付けます。
'---------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
  With Target
  '35列 =AI列
  If .Column <> 35 Then Exit Sub
  If .Count > 1 Then Exit Sub '複数のセルの場合のEnter除外
  '17 =Q列より前か 22= V列より後は除外
  If (.End(xlToLeft).Column < 17 Or .End(xlToLeft).Column >= 22) Then Exit Sub
   If .End(xlToLeft).Value <> .Value Then
     Application.EnableEvents = False
     .End(xlToLeft).Offset(, 1).Value = .Value
     Application.EnableEvents = True
   End If
  End With
End Sub

'---------------------------------------------------
.

この回答への補足

Wendy02さん、こんにちは。いつもありがとうございます。
以前にもご指導いただきました。

シートタプを右クリックしてコード表示で貼りつけてみました。

1行目で試してみると、うまくいきましたが、2行目以下がなかうまくできませんでした。私の理解不足の為だとは思います。尚、引き続きご指導お願いいたします。よろしくお願いいたします。

補足日時:2005/11/24 17:14
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!