[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『特定の文字のときは転記しない方法について』(yasu)
いつも参考にさせていただいています。
以下のマクロなのですがリストから選択し転記しますが、
特定項目「小計」・「値引き」・「合計」は.Offset(, 1)と(,2)は転記
させたくないのですが、可能でしょうか?
よろしくお願いします。
Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)
ActiveCell.Value = ListView1.SelectedItem ActiveCell.Offset(, 1).Value = 1 ActiveCell.Offset(, 2).Value = "式" ActiveCell.Offset(2, 0).Select Unload Me End Sub
< 使用 Excel:Excel2013、使用 OS:Windows7 >
環境がないので書いただけですが。
Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem) ActiveCell.Value = ListView1.SelectedItem Select Case ListView1.SelectedItem Case "小計", "値引き", "合計" 'nop Case Else ActiveCell.Offset(, 1).Value = 1 ActiveCell.Offset(, 2).Value = "式" End Select ActiveCell.Offset(2, 0).Select Unload Me End Sub
(β) 2015/11/23(月) 14:15
(yasu) 2015/11/23(月) 14:33
本題からズレる話で恐縮なのですが、 仮引数のItem が使われていないことに違和感があるんですけど、 相場なんでしょうか?
※ListViewって、私は使った経験が無いド素人です m(__)m
(半平太) 2015/11/23(月) 14:55
>>仮引数のItem が使われていないことに違和感があるんですけど、 >>相場なんでしょうか?
確かにいわれてみれば・・ですね。 ここは Item.Text を使うのがいいのでしょうかね? たとえば、シートモジュールの BeforeDoubleClick で Target を使わず ActiveCell を使うようなものですか。
相場は、よくわかりません。
そもそも、ListView に関しては まだ、その使用権利がグレーゾーンにおさまっていた(おさまっていると自己解釈?)2003時代に書いたもので使っていましたが 今は、基本的にライセンスの問題で新しいコントロールとしては挿入できないようですし、こういった質問がアップされても 回答するにはつらい状況になってますねぇ。
(β) 2015/11/23(月) 16:50
コメントありがとうございます m(__)m
>たとえば、シートモジュールの BeforeDoubleClick で Target を使わず ActiveCell を使うようなものですか。
ええ。
>相場は、よくわかりません。 : : > 今は、基本的にライセンスの問題で新しいコントロールとしては挿入できないようですし、 > こういった質問がアップされても 回答するにはつらい状況になってますねぇ。
そうなんですか、了解です。ど素人な質問ですみませんでした。
(半平太) 2015/11/23(月) 17:35
ネットで解説を見ると「listboxの亜種」らしいので
複数選択した場合のSelectedItemは、collectionを返すのかな?
と思います。
(SelectedItemsと複数形になるほうが自然な感じもしますが。)
Itemは常に単一オブジェクトですね。
( 佳 ) 2015/11/23(月) 18:07
↑ あっ、私が申し上げた 「こういった質問」とは、(yasu)さんがアップされた 「ListView に関する質問」という意味です。(汗) (β) 2015/11/23(月) 18:09
>>複数選択した場合のSelectedItemは、collectionを返すのかな? >>と思います。
詳しくないのですが、MultiSelect を True にしても 行を選択した時点で ItemClickイベントが発生し その際の SelectedItem は 引数で渡された Item と全く同じ、単一オブジェクトでした。
(β) 2015/11/23(月) 18:56
>>大変便利だと思うのですが、新たに組み込むのは問題有りなのでしょうか?
詳しくはないのですが、なんとなく、過去にそう言われていたような記憶が・・・
同じようなコメントを
[[20150126023341]] 『転記方法の切り換えて利用するには』(KK)
でも申し上げたのですが、 βの勘違い、一人合点かもしれません。
↑のトピでも参照されているページを含めて
https://social.msdn.microsoft.com/forums/ja-JP/283b4973-f6f7-47e1-a573-1b70b07d2742/listviewuserform
MSのサイトで利用方法が掲載されていますので、問題はないのかもですね。
(β) 2015/11/24(火) 05:30
MSのサイトで利用方法が掲載されていますので、問題はないのかもですね。 良かったです
安心して利用出来そうです。
今後共よろしくお願いします。
ありがとうございました。
(yasu) 2015/11/24(火) 10:30
MultiSelectをTrueにして複数選択した状態で、
SelectedItemは、最後にクリックした項目単体を返しました。
一方Itemは、、、、不思議な動作になりました。
5行目をクリックして、それからShiftキーを押さえて2行目をクリックすると
2行目、3行目、、、と上から順番に4つのオブジェクトが渡されて来て、
最後にもう一度2行目のオブジェクトが来ます。
こんな仕様のものは初めて見ます。
1度のイベントで、単体のオブジェクトが複数渡されるなんて。
....もしかしてこのイベントは作りかけではないのか? という考えさえ起きてしまいます。
いやぁ珍しいものを見せていただきました ^^
明日また時間が取れれば、もう少し突っ込んで眺めてみたいと思います。
( 佳 ) 2015/11/24(火) 20:34
漢字、半角/全角 ひらがな/カタカナ、英数文字以外を削除 上手くソートできるか不明
Private Sub UserForm_Initialize() Dim a() As String, n As Long, e, temp As String Dim i As Long, ii As Long With CreateObject("VBScript.RegExp") .Global = True .Pattern = "[^一-龠ぁ-んーァ-ヶA-Za-z0-9\w]+" For Each e In Range("h2", Range("h" & Rows.Count).End(xlUp)).Value temp = .Replace(e, "") If temp <> "" Then n = n + 1 ReDim Preserve a(1 To n): a(n) = temp End If Next End With For i = 1 To n - 1 For ii = i + 1 To n If a(i) > a(ii) Then temp = a(i): a(i) = a(ii): a(ii) = temp End If Next Next Me.ListBox1.List = a End Sub (seiya) 2015/11/24(火) 20:38
To seiyaさん
[[20151124175918]] 『略称を無くして読み込むには』(taka)
へのレスではないですか?
(β) 2015/11/24(火) 20:50
あれ?間違えましたね..
失礼しました。 (seiya) 2015/11/24(火) 21:32
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.