いつもお世話になっております。
初心者です。
リストボックスのダブルクリックイベントから他のシートを開くことは難しいでしょうか?
A列にシート名の一覧を表示するマクロを組んでいます。
そしてそのシートの特定のセルをB~F列に反映させています。
A列 B列 C列 D列 E列 F列
sheet1 りんご すいか メロン バナナ みかん
sheet2 苺 梨
検索のマクロを組み、リストボックスに検索結果を表示させることはできました。
「すいか」と検索をかければリストボックスに「すいか」が表示されます。
そこから、リストボックスの「すいか」をダブルクリックしてA列にあるシート名のシート(sheet1)に飛びたいのですが、可能でしょうか?
最初はユーザーフォームを使うつもりがなくハイパーリンクを貼っていました。
(=IFERROR(HYPERLINK("#"&A1&"!A1",),"INDIRECT($A1&"!E80")"))
他の者からユーザーフォームを使ってほしいとの要望があり、作成しているのですが、
私一人の力ではできそうもなく…
お力を貸していただけると幸いです。宜しくお願い致します。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
#4の回答者です。
>ImageListというものを知らなかったので再度どういった形がいいのか検討してみます!
昨日、画像は取っておいたけれども、アップロードしてありませんでしたので、本日上げておきます。とりあえず、今のものを完成させていくのが一番だと思います。
UserForm も作り方によっては、思った以上になります。
No.4
- 回答日時:
#2の回答者です。
実際の所、ご質問者さんの提示された文章では、そのままVBAマクロには出来上がりません。UserForm のListBox がどのようになっているとか、分からないままに、こちらは、自分勝手な判断の元にマクロコードにしただけです。ただ、そういう状況は、決して好ましい状態であるわけではありません。
したがって、#2で書かれたものが、そのままご質問者さんの状況に適用できるはずもありません。それだけは、あらかじめ、分かっておいてください。得てして、私はこういう時、質問者さんの思っているものに近づけようとして、大半は、裏目にでることが多いのです。
ListIndex というのは、あくまでも、0,1,2,3,4,...と続く数字です。ListBox の列を増して使えばよいという考えもあろうとは思いますが、あまり見栄えがよくありません。ImageList側はアドレス等を埋め込むことはできますが、あまり数が増えたりすると、また見栄えがよくありません。
>行番号が取得できればできそうなのですが、リストボックスの行番号ではなく、シートのセルのアドレスを取得する方法はありますでしょうか?
配列変数側にアドレス
Listbox のItem に、名称を入れる
-ListIndex と、配列変数とは、添字で、つながりをもたせます。
後は、どの程度、理解していただけるかによって違ってくると思います。
No.3
- 回答日時:
No1です。
ん~
シートを移動する為に、わざわざユーザーフォーム起動して
検索して、ユーザーフォーム閉じて
希望したシートへ自動で移動させる。
あまり、かっこいいとも思えないのですが
別案です。
シートにあるシートイベントをご存知ですが。一例です。
シート名のタブを右クリックして
コードの表示を選択してVBエディターを起動
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Taregt.Address="$A$1" Then
Sheets(Range("A1").Value).Activate
End If
End Sub
を張り付けて閉じると
A1セルを ダブルクリックすると、A1セルに表示されているシートへ移動します。
チェンジイベントを使うと
Private Sub Worksheet_Change(ByVal Target As Range)
If Taregt.Address="$E$80" Then
Sheets(Range("A1").Value).Activate
End If
End Sub
とかして、E80セルに検索する値を入れて
その結果で移動する事も可能です。
もし、ユーザーフォームでかっこよく作業をしたいなら
シートを移動した後の作業まで、ユーザーフォームで出来るようにします。
ありがとうございます!
シートの移動の他にもシートの追加などの他の機能も一応つけてあります。
確かに入力までユーザーフォームでできたらかっこいいですよね。
でも私の技術ではそこまでできそうにありませんT_T
参考にさせていただいて頑張ってみます!
No.2
- 回答日時:
こんにちは。
お話のようすからすると、どうも、Listbox ではなくて、ImageList のような気がします。
まあ、それは、その場に適したものを使えればどちらでも良い話ですが。
>検索のマクロを組み、リストボックスに検索結果を表示させることはできました。
>「すいか」と検索をかければリストボックスに「すいか」が表示されます。
>そこから、リストボックスの「すいか」をダブルクリックしてA列にあるシート名のシート(sheet1)に飛びたいのですが、可能でしょうか?
Listbox に、検索結果といっても、検索したものは、ひとつしかないものなら、ListBox に出す意味がないような気がします。
こちらが理解した範囲で、やってみました。
なお、UserFormを出しっぱなしでワークシートの作業をする時、UserFormのモードレスモード以外の方法としては高等技術ですが、方法はあります。
>A列 B列 C列 D列 E列 F列
>sheet1 りんご すいか メロン バナナ みかん
>sheet2 苺 梨
現在、以下のマクロは、この文字そのものを探しています。
例えば、Sheet1 とか、Sheet2 とか選択すると、それぞれのリストが出てくるということも考えられるのですが、質問の内容からは、それ以上は、読み取れませんでした。
'//ユーザーフォームモジュール
Private arSrch() As Variant
Private cnt As Long
Private Sub CommandButton1_Click()
Dim srchTxt As Variant
Dim c As Range
Dim FoundAddress As String
Dim ws As Worksheet
If Me.TextBox1.Text = "" Then Exit Sub
srchTxt = Me.TextBox1.Text
For Each ws In ThisWorkbook.Worksheets
With ws.UsedRange
Set c = .Find(What:=srchTxt, LookIn:=xlValues, LookAt:=xlWhole)
If Not c Is Nothing Then
FoundAddress = c.Address(0, 0, , True)
Me.ListBox1.AddItem c.Value
TextBox1.Value = ""
ReDim Preserve arSrch(cnt)
arSrch(cnt) = FoundAddress
cnt = cnt + 1
Exit For
End If
End With
Next ws
If c Is Nothing Then
MsgBox srchTxt & "は見つかりませんでした。", vbExclamation
TextBox1.Value = ""
Else
Set c = Nothing
End If
End Sub
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim i As Long
Dim adr As String
Dim dst As String
Cancel = True
i = ListBox1.ListIndex
adr = arSrch(i)
dst = Replace(adr, "[" & ActiveWorkbook.Name & "]", "")
If dst <> "" Then
If MsgBox(ListBox1.Value & "に飛びます。", vbOKCancel) = vbCancel Then Exit Sub
Application.Goto Range(dst)
End If
End Sub
'///
'// '標準モジュール等(モードレスにて、UserForm起動)
Sub MyUserForm_Start()
UserForm1.Show vbModeless 'モードレスモード
End Sub
'///
ありがとうございます!
素人なため解読に時間がかかりそうなので、取り急ぎお礼を。
明日やってみます!
こんなに考えていただけるなんて本当に感謝です。
No.1
- 回答日時:
>リストボックスのダブルクリックイベントから他のシートを開くことは難しいでしょうか?
>A列にあるシート名のシート(sheet1)に飛びたいのですが
ユーザーフォームが開いた状態ですよね。
ユーザーフォームが開いている間は、シートの操作は出来ないですよね。
つまり無理ですし、出来たとしてもシート上にユーザーフォームがあるので使いにくいだけでしょう。
>他の者からユーザーフォームを使ってほしいとの要望があり
ユーザーフォームを使って何かをしてほしい、改善してほしい
わけですよね。
シート上でセルを直接操作したが、使いにくい?間違ったセルを操作してしまう?
もう少し、目的をはっきりさせた方が良いと思います。
ありがとうございます。
目的は…かっこよくしたい、との事です…
私も式が壊されるのは困るのでできればユーザーフォームに切り替えたいところです。
検索をかけず、一覧で表示する場合は何とかできました。
listindexで行番号を取得しセルに書き出してoffset関数でシート名があるセルを拾って飛ぶことができました。
でも検索をかけると
りんご
すいか
メロン
と縦に表示されてしまい、listindexとエクセルのシートの行番号が一致せず、できませんでした。
行番号が取得できればできそうなのですが、リストボックスの行番号ではなく、シートのセルのアドレスを取得する方法はありますでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VLOOKUP が機能しない、その原因は何 ? 8 2022/10/19 12:06
- Excel(エクセル) ユーザー定義について質問です。 2 2023/06/28 13:21
- Visual Basic(VBA) エクセルのマクロで対象ごとにシート分けしてその内容をセルに書き込みたい 9 2022/08/24 13:23
- Excel(エクセル) 【エクセル」 特定のセルで条件抽出した列を、別シートに上から詰めて表示したい。 8 2022/04/08 16:00
- Excel(エクセル) excelで検索した商品の画像(ネットワーク上の)を表示させたい。 3 2023/06/28 00:32
- Excel(エクセル) エクセルVLOOK関数について 3 2022/07/05 08:45
- Excel(エクセル) Excel セルに入っている日付を参照して、別シートのリストを表示させたい 1 2022/04/12 17:02
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Excel(エクセル) excelにおける転記マクロの書き方 2 2023/05/12 03:16
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
リストボックスの時はリンク先に飛べない?
Access(アクセス)
-
Excel VBAのリストボックスの値を他のフォームに反映させる方法を教えてください。
Visual Basic(VBA)
-
VBA リストボックスをダブルクリックしデータを修正したいのですが…。
Visual Basic(VBA)
-
-
4
エクセルVBAでテキストボックスに入力があった場合のみ、ワークシートに転記したい
Visual Basic(VBA)
-
5
リストボックスをクリックすると、他フォームに値代入
Excel(エクセル)
-
6
複数選択のListBoxでClickイベントが拾えません
Visual Basic(VBA)
-
7
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
8
エクセル VBA ユーザーフォーム リストボックスで選択した値をテキストボックスに自動表示
Visual Basic(VBA)
-
9
VBA。リストボックスの値を別のユーザーフォームのテキストボックスに反映したい。
Access(アクセス)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelの数式について教えてくだ...
-
エクセルの「赤」の印刷がうま...
-
エクセル おすすめフォント
-
pdfの表をexcelにはりつけて計...
-
[オプション]の[アクセスビリテ...
-
Excelのデーターを消して保存し...
-
エクセルの「入力規則」のプル...
-
エクセルで特定のセルに入力が...
-
関数の説明
-
CSVファイルについて質問です。
-
エクセルで不等号記号(≠)が上に...
-
UNIQUE関数が使えないバージョ...
-
Excelについて
-
【マクロ】名前を保存する際に...
-
エクセルであるセルに数字を入...
-
Excelにいついて質問です。
-
Excelの関数について教えてくだ...
-
Excel ピボットテーブルで日付...
-
Excelでセルの値が同じか...
-
エクセルでの作業計算方法について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA、別ブックへ転記す...
-
エクセルでの作業計算方法について
-
時間によってファイル名が変わ...
-
【関数】適切な文字数の数字を...
-
Excelについて教えてください
-
エクセル初心者です 関数の入れ...
-
【マクロ】ファイル名の変更に...
-
UNIQUE関数が使えないバージョ...
-
エクセルの計算
-
【関数】先頭だけにある、半角...
-
Excelで、決まった行を繰り返し...
-
Excelでセルの値が同じか...
-
LOOKUP関数を使えばいいのでし...
-
Excel
-
はがきについて。
-
エクセルの条件付き書式につい...
-
エクセルのデーターが2か月前の...
-
エクセル②
-
エクセルで「-0.0」と表示さ...
-
Microsoft1Officeの互換ソフト...
おすすめ情報