過去ログ

                                Page     668
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼条件にあったセルに自動入力  hana 03/1/30(木) 18:08
   ┗Re:条件にあったセルに自動入力  ポンタ 03/1/31(金) 12:49
      ┗Re:条件にあったセルに自動入力  hana 03/1/31(金) 18:09
         ┗Re:条件にあったセルに自動入力  ポンタ 03/1/31(金) 22:27
            ┗Re:条件にあったセルに自動入力  ポンタ 03/1/31(金) 22:36
               ┗Re:条件にあったセルに自動入力・続  hana 03/2/1(土) 23:48
                  ┗Re:条件にあったセルに自動入力・続  ポンタ 03/2/2(日) 14:24
                     ┗Re:条件にあったセルに自動入力・続  hana 03/2/2(日) 22:06
                        ┗Re:条件にあったセルに自動入力・続  ポンタ 03/2/3(月) 14:08
                           ┗Re:条件にあったセルに自動入力・続  hana 03/2/3(月) 21:02
                              ┗Re:条件にあったセルに自動入力・続  ポンタ 03/2/3(月) 22:19
                                 ┗Re:条件にあったセルに自動入力・続  hana 03/2/3(月) 23:03
                                    ┗Re:条件にあったセルに自動入力・続  ポンタ 03/2/3(月) 23:25
                                       ┗できました!!  hana 03/2/4(火) 9:41

 ───────────────────────────────────────
 ■題名 : 条件にあったセルに自動入力
 ■名前 : hana
 ■日付 : 03/1/30(木) 18:08
 -------------------------------------------------------------------------
   連続ですみません。下と同じ表にまだ取組んでおります。
いきなり期日が決められてしまったり、内容がかえられ
たりなのでとても困憊しています。お助け下さい・・。

  1   2     3   4     5 ・・・・・
1 日付 コードNO. 店名 コードNO. 店名 ・・
______________________________________________
2   |  鈴   木 |  田   中 | ・
_________________________
3 1/1 | 1111  |A店 | 2222  |B店 |・・
_______________________
 
4 1/2 | 2222  |B店 | 3333  |C店 |・・
 ・
 ・
行に日付・列に人名の表で、コード番号を入力すると店名が
VLOOKUP関数で入る上記の様なシフト表があります。コード
NO.を入力する前に、1.何日に2.誰が3.この店に・・という
風に自動入力できるものでしょうか?1.(行)と2.(列)で
セルの位置を探して3.の店コードを入力、という流れかな?
とか思ったりしましたがそこで思考回路が止まっております。

最終的にはユーザーフォームで選択もしくは入力すると、
表中に自動入力という形にしなければならないのですが・・。
わかりづらくてすみませんが宜しくお願い致します。
 ───────────────────────────────────────  ■題名 : Re:条件にあったセルに自動入力  ■名前 : ポンタ  ■日付 : 03/1/31(金) 12:49  -------------------------------------------------------------------------
   UserForm上にComboBox1、ComboBox2、ComboBox3、CommandButton1を
作ってあげれば簡単にできると思います。

コードとしてはこんな感じです。

Private Sub CommandButton1_Click()
  Dim Mes As String
  Me.Hide
  If ComboBox1.ListIndex = -1 Then
    Mes = "日付を選択してください"
  ElseIf ComboBox2.ListIndex = -1 Then
    Mes = "人名を選択してください"
  ElseIf ComboBox3.ListIndex = -1 Then
    Mes = "店名を選択してください"
  Else
    Mes = ""
  End If
  If Mes <> "" Then
    MsgBox (Mes)
    Me.Show
    Exit Sub
  End If
  Cells(ComboBox1.ListIndex + 3, ComboBox2.ListIndex * 2 + 3).Value = ComboBox3.Value
  
End Sub

Private Sub UserForm_Initialize()
  Dim i As Long
  For i = 3 To Range("A65536").End(xlUp).Row
    Call ComboBox1.AddItem(Format(Cells(i, 1).Value, "M月D日"))
  Next
  For i = 2 To Range("iv2").End(xlToLeft).Column Step 2
    Call ComboBox2.AddItem(Cells(2, i).Value)
  Next
End Sub

ComboBox3 の RowSource プロパティを設定することをお忘れなく。
分からないことがあれば、質問してください。
 ───────────────────────────────────────  ■題名 : Re:条件にあったセルに自動入力  ■名前 : hana  ■日付 : 03/1/31(金) 18:09  -------------------------------------------------------------------------
   ▼ポンタ さん:
>UserForm上にComboBox1、ComboBox2、ComboBox3、CommandButton1を
>作ってあげれば簡単にできると思います。
>
>コードとしてはこんな感じです。
>
>Private Sub CommandButton1_Click()
>  Dim Mes As String
>  Me.Hide
>  If ComboBox1.ListIndex = -1 Then
>    Mes = "日付を選択してください"
>  ElseIf ComboBox2.ListIndex = -1 Then
>    Mes = "人名を選択してください"
>  ElseIf ComboBox3.ListIndex = -1 Then
>    Mes = "店名を選択してください"
>  Else
>    Mes = ""
>  End If
>  If Mes <> "" Then
>    MsgBox (Mes)
>    Me.Show
>    Exit Sub
>  End If
>  Cells(ComboBox1.ListIndex + 3, ComboBox2.ListIndex * 2 + 3).Value = ComboBox3.Value
>  
>End Sub
>
>Private Sub UserForm_Initialize()
>  Dim i As Long
>  For i = 3 To Range("A65536").End(xlUp).Row
>    Call ComboBox1.AddItem(Format(Cells(i, 1).Value, "M月D日"))
>  Next
>  For i = 2 To Range("iv2").End(xlToLeft).Column Step 2
>    Call ComboBox2.AddItem(Cells(2, i).Value)
>  Next
>End Sub
>
>ComboBox3 の RowSource プロパティを設定することをお忘れなく。
>分からないことがあれば、質問してください。

いつもありがとうございます!教えて頂いたコードを元に本を見たり
して調べながら少しかえてみましたがどうにも間違っているみたいです。
combobox3はリストが長いのでテキストボックスにして入力して
もらった数値をそのままセルに入力できたら・・と思いましたので
textboxにしたいのですが・・・。

詳しいシートの状態はF8〜F38に日付、6行目のI6〜BN6に人名、
I8〜BN38Gは2行くくりで左コード・右店名,H列は曜日と日程で
関係ない状態です。

Private Sub UserForm_Initialize()
  
  Dim i As Long
  
  For i = 8 To Range("F65536").End(xlUp).Row
    Call ComboBox1.AddItem(Format(Cells(i, 6).Value, "M月D日"))
  Next
  For i = 9 To Range("iv6").End(xlToLeft).Column Step 2
    Call ComboBox2.AddItem(Cells(6, i).Value)
  Next

Private Sub CommandButton1_Click()

  Dim Mes As String
  Me.Hide
  If ComboBox1.ListIndex = -1 Then
    Mes = "日付を選択してください"
  ElseIf ComboBox2.ListIndex = -1 Then
    Mes = "人名を選択してください"
  ElseIf TextBox = "" Then
    Mes = "店舗コードを入力してください"
  Else
    Mes = ""
  End If
  If Mes <> "" Then
    MsgBox (Mes)
    Me.Show
    Exit Sub
  End If
  Cells(ComboBox1.ListIndex + 8, ComboBox2.ListIndex * 2 + 9).Value = TextBox.Value
 

End Sub

よくわからない中でいじってますので余計おかしくしているかも
しれません。すみません。
 ───────────────────────────────────────  ■題名 : Re:条件にあったセルに自動入力  ■名前 : ポンタ  ■日付 : 03/1/31(金) 22:27  -------------------------------------------------------------------------
   これでどうでしょう?

Private Sub CommandButton1_Click()
  Dim Mes As String
  Me.Hide
  If ComboBox1.ListIndex = -1 Then
    Mes = "日付を選択してください"
  ElseIf ComboBox2.ListIndex = -1 Then
    Mes = "人名を選択してください"
  ElseIf TextBox1.Value = "" Then
    Mes = "店舗コードを入力してください"
  Else
    Mes = ""
  End If
  If Mes <> "" Then
    MsgBox (Mes)
    Me.Show
    Exit Sub
  End If
  Cells(ComboBox1.ListIndex + 8, ComboBox2.ListIndex * 2 + 9).Value = TextBox1.Value
End Sub

Private Sub UserForm_Initialize()
  Dim i As Long
  For i = 8 To Range("F65536").End(xlUp).Row
    Call ComboBox1.AddItem(Format(Cells(i, 6).Value, "M月D日"))
  Next
  For i = 9 To Range("iv6").End(xlToLeft).Column Step 2
    Call ComboBox2.AddItem(Cells(6, i).Value)
  Next
End Sub

※TextBoxの名前はわざわざ変更しない限り、
 最初に作ったものがTextBox1、次がTextBox2、・・・なので、
 そのように書きました。

これがうまくいったら、
テキストボックスに店舗コードを入力した瞬間に
店舗名を表示するマクロを付け加えてみてはいかがでしょう?
 ───────────────────────────────────────  ■題名 : Re:条件にあったセルに自動入力  ■名前 : ポンタ  ■日付 : 03/1/31(金) 22:36  -------------------------------------------------------------------------
   書き忘れましたが、このマクロはこの表があるシートが
アクティブじゃないと動きません。

シートがアクティブじゃない状態でも動かしたいなら、
この表があるシートのシート名を教えてください。
 ───────────────────────────────────────  ■題名 : Re:条件にあったセルに自動入力・続  ■名前 : hana  ■日付 : 03/2/1(土) 23:48  -------------------------------------------------------------------------
   ▼ポンタ さん:
>書き忘れましたが、このマクロはこの表があるシートが
>アクティブじゃないと動きません。
>
>シートがアクティブじゃない状態でも動かしたいなら、
>この表があるシートのシート名を教えてください。

いつもご親切にありがとうございます。教えて頂いたマクロで
うまく動きました!!シートですが今の所の予定では同シート内
ですので大丈夫だと思います。

今度はアドバイスを頂いたように、店名が表示されるように
textbox2を新たに作り、textbox1に店コードが入力され
たらvlookupで店名を呼び出すようにしてみようと思ったの
ですが、これまた躓いております・・。恥ずかしながら下記の
ようにしてみたのですが・・

Private Sub TextBox1_Change()

Dim 範囲 As Range
Dim 検索値 As Long
Dim 位置列 As Long

'検索テーブルはcode.xlsのcodeシートのA3:B280セル範囲
Set 範囲 = Workbooks("code.xls").Worksheets("code").Range("A3:B280")
  検索値 = TextBox1.Value
  
TextBox2.Value = Application.WorksheetFunction.VLookup(検索値, 範囲, 2, False)
  
End Sub

また、教えていただいたコンボボックスだと1回ずつ入力用のボタン
をクリックする事になりますが、これを複数選択の掛け合わせにする
のはかなり難しいでしょうか??例えば1/1・1/2・1/3にはAさんと
Bさんをコード番号1のお店に・・のような形です。本等を見て勉強
してはいるのですが、パターンが違うととまってしまいます。。
 ───────────────────────────────────────  ■題名 : Re:条件にあったセルに自動入力・続  ■名前 : ポンタ  ■日付 : 03/2/2(日) 14:24  -------------------------------------------------------------------------
   >textbox1に店コードが入力されたらvlookupで店名を呼び出すように

他のブックを参照しているようなので、BO1を使って店名を求めました。
非表示にしても問題ない適当なセルに書き直してください。


>これを複数選択の掛け合わせにするのはかなり難しいでしょうか??

ComboBoxで複数選択を可能にする方法を知らないので、
代わりにListBoxを使う方法を考えました。

ComboBox1、ComboBox2を削除してから、ListBox1、ListBox2を作成してください。
ListBox1、ListBox2の MultiSelect プロパティを
fmMultiSelectMulti にしてから、お試しください。

Private Sub CommandButton1_Click()
  Dim Mes As String
  Dim i As Integer, j As Integer
  Dim bln1 As Boolean, bln2 As Boolean
  Me.Hide
  If TextBox1.Value = "" Then
    Mes = "店舗コードを入力してください"
  ElseIf TextBox2.Value = "" Then
    Mes = "店舗コードが間違っています"
  Else
    Mes = ""
  End If
  If Mes <> "" Then
    MsgBox (Mes)
    Me.Show
    Exit Sub
  End If
  For i = 0 To ListBox1.ListCount - 1
    If ListBox1.Selected(i) Then
      bln1 = True
      For j = 0 To ListBox2.ListCount - 1
        If ListBox2.Selected(j) Then
          Cells(i + 8, j * 2 + 9).Value = TextBox1.Value
          bln2 = True
        End If
      Next
    End If
  Next
  If bln1 = False Then
    MsgBox ("日付を選択してください")
  ElseIf bln2 = False Then
    MsgBox ("人名を選択してください")
  End If
End Sub

Private Sub TextBox1_Change()
  Dim MyRange As Range
  Set MyRange = Range("BO1")
  MyRange.Formula = "=VLOOKUP(" & TextBox1.Value & ",[code.xls]code!A3:B280,2,TRUE)"
  If IsError(MyRange) Then
    TextBox2.Value = ""
  Else
    TextBox2.Value = MyRange.Value
  End If
End Sub

Private Sub UserForm_Initialize()
  Dim i As Long
  ListBox1.Clear
  ListBox2.Clear
  For i = 8 To Range("F65536").End(xlUp).Row
    Call ListBox1.AddItem(Format(Cells(i, 6).Value, "M月D日"))
  Next
  For i = 9 To Range("iv6").End(xlToLeft).Column Step 2
    Call ListBox2.AddItem(Cells(6, i).Value)
  Next
End Sub

※入力漏れを警告するメッセージの優先順位が若干変更されてます。
 (日付、人名、店舗コード→店舗コード、店舗名、日付、人名)

※TextBox2は入力不可にしておくか、Labelにしてしまったほうがよいかもしれません。
 ───────────────────────────────────────  ■題名 : Re:条件にあったセルに自動入力・続  ■名前 : hana  ■日付 : 03/2/2(日) 22:06  -------------------------------------------------------------------------
   ポンタ様

本当に本当にいつもありがとうございます。お蔭様でそんなの
私には無理だ・・と思っていた複数選択での入力がばっちり
できるようになりました!!

ただ、textbox1にコードを入力してvlookupでtextbox2に
店名を表示させる際、数字のみのコードはきれいに動くの
ですが、アルファベット混じりのコード(例:S12のような)
だと反応しません。多分ちょっとしたことなのだろう、と自力
での解決を目指しましたが結局分かりません。もう一度だけお力
を頂けないでしょうか・・?
 ───────────────────────────────────────  ■題名 : Re:条件にあったセルに自動入力・続  ■名前 : ポンタ  ■日付 : 03/2/3(月) 14:08  -------------------------------------------------------------------------
     MyRange.Formula = "=VLOOKUP(" & TextBox1.Value & ",[code.xls]code!A3:B280,2,TRUE)"

  MyRange.Formula = "=VLOOKUP(""" & TextBox1.Value & """,[code.xls]code!A3:B280,2,TRUE)"
で、どうでしょう?
 ───────────────────────────────────────  ■題名 : Re:条件にあったセルに自動入力・続  ■名前 : hana  ■日付 : 03/2/3(月) 21:02  -------------------------------------------------------------------------
   本当にしつこくて申し訳ありません。新しく教えていただいた
コードだとアルファベット混じりのものはばっちりなのですが、
そうすると今度は数字のみのコードの場合がダメみたいですxxxxx


▼ポンタ さん:
>  MyRange.Formula = "=VLOOKUP(" & TextBox1.Value & ",[code.xls]code!A3:B280,2,TRUE)"
>を
>  MyRange.Formula = "=VLOOKUP(""" & TextBox1.Value & """,[code.xls]code!A3:B280,2,TRUE)"
>で、どうでしょう?
 ───────────────────────────────────────  ■題名 : Re:条件にあったセルに自動入力・続  ■名前 : ポンタ  ■日付 : 03/2/3(月) 22:19  -------------------------------------------------------------------------
   VLOOKUP関数の使い方が分かってないことが
ばれちゃいましたね。(^_^;)

これでどうですか?

Private Sub TextBox1_Change()
  Dim MyRange As Range
  Set MyRange = Range("BO1")
  MyRange.Formula = "=VLOOKUP(" & TextBox1.Value & ",[code.xls]code!A3:B280,2,FALSE)"
  MyRange.Offset(1, 0).Formula = "=VLOOKUP(""" & TextBox1.Value & """,[code.xls]code!A3:B280,2,FALSE)"
  If IsError(MyRange) = False Then
    TextBox2.Value = MyRange.Value
  ElseIf IsError(MyRange.Offset(1, 0)) = False Then
    TextBox2.Value = MyRange.Offset(1, 0).Value
  Else
    TextBox2.Value = ""
  End If
End Sub
 ───────────────────────────────────────  ■題名 : Re:条件にあったセルに自動入力・続  ■名前 : hana  ■日付 : 03/2/3(月) 23:03  -------------------------------------------------------------------------
   こんばんは。早速またもやありがとうございます!
でもでも・・やっぱりできませんです。。今回のコードでは
数字のみはOKで、アルファベット混じりのコードは0という
認識なのか0コードで登録している”希望休日”が出てしまい
ます・・。実際の表にはセルにVLOOKUPが使ってあるので、
textbox2の表示がどうであれ作業には問題はないのですが・・


▼ポンタ さん:
>VLOOKUP関数の使い方が分かってないことが
>ばれちゃいましたね。(^_^;)
>
>これでどうですか?
>
>Private Sub TextBox1_Change()
>  Dim MyRange As Range
>  Set MyRange = Range("BO1")
>  MyRange.Formula = "=VLOOKUP(" & TextBox1.Value & ",[code.xls]code!A3:B280,2,FALSE)"
>  MyRange.Offset(1, 0).Formula = "=VLOOKUP(""" & TextBox1.Value & """,[code.xls]code!A3:B280,2,FALSE)"
>  If IsError(MyRange) = False Then
>    TextBox2.Value = MyRange.Value
>  ElseIf IsError(MyRange.Offset(1, 0)) = False Then
>    TextBox2.Value = MyRange.Offset(1, 0).Value
>  Else
>    TextBox2.Value = ""
>  End If
>End Sub
 ───────────────────────────────────────  ■題名 : Re:条件にあったセルに自動入力・続  ■名前 : ポンタ  ■日付 : 03/2/3(月) 23:25  -------------------------------------------------------------------------
   早いだけで、お役に立てず、スミマセン。

さらに別の案を考えました。

BO2のセルに以下のような式を入れてください。

=VLOOKUP(BO1,'[code.xls]code'!A3:B280,2,FALSE)

BO1にいろんな値を入れてみて、
ちゃんと正しい店舗名を表示することを確認してください。

その上で、このコードの置き換えてみてください。

Private Sub TextBox1_Change()
  Dim MyRange As Range
  Set MyRange = Range("BO2")
  MyRange.Offset(-1, 0).Value = TextBox1.Value
  If IsError(MyRange) = False Then
    TextBox2.Value = MyRange.Value
  Else
    TextBox2.Value = ""
  End If
End Sub
 ───────────────────────────────────────  ■題名 : できました!!  ■名前 : hana  ■日付 : 03/2/4(火) 9:41  -------------------------------------------------------------------------
   早い上にご親切にして頂いていつも感激です!!
これでばっちりでした!教えて頂いたコードを見ると
なるほどと思うんですけど自分ではできず。。。貴重な
お時間と知識をありがとうございました!!
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 668