Excel VBA質問箱 IV

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

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


35802 / 76732 ←次へ | 前へ→

【46124】Re:ユーザーフォームのリストを検索→転記
回答  かみちゃん E-MAIL  - 07/1/23(火) 16:51 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>sheet1セルの範囲は$A$1:$C$1391です。
>実際には、データは1394まで埋められているのですが
>かみちゃん原因解りましたC1392:C1394空きでした
>C1394に文字入力したところ表示されました。
>なにも入ってないところが途中結構あります。特にC列は・・・

そのようにしたら、原因がわかりますよね?

>これを"コード.xls"のA1からC列最終まで表示させる
この要件に対応したまでです。

C列に何も入っていないセルが途中結構あるが、A列には何も入っていないセル
はないという要件であれば、「A1からC列最終まで」ではなく「A1からA列の値
の入っている最終行のC列まで」ではないでしょうか?
それであれば、
With ws.Range("A1", ws.Cells(Rows.Count, 3).End(xlUp))

With ws.Range("A1", ws.Cells(Rows.Count, 1).End(xlUp)).Resize(, 3)
とすればいいです。

>>> 下記3は、2同様検索機能をつけてもらえませんか
>>
>>それでは、要件を提示していただけませんか?
>>[46064]で
>>
>>とだけの提示では、どの列の値が検索条件と部分一致していればいいのかが
>>まったくわかりません。
>
>B列の値が検索条件ですここに会社名が書かれてます

yasuさんでしたら、これだけのヒントの提示があればできると思うのですが、
ほとんど作成依頼に近い形になってしまい、残念です(T_T)
いえ、私は構わないのですが、ご理解いただけずスレッドが長くなってしまい
申し訳ない気持ちです。

ということで、UserForm4を勝手に作りました。
コントロールの配置は、UserForm2、UserForm3と同様です。
CommandButton1のClickイベントのコードがこれだけ変えないといけないとい
うのを実感してください。

'==================================================
'■UserForm4モジュール
' (コード.xlsから検索条件部分一致を選択肢とする)
' (部分一致は全角半角、大文字小文字を無視)
'==================================================
Private Sub UserForm_Initialize()
 Me.Left = 150
 Me.Top = 100
End Sub

'コード.xlsのA1セル〜A列の値の入っている最終行のC列までをComboBoxへ追加
' 検索条件部分一致を選択肢とする
' 部分一致は全角半角、大文字小文字を無視
Private Sub CommandButton1_Click()
 Dim WB1 As Workbook
 Dim WB2 As Workbook
 Dim strFileName As String
 Dim ws As Worksheet
 Dim lngRow As Long
 Dim rng As Range
 Dim ComboBox_Row As Long
 
 Set WB1 = ThisWorkbook
 strFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls")
 If strFileName <> "False" Then
  Application.ScreenUpdating = False
  'すでに開いているかどうかをチェックする
  If Not ChkWorkbook(Mid(strFileName, InStrRev(strFileName, "\") + 1)) Then
   MsgBox strFileName & vbCrLf & "を開きます"
   Set WB2 = Workbooks.Open(strFileName)
  Else
   Set WB2 = Workbooks(Mid(strFileName, InStrRev(strFileName, "\") + 1))
  End If
  WB1.Activate
  
  Set ws = WB2.Sheets("Sheet1")
  Set rng = ws.Range("A1", ws.Cells(Rows.Count, 1).End(xlUp)).Resize(, 3)
  ComboBox_Row = 0
  With Me.ComboBox1
   .ColumnCount = rng.Columns.Count
   For lngRow = 1 To rng.Rows.Count
    If StrConv(StrConv(rng.Cells(lngRow, 2).Value, vbWide), vbUpperCase) _
     Like "*" & StrConv(StrConv(Me.TextBox1.Value, vbWide), vbUpperCase) & "*" Then
     .AddItem rng.Cells(lngRow, 1).Value
     .List(ComboBox_Row, 1) = rng.Cells(lngRow, 2).Value
     .List(ComboBox_Row, 2) = rng.Cells(lngRow, 3).Value
     .ColumnWidths = "20 pt;20 pt;20 pt"
     .BoundColumn = 1
     ComboBox_Row = ComboBox_Row + 1
    End If
   Next
  End With
  Application.ScreenUpdating = True
 Else
  MsgBox "コード.xlsのファイル選択を中止しました"
 End If
End Sub

'ComboBoxの選択値をアクティブセルへ転記
Private Sub CommandButton2_Click()
 ActiveCell.Value = Me.ComboBox1.Value
 Unload Me
End Sub

'ComboBoxの選択肢を消去
Private Sub CommandButton3_Click()
 Me.ComboBox1.Clear
End Sub

'ブックオープン済みチェック関数
Function ChkWorkbook(strWorkbookName As String) As Boolean
 Dim wb As Workbook

 ChkWorkbook = False
 For Each wb In Workbooks
  If wb.Name = strWorkbookName Then
   ChkWorkbook = True
   Exit For
  End If
 Next
End Function

>>また、セル範囲全体であれば、ComboBoxのRowSourceプロパティに設定すれば
>>いいですが、そのうちの検索条件の部分一致するセルの値だけをComboBoxの
>>選択肢とするならば、RowSourceプロパティではなく、テキスト.txtと同様
>>ループ処理によるAddItmeを使う必要があることが理解できますか?
>
>いえよく解りませんが、部分一致が条件になると思います完全一致はチョット
>難しいです。

完全一致など一言も申し上げていません。
特定のセル範囲(ここではA1〜A列の値の入っている最終行のC列まで)全体を
ComboBoxの選択肢とするには、RowSourceプロパティで簡単に設定できますが、
そのうちの条件に一致(部分であろうが完全であろうが関係ない)するものだ
けを反映させるには、上記UserForm4のCommndButton1のClickイベントのような
記述の仕方をしないと実現できないということです。

>検索でhitしたものはComboBoxにA列からC列まで表示出来ればいいのですが。
>やり方はユーザーフォーム2と同様テキストボックスへ→検索値入力→コマンド
>ボタンにて検索→コンボボックス表示→転記でいいと思うのですが。?

UserForm4でUserForm2と同様に対応しています。

>>そういう複雑なことまでしたい処理なのでしょうか?
>
>上記は複雑ですか

複雑かどうかは、上記UserForm4のCommndButton1のClickイベントの記述を
見て感じてください。
[46066]で提示したStrConv関数のサンプルが複雑と感じるならば、これも
結構厳しいように思います。

>>そもそも、テキスト.txtからコード.xlsに変更する時点で何のためにかが
>>不思議で仕方ないのですが・・・
>不思議ですか 理由として
>1.いつも利用している表が今後そのまま使える。

使い方がよく理解できていないから、不思議に思っているだけかもしれません。
テキスト.txtとコード.xlsの関係もさっぱりわかりませんし・・・
会計専用ソフトのデータでしたら、テキスト.txtはそのソフトから出力され
たデータではないのでしょうか?
コード.xlsは、テキスト.txtとは、まったく別ものですか?
まったく別ものでしたら、私の取り越し苦労です。
同じもので、データを追加修正するにらば、それは、会計専用ソフトですべ
きでは?と経験上思うからです。

>>Excelシート上に展開した時点で、書き換えがよりしやすいデータになって
>>しまうことは、承知の上ですよね?
>これはどちらでも同じでしょうか。?

テキスト.txt と コード.xls との関係がわかりませんので、コメント
できません。

>>(テキストだと書き換えられないというわけではないのですが・・・)
>かみちゃんはテキストを利用した方がいいと、思うのでしょうか?

テキスト.txt と コード.xls が同じであれば、データの改ざんを少しでも
防ぐ観点から、テキスト.txtを使うべきと考えます。
(Excelシートに展開するメリットがまったくない)

>以上のような理由から是非検索機能を搭載しておきたいのです。
>今回も全角半角等Findは使えないですか?

UserForm4モジュールで対応しました。
Findメソッドも使えますが、テキスト.txtと同様の考え方を踏襲するために
あえて使っていません。
必要でしたら、Findメソッドのヘルプに使用例も載っていますから、まずは
しっかり読んでみてください。

3 hits

【46028】ユーザーフォームのリストを検索→転記 yasu 07/1/21(日) 17:02 質問
【46030】Re:ユーザーフォームのリストを検索→転記 かみちゃん 07/1/21(日) 17:15 発言
【46031】Re:ユーザーフォームのリストを検索→転記 yasu 07/1/21(日) 17:33 発言
【46037】Re:ユーザーフォームのリストを検索→転記 かみちゃん 07/1/21(日) 18:43 発言
【46039】Re:ユーザーフォームのリストを検索→転記 yasu 07/1/21(日) 20:29 発言
【46043】Re:ユーザーフォームのリストを検索→転記 かみちゃん 07/1/21(日) 20:46 発言
【46051】Re:ユーザーフォームのリストを検索→転記 yasu 07/1/21(日) 22:51 発言
【46052】Re:ユーザーフォームのリストを検索→転記 かみちゃん 07/1/21(日) 23:12 発言
【46057】Re:ユーザーフォームのリストを検索→転記 yasu 07/1/21(日) 23:32 発言
【46058】Re:ユーザーフォームのリストを検索→転記 かみちゃん 07/1/22(月) 0:09 発言
【46060】Re:ユーザーフォームのリストを検索→転記 yasu 07/1/22(月) 0:21 発言
【46061】Re:ユーザーフォームのリストを検索→転記 かみちゃん 07/1/22(月) 7:15 発言
【46063】Re:ユーザーフォームのリストを検索→転記 yasu 07/1/22(月) 10:21 発言
【46064】Re:ユーザーフォームのリストを検索→転記 yasu 07/1/22(月) 11:35 発言
【46067】Re:ユーザーフォームのリストを検索→転記 かみちゃん 07/1/22(月) 12:18 発言
【46070】Re:ユーザーフォームのリストを検索→転記 yasu 07/1/22(月) 13:01 発言
【46071】Re:ユーザーフォームのリストを検索→転記 かみちゃん 07/1/22(月) 13:09 発言
【46066】Re:ユーザーフォームのリストを検索→転記 かみちゃん 07/1/22(月) 12:04 発言
【46084】Re:ユーザーフォームのリストを検索→転記 yasu 07/1/22(月) 17:25 発言
【46085】Re:ユーザーフォームのリストを検索→転記 yasu 07/1/22(月) 18:06 発言
【46087】Re:ユーザーフォームのリストを検索→転記 かみちゃん 07/1/22(月) 18:12 発言
【46088】Re:ユーザーフォームのリストを検索→転記 yasu 07/1/22(月) 18:23 発言
【46086】Re:ユーザーフォームのリストを検索→転記 かみちゃん 07/1/22(月) 18:07 発言
【46090】Re:ユーザーフォームのリストを検索→転記 yasu 07/1/22(月) 18:45 発言
【46092】Re:ユーザーフォームのリストを検索→転記 かみちゃん 07/1/22(月) 20:48 発言
【46098】Re:ユーザーフォームのリストを検索→転記 yasu 07/1/22(月) 21:48 発言
【46099】Re:ユーザーフォームのリストを検索→転記 かみちゃん 07/1/22(月) 22:07 発言
【46100】Re:ユーザーフォームのリストを検索→転記 yasu 07/1/22(月) 22:44 発言
【46101】Re:ユーザーフォームのリストを検索→転記 かみちゃん 07/1/22(月) 22:55 発言
【46106】Re:ユーザーフォームのリストを検索→転記 yasu 07/1/23(火) 2:51 発言
【46107】Re:ユーザーフォームのリストを検索→転記 yasu 07/1/23(火) 3:03 発言
【46109】Re:ユーザーフォームのリストを検索→転記 かみちゃん 07/1/23(火) 7:33 発言
【46114】Re:ユーザーフォームのリストを検索→転記 yasu 07/1/23(火) 9:28 発言
【46117】Re:ユーザーフォームのリストを検索→転記 かみちゃん 07/1/23(火) 11:09 回答
【46120】Re:ユーザーフォームのリストを検索→転記 yasu 07/1/23(火) 14:09 発言
【46121】Re:ユーザーフォームのリストを検索→転記 かみちゃん 07/1/23(火) 14:42 発言
【46122】Re:ユーザーフォームのリストを検索→転記 yasu 07/1/23(火) 15:09 発言
【46124】Re:ユーザーフォームのリストを検索→転記 かみちゃん 07/1/23(火) 16:51 回答
【46129】Re:ユーザーフォームのリストを検索→転記 かみちゃん 07/1/23(火) 17:33 発言
【46133】Re:ユーザーフォームのリストを検索→転記 yasu 07/1/23(火) 20:22 発言
【46134】Re:ユーザーフォームのリストを検索→転記 かみちゃん 07/1/23(火) 20:40 発言
【46139】Re:ユーザーフォームのリストを検索→転記 yasu 07/1/24(水) 3:58 発言
【46140】Re:ユーザーフォームのリストを検索→転記 かみちゃん 07/1/24(水) 7:28 発言
【46157】Re:ユーザーフォームのリストを検索→転記 yasu 07/1/24(水) 20:44 発言
【46159】Re:ユーザーフォームのリストを検索→転記 かみちゃん 07/1/24(水) 20:51 発言
【46168】Re:ユーザーフォームのリストを検索→転記 yasu 07/1/25(木) 0:22 お礼

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