Excel VBA質問箱 IV

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

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


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

【36317】表のインデックス呼び出しに関して Hirok 06/3/28(火) 20:59 質問[未読]
【36319】Re:表のインデックス呼び出しに関して Kein 06/3/28(火) 21:29 回答[未読]
【36590】Re:表のインデックス呼び出しに関して Hirok 06/4/4(火) 21:23 お礼[未読]
【36591】Re:表のインデックス呼び出しに関して Kein 06/4/4(火) 22:20 回答[未読]
【36634】Re:表のインデックス呼び出しに関して Hirok 06/4/5(水) 21:24 質問[未読]
【36635】Re:表のインデックス呼び出しに関して Kein 06/4/5(水) 21:28 発言[未読]
【36636】Re:表のインデックス呼び出しに関して Hirok 06/4/5(水) 21:51 お礼[未読]

【36317】表のインデックス呼び出しに関して
質問  Hirok  - 06/3/28(火) 20:59 -

引用なし
パスワード
   表のインデックス呼び出しに関して

表のA列に検索・表示用のインデックス「あ」、「う」・・「か」、「き」・・
「さ」、「し」、「す」・・「た」・・・・「わ」があり、インデックスの数
は20個余り表示されています。
そのインデックスを『検索・表示』させるコードを次のようなコードを利用し
ています。
Worksheets("AAA").Activate
 For i =Range("A65536").End(xlUp).Row To 5 Step-1
   If cells(i,1).value="あ" Then
    Application.Goto Referance:=Cells(i,1), scroll:=True
   End if
 Next
しかしながら、このコードでは「あ」の検索から「わ」の検索まで20個余り
のインデックスを検索・表示させるには20個余りの個別のコードが必要です。
(現在はこの20数個のコードを使用中ですが) これらのコードをひとつの
コードにまとめる事ができないでしょうか。

【36319】Re:表のインデックス呼び出しに関して
回答  Kein  - 06/3/28(火) 21:29 -

引用なし
パスワード
   Sub Test_検索()
  Dim Ary As Variant
  Dim St As String
  Dim FR As Range
 
  Ary = Array("あ", "い", "う", "え", "お", "か", "き", "く", _
  "け", "こ", "さ", "し", "す", "せ", "そ", "た", "ち", "つ", _
  "て", "と", "な", "に", "ぬ", "ね", "の", "は", "ひ", "ふ", _
  "へ", "ほ", "ま", "み", "む", "め", "も", "や", "ゆ", "よ", _
  "ら", "り", "る", "れ", "ろ", "わ")
  Do
   St = InputBox("{ あ〜わ } のうちの一文字を入力して下さい")
   If St = "" Then Exit Sub
  Loop While IsError(Application.Match(St, Ary, 0))
  Set FR = Worksheets("AAA").Range("A:A") _
  .Find(St, , xlValues, xlWhole, , xlPrevious)
  If FR Is Nothing Then
   MsgBox "「 " & St & " 」は見つかりません", 48
  Else
   Application.GoTo FR, True
   Set FR = Nothing
  End If
End Sub

で、どうでしょーか ?

【36590】Re:表のインデックス呼び出しに関して
お礼  Hirok  - 06/4/4(火) 21:23 -

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

ありがとうございました。お礼が遅くなり失礼しました。
勉強になりました。
説明不足がありましたが、丁寧な回答に感謝しております。
願わくは、別シートからクリック(フォームで「あ」「か」…「わ」を作成)だけで
文字入力するInputBoxを使わず
検索できれば…更に使いやすいかな?っと思っていました。
そのような方法が有りましたら、アドバイスいただければ幸いです。

…この質問は比較的最近にしたのですが、遥か彼方に移動してしまっていて
?削除されたのか?っと思っていました。…

そのため、お礼が本当に遅くなり失礼しました。
今後ともよろしくご指導をお願いします。
失礼します。


>Sub Test_検索()
>  Dim Ary As Variant
>  Dim St As String
>  Dim FR As Range
> 
>  Ary = Array("あ", "い", "う", "え", "お", "か", "き", "く", _
>  "け", "こ", "さ", "し", "す", "せ", "そ", "た", "ち", "つ", _
>  "て", "と", "な", "に", "ぬ", "ね", "の", "は", "ひ", "ふ", _
>  "へ", "ほ", "ま", "み", "む", "め", "も", "や", "ゆ", "よ", _
>  "ら", "り", "る", "れ", "ろ", "わ")
>  Do
>   St = InputBox("{ あ〜わ } のうちの一文字を入力して下さい")
>   If St = "" Then Exit Sub
>  Loop While IsError(Application.Match(St, Ary, 0))
>  Set FR = Worksheets("AAA").Range("A:A") _
>  .Find(St, , xlValues, xlWhole, , xlPrevious)
>  If FR Is Nothing Then
>   MsgBox "「 " & St & " 」は見つかりません", 48
>  Else
>   Application.GoTo FR, True
>   Set FR = Nothing
>  End If
>End Sub
>
>で、どうでしょーか ?

【36591】Re:表のインデックス呼び出しに関して
回答  Kein  - 06/4/4(火) 22:20 -

引用なし
パスワード
   >別シートからクリック(フォームで「あ」「か」…「わ」を作成)だけで
>文字入力するInputBoxを使わず検索できれば
では、入力規則のリスト選択という方法で、どうでしょーか ?
ThisWorkbookモジュールに

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, _
ByVal Target As Range, Cancel As Boolean)
  Const MyList As String = _
  "あ, い, う, え, お, か, き, く," & _
  "け, こ, さ, し, す, せ, そ, た, ち, つ," & _
  "て, と, な, に, ぬ, ね, の, は, ひ, ふ," & _
  "へ, ほ, ま, み, む, め, も, や, ゆ, よ," & _
  "ら , り, る, れ, ろ, わ"
 
  With Target
   If .Row > 1 Then Exit Sub
   Cancel = True
   .Validation.Add xlValidateList, , , MyList
  End With
End Sub


Private Sub Workbook_SheetChange(ByVal Sh As Object, _
ByVal Target As Range)
  Dim FR As Range

  On Error GoTo ELine
  With Target
   If .Row > 1 Then Exit Sub
   If Not Intersect(Target, Rows(1).SpecialCells(-4174)) Is _
    Nothing Then
     Set FR = Worksheets("AAA").Range("A:A") _
     .Find(.Value, , xlValues, xlWhole, , xlPrevious)
     If FR Is Nothing Then
       MsgBox "「 " & .Value & " 」は見つかりません", 48
     Else
       Application.GoTo FR, True
       Set FR = Nothing
     End If
     .Validation.Delete
   End If
  End With
ELine:
End Sub

の、2つのマクロを入れて、任意のシートの1行目の任意のセルをダブルクリックし、
そこに出てきたプルダウンメニュー(▼をクリック)から五十音を選択してみて下さい。

【36634】Re:表のインデックス呼び出しに関して
質問  Hirok  - 06/4/5(水) 21:24 -

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

早速のご回答ありがとうございます。
一寸コードの内容が理解できず…申し訳ありませんが、
プルダウンメニューは出ますが、「あ、い…わ」の
文字がでてきません。

何か誤解をしているのでしょうか…アドヴァイスお願いします。

【36635】Re:表のインデックス呼び出しに関して
発言  Kein  - 06/4/5(水) 21:28 -

引用なし
パスワード
   セルの右横あたりに ▼ の印のボタンが出ましたか ? それをクリックすれば
コンボボックスのようにリストが出てくるはずですが・・。

【36636】Re:表のインデックス呼び出しに関して
お礼  Hirok  - 06/4/5(水) 21:51 -

引用なし
パスワード
   ▼Kein さん:
>セルの右横あたりに ▼ の印のボタンが出ましたか ? それをクリックすれば
>コンボボックスのようにリストが出てくるはずですが・・。

ありがとうございました。希望の通りの内容で本当にありがとうございます…
唸ります。小生にはこのコードの理解が出来ないのが歯がゆいですが…
This Workbookへの書込みも、初めての体験です。
勉強不足です。これから少しずつしますのでこれからもよろしくお願いします。
理解できない悔しさが残りましたが…「,,,」や「,,」等が出てきて…
これ何って聞きたいくらいです。

ありがとうございました。またご指導の程お願いします。
本当にありがとうございます。

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