Excel VBA質問箱 IV

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

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


7481 / 13645 ツリー ←次へ | 前へ→

【38755】ユーザーフォームを使い検索&入力 津良 06/6/9(金) 14:16 質問[未読]
【38779】Re:ユーザーフォームを使い検索&入力 Kein 06/6/9(金) 21:57 回答[未読]
【38785】Re:ユーザーフォームを使い検索&入力 津良 06/6/10(土) 10:43 お礼[未読]
【38780】Re:ユーザーフォームを使い検索&入力 漂流民 06/6/9(金) 22:15 発言[未読]
【38786】Re:ユーザーフォームを使い検索&入力 津良 06/6/10(土) 10:50 お礼[未読]
【38833】Re:ユーザーフォームを使い検索&入力 K 06/6/11(日) 21:43 質問[未読]
【38834】Re:ユーザーフォームを使い検索&入力 漂流民 06/6/11(日) 23:04 回答[未読]
【38841】Re:ユーザーフォームを使い検索&入力 K 06/6/12(月) 8:41 質問[未読]
【38853】Re:ユーザーフォームを使い検索&入力 漂流民 06/6/12(月) 20:40 回答[未読]
【38858】Re:ユーザーフォームを使い検索&入力 K 06/6/12(月) 21:44 質問[未読]
【38860】Re:ユーザーフォームを使い検索&入力 漂流民 06/6/12(月) 22:19 回答[未読]
【38868】Re:ユーザーフォームを使い検索&入力 K 06/6/13(火) 7:14 お礼[未読]
【38895】Re:ユーザーフォームを使い検索&入力 漂流民 06/6/13(火) 21:23 発言[未読]
【38896】Re:ユーザーフォームを使い検索&入力 06/6/13(火) 22:35 質問[未読]
【38901】Re:ユーザーフォームを使い検索&入力 漂流民 06/6/14(水) 0:32 発言[未読]
【38933】Re:ユーザーフォームを使い検索&入力 06/6/14(水) 18:30 お礼[未読]

【38755】ユーザーフォームを使い検索&入力
質問  津良  - 06/6/9(金) 14:16 -

引用なし
パスワード
   初心者ですがお世話になりたいと思っています。
よろしくお願いします。

 A・・・・G・・・・・・・・P
1   K180  2006/06/06
2   R120


データはこんな感じです。
Sheet1にあるGの列の文字をユーザーフォームに条件を入力して検索し、同じ行でPの列のセルに入力時の日付けを入れたいのですが、どのような使い方をすればいいでしょうか?

【38779】Re:ユーザーフォームを使い検索&入力
回答  Kein  - 06/6/9(金) 21:57 -

引用なし
パスワード
   >条件を入力して検索
とは、どんな条件なのか分かりませんが、ユーザーフォームを使わなくても
InputBox で検索値を取得する方法でも出来ます。部分一致で検索するとして

Dim FdSt As String
Dim FR As Range

FdSt = InputBox("検索値を入力して下さい")
If FdSt = "" Then Exit Sub
Set FR = Range("G:G").Find(FdSt, , xlValues, xlPart)
If FR Is Nothing Then
  MsgBox FdSt & " は見つかりません !", 48: Exit Sub
Else
  FR.Offset(, 9).Value = Format(Date, "yyyy/mm/dd")
  Set FR = Nothing
End If

というようなコードになります。

【38780】Re:ユーザーフォームを使い検索&入力
発言  漂流民  - 06/6/9(金) 22:15 -

引用なし
パスワード
   ▼津良 さん:
こんばんわ

>初心者ですがお世話になりたいと思っています。
>よろしくお願いします。
>
> A・・・・G・・・・・・・・P
>1   K180  2006/06/06
>2   R120
>3
>4
>データはこんな感じです。
ここまではいいのですが、

>Sheet1にあるGの列の文字をユーザーフォームに条件を入力して検索し、
これ、よく分かりません。
たぶん、「ユーザーフォームに条件を入力して、
Sheet1にあるGの列の文字を検索し」たいのだと思いますが、
Gの列の文字をユーザーフォームに取り込みたいようにもとれます。

>同じ行でPの列のセルに入力時の日付けを入れたいのですが、どのような使い方をすればいいでしょうか?
「入力時の日付け」のデータはどこにあるのですか?


とりあえず、参考までに
Private Sub CommandButton1_Click()
  For i = 1 To Range("d65536").End(xlUp).Row
    If Cells(i, 4) = TextBox1 Then
      Cells(i, 16) = Date
    End If
  Next i
End Sub


もう少し分かりやすい質問の仕方をお願いします。
さらに「例え」を入れるといいと思います。

「例えば、ユーザーフォームのTextBox1に『R120』と入力してCommandButton1を押した時、
G列を検索してマッチたら同じ行のP列にxxの日付を入れたい」

というようにすれば回答者も回答しやすくなりますよ^^

【38785】Re:ユーザーフォームを使い検索&入力
お礼  津良  - 06/6/10(土) 10:43 -

引用なし
パスワード
   ▼Kein さん:

わかりにくい説明ですみません。
InputBox ですか。
部分一致で検索するので、ありがとうございます。

【38786】Re:ユーザーフォームを使い検索&入力
お礼  津良  - 06/6/10(土) 10:50 -

引用なし
パスワード
   ▼漂流民 さん:

わかりにくくすみません。

色々とアドバイスありがとうございます。
漂流民さんの思う通りで文字をユーザーフォームに取り込むのではなく、
ユーザーフォームに条件を入力して、
Sheet1にあるGの列の文字を検索したいです。

>「例えば、ユーザーフォームのTextBox1に『R120』と入力してCommandButton1を押した時、
>G列を検索してマッチたら同じ行のP列にxxの日付を入れたい」
>
>というようにすれば回答者も回答しやすくなりますよ^^
その通りですね、日付はその検索した日です。

【38833】Re:ユーザーフォームを使い検索&入力
質問  K  - 06/6/11(日) 21:43 -

引用なし
パスワード
   ▼漂流民 さん:

今晩は、教えてください。

Private Sub CommandButton1_Click()
  For i = 1 To Range("d65536").End(xlUp).Row
    If Cells(i, 4) = TextBox1 Then
      Cells(i, 16) = Date
    End If
  Next i
End Sub

貴殿のコードで小生も、参考に活用させていただきたく
思って、おります。

条件に合わない場合にメッセ−ジを出したいのですが
どこにMsgBoxを入れると良いのでしょうか?

【38834】Re:ユーザーフォームを使い検索&入力
回答  漂流民  - 06/6/11(日) 23:04 -

引用なし
パスワード
   ▼K さん:
>▼漂流民 さん:
>
>今晩は、教えてください。
>
>Private Sub CommandButton1_Click()
>  For i = 1 To Range("d65536").End(xlUp).Row
>    If Cells(i, 4) = TextBox1 Then
>      Cells(i, 16) = Date
>    End If
>  Next i
>End Sub
>
>貴殿のコードで小生も、参考に活用させていただきたく
>思って、おります。
>
>条件に合わない場合にメッセ−ジを出したいのですが
>どこにMsgBoxを入れると良いのでしょうか?
こーいうこと?
    If Cells(i, 4) <> TextBox1 Then
      MsgBox "条件不一致 " & i & "行目"
    End If

違うようであればもう少し具体的に質問してください^^

【38841】Re:ユーザーフォームを使い検索&入力
質問  K  - 06/6/12(月) 8:41 -

引用なし
パスワード
   ▼漂流民 さん:
おはよう御座います。そして
ありがとう御座います。説明が稚拙でご迷惑をかけています。

>>Private Sub CommandButton1_Click()
>>  For i = 1 To Range("d65536").End(xlUp).Row
>>    If Cells(i, 4) = TextBox1 Then
>>      Cells(i, 16) = Date
>>    End If
>>  Next i
>>End Sub
・・・と・・・
>    If Cells(i, 4) <> TextBox1 Then
>      MsgBox "条件不一致 "
>    End If
>違うようであればもう少し具体的に質問してください^^

上と下のコードを繋いで作成したいんですが・・・
テキストボックスから入力したValueと4列目のValueが一致した時には
日時表示
一致しなかった時には
Msgboxで「条件不一致」と表示させる事をしたいのです。
For〜Nextを利用して作成したいのです。よろしくお願いします。

【38853】Re:ユーザーフォームを使い検索&入力
回答  漂流民  - 06/6/12(月) 20:40 -

引用なし
パスワード
   ▼K さん:
こんばんわ

>▼漂流民 さん:
>おはよう御座います。そして
>ありがとう御座います。説明が稚拙でご迷惑をかけています。
>
>>>Private Sub CommandButton1_Click()
>>>  For i = 1 To Range("d65536").End(xlUp).Row
>>>    If Cells(i, 4) = TextBox1 Then
>>>      Cells(i, 16) = Date
>>>    End If
>>>  Next i
>>>End Sub
>・・・と・・・
>>    If Cells(i, 4) <> TextBox1 Then
>>      MsgBox "条件不一致 "
>>    End If
>>違うようであればもう少し具体的に質問してください^^
>
>上と下のコードを繋いで作成したいんですが・・・
>テキストボックスから入力したValueと4列目のValueが一致した時には
>日時表示
時?
>一致しなかった時には
>Msgboxで「条件不一致」と表示させる事をしたいのです。
>For〜Nextを利用して作成したいのです。よろしくお願いします。
時刻も入れて、こんな感じでしょうか?

Private Sub CommandButton1_Click()
  For i = 1 To Range("d65536").End(xlUp).Row
    If Cells(i, 4) = TextBox1 Then
      Cells(i, 16) = Date & " " & Time
    Else
      MsgBox "条件不一致 "
    End If
  Next i
End Sub


夜しか回答できませんが、違うようであれば気軽にに質問してください^^

【38858】Re:ユーザーフォームを使い検索&入力
質問  K  - 06/6/12(月) 21:44 -

引用なし
パスワード
   ▼漂流民 さん:

お忙しい中、ご返事いただき感謝しています。
質問の仕方が不味いのでしょう。
今ひとつ回答が分かりません。

Private Sub CommandButton1_Click()
  For i = 1 To Range("d65536").End(xlUp).Row
   If Cells(i, 4) = TextBox1 Then
      Cells(i, 16) = Date
    End If
 Next i
End Sub

このコードは順調に動いています。
しかし、対象がない時、対象が無い旨の、例えば「条件不一致」を表示させて
終了したいのですが・・・


>時刻も入れて、こんな感じでしょうか?
>
>Private Sub CommandButton1_Click()
>  For i = 1 To Range("d65536").End(xlUp).Row
>    If Cells(i, 4) = TextBox1 Then
>      Cells(i, 16) = Date & " " & Time
>    Else
>      MsgBox "条件不一致 "
>    End If
>  Next i
>End Sub
>
頂きました、上のコードは「条件不一致」ばかり表示されますが
何故でしょうか。
d列の一行目に条件不一致が有っても、5行目にテキストの入力したものが
一致する場足は、日時が表示されたいのですが・・・
分かりにくい説明ですが、よろしくお願いします。

【38860】Re:ユーザーフォームを使い検索&入力
回答  漂流民  - 06/6/12(月) 22:19 -

引用なし
パスワード
   ▼K さん:
ちょっと良くわからないのですが、

>しかし、対象がない時、対象が無い旨の、例えば「条件不一致」を表示させて
>終了したいのですが・・・
もしかして、D列を対象に一致するものが”1つもない”ときだけ
「条件不一致」を表示させたいということですか?


Private Sub CommandButton1_Click()
  Dim i As Long
  Dim SFlag As Boolean
  
  For i = 1 To Range("d65536").End(xlUp).Row
    If Cells(i, 4) = TextBox1 Then
      Cells(i, 16) = Date & " " & Time
      SFlag = True
    End If
  Next i
  If SFlag = False Then
      MsgBox "条件に一致するものはありませんでした "
  End If
End Sub

【38868】Re:ユーザーフォームを使い検索&入力
お礼  K  - 06/6/13(火) 7:14 -

引用なし
パスワード
   ▼漂流民 さん:

表現が不味く、ご迷惑をおかけしました。
この通りです。
これからも、夜にチェックしてください。
よろしくお願いします。

【38895】Re:ユーザーフォームを使い検索&入力
発言  漂流民  - 06/6/13(火) 21:23 -

引用なし
パスワード
   ▼K さん:
>▼漂流民 さん:
>
>表現が不味く、ご迷惑をおかけしました。
>この通りです。
>これからも、夜にチェックしてください。
>よろしくお願いします。

お役に立てたようで^^
今回の分はK さんの意向通りにしましたが、
私ならちゃんと終わったのか知りたいので、
少なくとも↓こんな感じにします

Private Sub CommandButton1_Click()
  Dim i As Long
  Dim j As Long
 
  For i = 1 To Range("d65536").End(xlUp).Row
    If Cells(i, 4) = TextBox1 Then
      Cells(i, 16) = Date & " " & Time
      j = j + 1
    End If
  Next i
  
  MsgBox "検索結果 " & j & "件"
End Sub

(未実行のため間違いがあったらスイマセン)

【38896】Re:ユーザーフォームを使い検索&入力
質問    - 06/6/13(火) 22:35 -

引用なし
パスワード
   ▼漂流民 さん:

>
>Private Sub CommandButton1_Click()
>  Dim i As Long
>  Dim j As Long
> 
>  For i = 1 To Range("d65536").End(xlUp).Row
>    If Cells(i, 4) = TextBox1 Then
>      Cells(i, 16) = Date & " " & Time
>      j = j + 1
>    End If
>  Next i
>  
>  MsgBox "検索結果 " & j & "件"
>End Sub
>
>(未実行のため間違いがあったらスイマセン)

これが一番良さそうです。
この「j=j+1」の意味が分かりませんね。
更に年月日の年が2013になりますが・・・

今回はFlagの使い方を覚え、勉強になりました、
これからもご指導をよろしくお願いします。

【38901】Re:ユーザーフォームを使い検索&入力
発言  漂流民  - 06/6/14(水) 0:32 -

引用なし
パスワード
   ▼K さん:
こんばんわ

>これが一番良さそうです。
>この「j=j+1」の意味が分かりませんね。
数学的にはありえない式なので、
プログラミングに馴染みが無いと分かりにくいですね。
意味は右辺を左辺に代入するということになります
イコールということではありません。
つまり「j」の値が1なら「j」に+1をして「j」を2にします。
式をわかりやすくすると(VBでは成立しませんが)、
j <- j + 1
という感じです。
(プログラムの処理は上から下、右から左に流れるイメージです)
条件式内の等式と通常の代入式が共に「=」を使うので
慣れるまで戸惑うと思います^^


>更に年月日の年が2013になりますが・・・
そんなはずは・・・
デスクトップの右下に時刻が表示されていると思いますが、
それをダブルクリックして日付と時刻が現在と合っていますか?


>今回はFlagの使い方を覚え、勉強になりました、
>これからもご指導をよろしくお願いします。
Booleanはブーリアン型です。旗(Flag)を立てる・立てないや
オセロの白黒をイメージすると分かりやすいと思います^^

【38933】Re:ユーザーフォームを使い検索&入力
お礼    - 06/6/14(水) 18:30 -

引用なし
パスワード
   ▼漂流民 さん:

今晩は
非常に丁寧な説明ありがとう御座いました。
よく理解できました。
これからもご指導の程よろしくお願いします。

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