Excel VBA質問箱 IV

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

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


8427 / 13646 ツリー ←次へ | 前へ→

【33336】選択範囲から一部解除 サザエ 06/1/9(月) 15:42 質問[未読]
【33337】Re:選択範囲から一部解除 かみちゃん 06/1/9(月) 15:43 発言[未読]
【33338】Re:選択範囲から一部解除 サザエ 06/1/9(月) 15:56 発言[未読]
【33339】Re:選択範囲から一部解除 [名前なし] 06/1/9(月) 16:04 発言[未読]
【33341】Re:選択範囲から一部解除 サザエ 06/1/9(月) 16:27 発言[未読]
【33351】Re:選択範囲から一部解除 [名前なし] 06/1/9(月) 17:06 回答[未読]
【33361】Re:選択範囲から一部解除 bykin 06/1/9(月) 17:59 発言[未読]
【33366】Re:選択範囲から一部解除 サザエ 06/1/9(月) 18:59 お礼[未読]
【33370】Re:選択範囲から一部解除 bykin 06/1/9(月) 20:54 発言[未読]
【33365】Re:選択範囲から一部解除 サザエ 06/1/9(月) 18:51 お礼[未読]
【33371】Re:選択範囲から一部解除 ichinose 06/1/9(月) 20:58 発言[未読]
【33372】Re:選択範囲から一部解除 ichinose 06/1/9(月) 21:05 発言[未読]

【33336】選択範囲から一部解除
質問  サザエ  - 06/1/9(月) 15:42 -

引用なし
パスワード
   まいどお世話になっております。
[A:C](A列からC列を選択)から[A1:C3]
だけを選択解除したいのですが、方法ありませんか?

【33337】Re:選択範囲から一部解除
発言  かみちゃん  - 06/1/9(月) 15:43 -

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

>[A:C](A列からC列を選択)から[A1:C3]
>だけを選択解除したいのですが、方法ありませんか?

何がしたいのでしょうか?
A4:C65536 を選択するのではいけないのですか?

【33338】Re:選択範囲から一部解除
発言  サザエ  - 06/1/9(月) 15:56 -

引用なし
パスワード
   >何がしたいのでしょうか?
>A4:C65536 を選択するのではいけないのですか?

例では簡単にしていましたが
[A:G]からA1,B5,F360,E240とかバラバラに解除したいものが
あった場合それらをさけて選択範囲を複数指定するのが
大変なので、解除の方法が無いものか訪ねました。

【33339】Re:選択範囲から一部解除
発言  [名前なし]  - 06/1/9(月) 16:04 -

引用なし
パスワード
   ▼サザエ さん:
>[A:G]からA1,B5,F360,E240とかバラバラに解除したいものが
>あった場合それらをさけて選択範囲を複数指定するのが
>大変なので、解除の方法が無いものか訪ねました。
なんでそんなことをする必要があるのですか?

【33341】Re:選択範囲から一部解除
発言  サザエ  - 06/1/9(月) 16:27 -

引用なし
パスワード
   >なんでそんなことをする必要があるのですか?

1つの項目につき、2,3個のデータしかない項目がたくさんあった場合
一列に何個かの項目を作ると表をスクロールせずに全てを見渡せる表が出来るためです。データの更新時、いったんデータを全て削除したいんですが、項目名のセルだけは残るように選択解除したいんです。

あとグラフを画像として残す事は出来ませんか?

【33351】Re:選択範囲から一部解除
回答  [名前なし]  - 06/1/9(月) 17:06 -

引用なし
パスワード
   ▼サザエ さん:
>項目名のセルだけは残るように選択解除したいんです。
全部消して、項目名だけもう一度書き込むとかじゃだめですか?

>あとグラフを画像として残す事は出来ませんか?
グラフを選択して、Shiftを押しながらメニューの編集→「図のコピー」を選択
編集→貼り付けで画像になります。

【33361】Re:選択範囲から一部解除
発言  bykin  - 06/1/9(月) 17:59 -

引用なし
パスワード
   こんばんわ。

目安箱に置いて頂いてる、拙作のアドイン「Tool★彡」↓に
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=101;id=FAQ

選択範囲一部解除機能があるんで、よかったら試してみておくれやす。

>グラフを画像として残す

JPEGやGIFに変換して保存する機能も付いてます。

宣伝だけですんまへーん(^^;;
ほなっ!

【33365】Re:選択範囲から一部解除
お礼  サザエ  - 06/1/9(月) 18:51 -

引用なし
パスワード
   ▼[名前なし] さん:
>▼サザエ さん:
>>項目名のセルだけは残るように選択解除したいんです。
>全部消して、項目名だけもう一度書き込むとかじゃだめですか?
申し訳ありませんが、それくらいなら自分でも思いつきます。


>グラフを選択して、Shiftを押しながらメニューの編集→「図のコピー」を選択
>編集→貼り付けで画像になります。
まさにこの答えを待っていました。ありがとうございます。

【33366】Re:選択範囲から一部解除
お礼  サザエ  - 06/1/9(月) 18:59 -

引用なし
パスワード
   ▼bykin さん:
>こんばんわ。
>
>目安箱に置いて頂いてる、拙作のアドイン「Tool★彡」↓に
>http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=101;id=FAQ
>
>選択範囲一部解除機能があるんで、よかったら試してみておくれやす。
早速使って見ました。すごいです
がVBAで記述できないのがすごく残念です。
大量のデータを扱うときこの機能がVBAで使えたら、
もう絶対手放せなくなると思います。

ちなみにこういったものはどのように作っているんですか?
VC++とかで結構ディープな事まで知らないと出来ないものなんですか?

【33370】Re:選択範囲から一部解除
発言  bykin  - 06/1/9(月) 20:54 -

引用なし
パスワード
   こんばんわ。

>ちなみにこういったものはどのように作っているんですか?
>VC++とかで結構ディープな事まで知らないと出来ないものなんですか?

VBAで書いてまっせ(笑)
「Tool★彡」のReadMeを読んでもろたらわかるけど、このアドインはこことかの
VBAのQ&Aサイトで回答した内容を元に作ってるんです。
但し、DLLにするためにOfficeXP-Developerっていうバージョンを使ってます。

セル選択一部解除の元々の回答スレッドは↓
http://www.keep-on.com/excelyou/2003lng1/200306/03060097.txt
(コードの中の半角の「>」は「>」に変換してください)
ここからいろいろ発展させてます。

ま、参考にしてみてな。
ほな。

【33371】Re:選択範囲から一部解除
発言  ichinose  - 06/1/9(月) 20:58 -

引用なし
パスワード
   こんばんは。

>>>項目名のセルだけは残るように選択解除したいんです。
VBAでやるなら、
'=====================================================
Sub test()
  Range("a1:g2000").Value = "aaaaa"
  Set rng = rvsrng(Range("a1:g2000"), Range("A1,B5,F360,E240"))
  rng.Value = ""
End Sub
'========================================================================
Function rvsrng(rng1 As Object, rng2 As Object, Optional osht As Boolean = False) As Range
'rng1のセル範囲の中でrng2以外のセル範囲を取得する
'input rng1,rng2---セル範囲
'    osht --- false -対象シートはアクティブシート True---対象シートはアクティブシートではない
'output rvsrng:rng1のリバースのセル範囲
  Const limlen = 255
  Dim rng As Range
  Dim add1 As String
  Dim f_flg As Boolean
  Set rvsrng = rng1
  If Not Application.Intersect(rng1, rng2) Is Nothing Then
    f_flg = False
    Set rvsrng = Nothing
    add1 = String(300, "a")
    For Each rng In rng1
     If Application.Intersect(rng, rng2) Is Nothing Then
       If Len(add1 & "," & rng.Address(False, False, xlA1, osht)) > limlen Then
        If f_flg = True Then
          GoSub set_rng_to_rvsrng
        Else
          f_flg = True
        End If
        add1 = rng.Address(False, False, xlA1, osht)
       Else
        add1 = add1 & "," & rng.Address(False, False, xlA1, osht)
       End If
     End If
    Next rng
    GoSub set_rng_to_rvsrng
  End If
  Exit Function
set_rng_to_rvsrng:
'add1で示されるセル範囲をRvsrngに追加する
'in:add1 out:rvsrng
  If Not rvsrng Is Nothing Then
    With Application
     Set rvsrng = .Union(rvsrng, .Range(add1))
    End With
  Else
    Set rvsrng = Application.Range(add1)
  End If
  Return
End Function

これで出来ますが・・・。

>>全部消して、項目名だけもう一度書き込むとかじゃだめですか?

↑ここで言う「全部」にあたるセル範囲が広範囲で
「項目名」に当たるセル範囲が10や20なら、
上記のロジックの方が断然早いと思いますけどね!!

【33372】Re:選択範囲から一部解除
発言  ichinose  - 06/1/9(月) 21:05 -

引用なし
パスワード
   >
>>>全部消して、項目名だけもう一度書き込むとかじゃだめですか?
>
>↑ここで言う「全部」にあたるセル範囲が広範囲で
>「項目名」に当たるセル範囲が10や20なら、
>上記のロジックの方が断然早いと思いますけどね!!
誤解があるといけないので、はっきりと・・
この上記のロジックとは

[名前なし] さんのおっしゃっている

>>>全部消して、項目名だけもう一度書き込むとかじゃだめですか?

というロジックのことですよ!!

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