Excel VBA 質問スレ Part62at TECH
Excel VBA 質問スレ Part62 - 暇つぶし2ch994:デフォルトの名無しさん
19/09/15 09:57:44.01 tCz5SmrL0.net
イメージは975
excel から逃れられないひとが使うイメージ

995:デフォルトの名無しさん
19/09/15 10:12:56.75 IaPtpEN9x.net
スレチで申し訳ないがM言語を使える人ってどれくらいいるんかね
上司の謎采配でDB導入に待ったがかかってるからExcelでPowerQueryを組んでるんだが誰にも引き継ぎ出来なくなりそうで怖い

996:デフォルトの名無しさん
19/09/15 10:19:11.53 5uhhTsGd0.net
PowerQueryは謎な挙動が多すぎる

997:デフォルトの名無しさん
19/09/15 15:08:13.09 M+l28bS0d.net
VBAよりSQLの方が簡単だからSQL覚えておくと良いと思う。
SQLはどう使うかで難しくなるけど。

998:デフォルトの名無しさん
19/09/15 15:09:44.24 M+l28bS0d.net
>>988
M言語は全く分からん。
やってみても良いんじゃない?
様子見もありだけど。

999:デフォルトの名無しさん
19/09/15 15:30:29.07 vKevM/ZS0.net
ExcelのM言語ってMUIMPSのことなの? それとも全くの別物?

1000:デフォルトの名無しさん
19/09/15 16:59:17.31 5uhhTsGd0.net
M言語の仕様
英語だけど。
URLリンク(docs.microsoft.com)

1001:デフォルトの名無しさん
19/09/15 17:58:13.89 k9jPpUfmp.net
どうしても今すぐ仕事で使いたく、無知なまま質問することをお許し下さい。
ワンクリックでセルに色が付き(塗りつぶし)、色を付けたところを再度クリック(こちらはダブルクリックが理想)すると元に戻る(白くなる)ようにしたいです。
知恵袋で近い回答を見つけたのですが範囲の指定方法が分からず。ただ、こちらは白に戻すのをワンクリックで行うため理想とは若干異なります。一応載せておきます。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column <> 1 Then Exit Sub '※1
Select Case Target.Interior.ColorIndex
Case Is = xlNone
Target.Interior.ColorIndex = 3 '※2
Case Else
Target.Interior.ColorIndex = xlNone
End Select
End Sub
※1:数字の 1 はA列を意味します。C列なら 3 です。
※2:数字の 3 は赤で、4=緑、5=青、6=黄、7=ピンク、8=水色、です。
難しくなってしまうようでしたら元に戻す動作もワンクリックで大丈夫です。ご教示頂けると嬉しいです。

1002:デフォルトの名無しさん
19/09/15 18:10:30.21 ttkdv6CO0.net
>>977
高速化について調べていったら、最終的に行き着くのがSQLって感じ。
あとは、会社のPCにAccessが入ってないとか。

1003:デフォルトの名無しさん
19/09/15 18:16:17.99 gmNpe+SH0.net
>>994
SelectionChangeは選択範囲を変更した場合のイベントだね
BeforeDoubleClickに変えればいいんじゃない

1004:デフォルトの名無しさん
19/09/15 18:22:27.35 SlyZta/Pd.net
アクセスをDBと思ってる人は少数だろう

1005:デフォルトの名無しさん
19/09/15 18:27:50.10 k9jPpUfmp.net
>>996
ありがとうございます。beforedoubleclickに変更すると範囲指定できるようになるのでしょうか?このコードだと 1 と入力されているところが範囲指定の部分だと理解しているのですが、例えば("A1:C5")と入れてもエラーになってしまって、、

1006:デフォルトの名無しさん
19/09/15 18:34:44.00 gmNpe+SH0.net
>>998
ならこれだ。
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Call changeCellColor(0, Target) '0は空白色を指します。
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Call changeCellColor(3, Target) 'ColorIndexに対応。3=赤、4=緑、5=青, 6=黄など。
End Sub
Private Sub changeCellColor(IndexCode As Long, Target As Excel.Range)
Dim LimitedRange As Excel.Range
Set LimitedRange = Target.Worksheet.Range("A1:E10") 'A1:E10のセル範囲み動作するが、変更を。
If Not Excel.Application.Intersect(Target, LimitedRange) Is Nothing Then
Target.Interior.ColorIndex = IndexCode
End If
End Sub

1007:デフォルトの名無しさん
19/09/15 18:37:38.41 gmNpe+SH0.net
>>998
ちなみに元のコードは、選択セルが1行目でなければ変更、という意味になるんで座標入れてもNG.
座標で効果範囲を制限したい、ってちゃんと言っといた方がよかったね。

1008:デフォルトの名無しさん
19/09/15 18:42:08.05 VJ7AKcnf0.net
>>999
すごい…作ってくださりありがとうございます!!
今手元にパソコンがないので明後日職場で試してみます。お時間を割いて頂きありがとうございました!

1009:デフォルトの名無しさん
19/09/15 18:45:30.40 VJ7AKcnf0.net
>>1000
なるほど…そういう意味だったのですね!ご親切にありがとうございます!

1010:デフォルトの名無しさん
19/09/15 18:45:54.98 gmNpe+SH0.net
間違えた。元のコードは選択セルが1「列」目でなければ変更。
あとこれ、ドラッグ選択すると制限外セルの色まで変わっちゃうな。問題あれば
Target.Interior.ColorIndex = IndexCode を
Excel.Application.Intersect(Target, LimitedRange).Interior.ColorIndex = IndexCode に変えといて

1011:デフォルトの名無しさん
19/09/15 18:49:06.25 VJ7AKcnf0.net
>>1003
了解しました!どうもありがとうございます♪

1012:デフォルトの名無しさん
19/09/15 20:32:37.28 60BoiHy40.net
意味もわからずネットで見つけたコードを使う馬鹿の作ったVBA

1013:1001
Over 1000 Thread.net
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 83日 20時間 11分 0秒

1014:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch