Excel VBA質問箱 IV

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

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


24340 / 76732 ←次へ | 前へ→

【57742】Re:検索して分岐
発言  kanabun  - 08/9/11(木) 19:25 -

引用なし
パスワード
   ▼M さん:
こんばんは。

> 只担当者がある商品を売った場合CN番号がないため
> (証明書番号)空欄になります。
> 次に担当者がCNを切ったときは1と表示され連番になりません。
> 仕方のないことなのでしょうか。

> オートフイルタを使った場合は連番で表示されます。
というのは
【57598】 に書き込んだコードのことだったでしょうか?
これは、実は オートフィルタ方式ではありません。
必要な列の値を全行メモリ(配列)にいれ、配列内で
処理しています。

このコードと他のコードの CN番号 を求める方法の違いは、
他のコードが 「会社名」と「担当者名」の一致する行の
▲「最後の行」を求めているのに対して、

【57598】では、
> cboKaishaのChangeで cboTantouの担当者リストをつくるとき、
> いっしょに CN請求書番号 もcboTantouのリストに表示しておけば
>
  (コードの主要部分)
>     Set dic = CreateObject("Scripting.Dictionary")
>     For i = 0 To UBound(vTantou) - 1
>       ss = vTantou(i)
>       If dic.Exists(ss) Then
>         numCN = dic(ss)
>         If numCN < vCN(i) Then dic(ss) = vCN(i)
>       Else
>         dic(ss) = vCN(i)
>       End If
>     Next

> ユーザーが担当者リストのどれかを選択すると同時に、
> テキストボックス txtCN に 最終番号+1が表示されます

と説明にあるように、
「会社名」と「担当者名」の一致する行の CN番号の★[最大値]を
dictionaryにあらかじめ格納しているからです。

ですから、フィルタ方式でも、Find方式でも、
「会社名」と「担当者名」の一致する行の ▲「最後の行」でなく、
該当行のうち CN番号の★[最大値]を求めるようにすれば、
どの方式でも、その点に関しては不具合は出なくなると思います。

▼最後に書き込んだ
>        Sub もしFindを使うなら_その2()
をこの方式に改良すると、次のような感じです。

Sub もしFindを使うなら_その3() '最終CN値でなく、最大CN番号を求める

 Dim c As Range, RngSearch As Range
 Dim 会社名 As String
 Dim 担当者名 As String
 Dim 検索値 As String
 Dim numCN, hCN
 Dim ok As Boolean
 Dim firstAddress As String

 If cboKaisha.ListIndex > -1 Then
   会社名 = cboKaisha.Text
   If cboTantou.ListIndex > -1 Then
     担当者名 = cboTantou.Text
     検索値 = 会社名 & "|" & 担当者名
     ok = True
   End If
 End If
 If Not ok Then Exit Sub

 With Worksheets("AAA")
   Set RngSearch = .Range("Q2", Cells(.Rows.Count).End(xlUp))
 
   '作業列を一巡検索 検索値 = 会社名 & "|" & 担当者名
   Set c = rngserch.Find(検索値, , LookIn:=xlValues, LookAt:=xlWhole)
   If Not c Is Nothing Then
     firstAddress = c.Address
     Do
       hCN = .Cells(c.Row, "H").Value
       If IsNumeric(hCN) Then
         If numCN < hCN Then numCN = hCN '最大CN番号さがし
       End If
       Set c = RngSearch.FindNext(c)
     Loop Until c.Address = firstAddress
     txtCN.Text = numCN + 1
   Else
     MsgBox "指定会社の指定担当者が見つかりませんでした"
     txtCN.Text = ""
   End If
 End With
End Sub

0 hits

【57576】検索して分岐 M 08/9/3(水) 12:06 質問
【57577】Re:検索して分岐 ハチ 08/9/3(水) 12:42 発言
【57580】Re:検索して分岐 M 08/9/3(水) 13:07 回答
【57579】Re:検索して分岐 kanabun 08/9/3(水) 13:04 発言
【57582】Re:検索して分岐 kanabun 08/9/3(水) 13:50 発言
【57585】Re:検索して分岐 M 08/9/3(水) 14:25 回答
【57586】Re:検索して分岐 ハチ 08/9/3(水) 15:03 発言
【57595】Re:検索して分岐 M 08/9/3(水) 21:05 お礼
【57596】Re:検索して分岐 kanabun 08/9/3(水) 21:39 発言
【57598】Re:検索して分岐 kanabun 08/9/3(水) 22:19 発言
【57603】Re:検索して分岐 M 08/9/4(木) 8:07 お礼
【57686】Re:検索して分岐 M 08/9/9(火) 17:25 質問
【57687】Re:検索して分岐 kanabun 08/9/9(火) 19:52 質問
【57689】Re:検索して分岐 M 08/9/9(火) 20:42 お礼
【57688】Re:検索して分岐 kanabun 08/9/9(火) 20:34 発言
【57690】Re:検索して分岐 M 08/9/9(火) 20:55 お礼
【57697】Re:検索して分岐 M 08/9/10(水) 8:20 発言
【57698】Re:検索して分岐 ハチ 08/9/10(水) 8:51 発言
【57704】Re:検索して分岐 M 08/9/10(水) 10:31 発言
【57705】Re:検索して分岐 ハチ 08/9/10(水) 10:42 発言
【57721】【すいません】Re:検索して分岐 ハチ 08/9/10(水) 15:16 発言
【57722】Re:【すいません】Re:検索して分岐 kanabun 08/9/10(水) 15:28 発言
【57726】Re:【すいません】Re:検索して分岐 M 08/9/10(水) 17:14 お礼
【57735】Re:検索して分岐 kanabun 08/9/11(木) 9:12 発言
【57741】Re:検索して分岐 M 08/9/11(木) 18:15 お礼
【57742】Re:検索して分岐 kanabun 08/9/11(木) 19:25 発言
【57751】Re:検索して分岐 M 08/9/12(金) 7:18 発言
【57752】Re:検索して分岐 kanabun 08/9/12(金) 8:57 発言
【57787】Re:検索して分岐 M 08/9/13(土) 12:40 お礼
【57713】Re:検索して分岐 kanabun 08/9/10(水) 12:50 発言
【57715】Re:検索して分岐 M 08/9/10(水) 14:06 発言
【57716】Re:検索して分岐 M 08/9/10(水) 14:09 発言

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