お世話になります。
複数行にわたって選択しているときに実行するとエラーメッセージを出したいとします。現状では、
If Selection.Rows.Count <> 1 Then
subMsgBox "You are selecting two or more rows"
Exit Sub
End If
としていますが、これではドラッグで連続した行を選択している場合には正しくエラーになりますが、Ctrlクリックでポンポンと飛ばし飛ばしクリックしている場合はエラーになりません。
If Selection.Cells.Count <> 1 Then
だと同じ行の複数個所を選んだ場合もエラーになってしまいます。
If Selection.Cells.EntireRow.Count <> 1 Then
If Selection.Cells.EntireRow.Rows.Count <> 1 Then
でもCtrl+クリックの場合にダメです。
どうしたらいいでしょうか。
よろしくお願いします。

A 回答 (2件)

こんなんでどうすか



Sub test()
Dim TempRG As Range
Dim TempRow As Long

TempRow = Selection.Row

'選択しているセルのアドレスをRangeで包んでループ
For Each TempRG In Range(Selection.Address)
If TempRG.Row <> TempRow Then
MsgBox "You are selecting two or more rows"
Exit Sub
End If
Next

End Sub
    • good
    • 0
この回答へのお礼

みなさん、回答ありがとうございます。
マッチポンプですみません、過去の質問の回答を眺めていたらこれでいしのげそうな気がします。

If Intersect(Selection.Cells.EntireRow, 1).Count <> 1 Then
MsgBox "You are selecting two or more rows"
Exit Sub
End If

みなさんのコードも研究します。
ありがとうございます!

お礼日時:2009/04/16 15:45

'MSDNライブラリのApplication.SelectionがObjectで


'つなげられるプロパティが書かれていないってのは問題があると思う。
'いくつかのサイトではAreasというプロパティがあると
'述べていたのでそれを使って自力で実装した

Option Explicit

Sub hoge()
Dim x As Collection
Dim i As Range
Dim j As Object 'Cell型がないようなので
Dim k As Integer
Dim flag As Boolean

Set x = New Collection
For Each i In Selection.Areas '1から始まるらしい
For Each j In i.Cells
If Not CollectionhasItem(x, j.Row) Then
x.Add (j.Row)
End If
Next j
Next

If x.Count > 1 Then
MsgBox ("You selected more than 2 rows")
End If

End Sub

Function CollectionhasItem(ByRef c As Collection, ByVal v As Integer)
Dim i As Integer
'For Each i In c ' For Each i in cってかけないらしい
'GenericsのあるVB.NETならともかく
For i = 1 To c.Count
If c(i) = v Then
CollectionhasItem = True
Exit Function
End If
Next
CollectionhasItem = False



End Function
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

今、見られている記事はコレ!

  • たまランチ:第56話「サンドウィッチ」

    外ランチを愛してやまない元気な女子社員・たまちゃん(26)。オシャレなお店より「安くておいしい」お店が大好き! そんな女子力低めなたまちゃんの、色気より食い気な日々をつづります。

  • エルフ田さん:第79話「いい汗流そう!」

    エルフ(ファンタジーとかに出てくる長寿の種族)の「エルフ田」と、ただの人間である女子社員2人による日常ギャグ。エルフならではのズレたツッコミでバシバシ人間界の話題を斬っていきます。

  • 松屋トマトカレーがカップめんで復活!さっそく食べてみた

    エースコックが牛丼チェーンとコラボした「松屋監修 夏野菜入りトマトカレー味ラーメン」が27日より発売となった。 全国に1000店舗以上展開する松屋が2015年まで販売した夏季限定の人気商品が、松屋のトマトカレー...

  • 弁護士がまじめに答える!ピンポンダッシュは○○罪!?

    皆さんが子どもの頃は、どのようなイタズラが流行っていただろうか。イラズラの中にもくだらなくて許してしまうものもあれば、被害が及ぶ危険があるために放置しておけないものもある。しかし、両者の区別は人によっ...

  • 危険な国はどこ?デング熱の流行状況が知りたい!

    半袖を着るこの季節に気を付けたいのが、蚊から媒介する感染症「デング熱」。2014年、およそ70年ぶりに国内で感染例が報告されたのは記憶に新しい。 「教えて!goo」には、「デング熱、発症する人としない人の違い...

おしトピ編集部からのゆる~い質問を出題中

お題をもっとみる

このQ&Aを見た人が検索しているワード


このカテゴリの人気Q&Aランキング

おすすめ情報

カテゴリ