Office中國(guó)論壇/Access中國(guó)論壇

標(biāo)題: 選擇指定區(qū)域---要求模塊 [打印本頁(yè)]

作者: pureshadow    時(shí)間: 2008-3-30 09:37
標(biāo)題: 選擇指定區(qū)域---要求模塊
這是歡歡爪MM出的題......
作者: pureshadow    時(shí)間: 2008-3-30 09:38
說(shuō)實(shí)在的,這題我只會(huì)用工作表事件去做……
模塊……[:41]
作者: fan0217    時(shí)間: 2008-3-30 09:56
錄制宏即可得到你想要的模塊。
作者: ganrong    時(shí)間: 2008-3-30 10:03
提示: 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽
作者: pureshadow    時(shí)間: 2008-3-30 12:48
問(wèn)題是錄制宏以后必須運(yùn)行宏才能獲得想要的結(jié)果,不能像工作表事件,可以直接以改變單元格內(nèi)容來(lái)觸發(fā)事件。
爪MM的意思是要直接通過(guò)模塊達(dá)到改變單元格內(nèi)容即可改變選取范圍的效果。
作者: 歡歡    時(shí)間: 2008-3-30 15:11
小妖是理解我的意思了, 通過(guò)錄制宏?你鼠標(biāo)選擇哪里,錄制后才知道的
循環(huán)更不可思憶,沒(méi)有結(jié)果,你循環(huán)哪里,有結(jié)果的地址,我就不要提這個(gè)問(wèn)題了。。。。。。希望高人指點(diǎn)
作者: Jonathan.K    時(shí)間: 2008-3-30 17:22
先問(wèn)問(wèn)為什么要逐本求末?
如果可以,利用類模塊來(lái)取得工作表事件
作者: andymark    時(shí)間: 2008-3-30 21:26
很久沒(méi)接觸EXCEL了, 對(duì)不了解EXCEL函數(shù)的來(lái)說(shuō), 錄制宏是個(gè)不錯(cuò)的選擇。
根據(jù)錄制的代碼進(jìn)一步修改成通用涵數(shù),我覺(jué)得應(yīng)該行得通。
作者: 歡歡    時(shí)間: 2008-3-30 22:12
小妖,你的師傅也這樣,,,,咳!,你們就根據(jù)題意解題把!原因一下說(shuō)不清楚哦!還提錄制宏。。。。。
作者: pureshadow    時(shí)間: 2008-3-30 22:53
[:28] 爪MM早就是代碼高手了,自己寫(xiě)了個(gè)五子棋的……
他的問(wèn)題那是需要高手中的高手來(lái)解決的,大家就別再提錄制宏了哈
作者: andymark    時(shí)間: 2008-3-30 23:36
錯(cuò)了, 不是錄制宏,  而是通過(guò)錄制宏所得的代碼修改成相應(yīng)的代碼
作者: andymark    時(shí)間: 2008-3-30 23:40
題目要求是按任意2個(gè)值來(lái)選定區(qū)域?qū)?br /> 并不說(shuō)對(duì)指定的區(qū)域進(jìn)行加減乘除之類的統(tǒng)計(jì)
作者: Pandy    時(shí)間: 2008-3-31 00:08
不好說(shuō)
作者: 歡歡    時(shí)間: 2008-3-31 14:47
這個(gè)解決了,會(huì)了就簡(jiǎn)單,呵呵
Sub DDQY() '得到選擇區(qū)域
Dim ra As Range
Set ra = Selection
startRow = ra.Row
endRow = ra.Row + ra.Rows.Count - 1
startColumn = Chr(ra.Column + 64)
endColumn = Chr(ra.Column + ra.Columns.Count - 1 + 64)
End Sub
作者: liwen    時(shí)間: 2008-3-31 14:49
用什么事件來(lái)運(yùn)行這個(gè)代碼呢?
作者: 歡歡    時(shí)間: 2008-3-31 14:56
再提一下:為什么下面代碼,顏色不完全顯示
Sub JJ()
Cells.FormatConditions.Delete
    Application.ScreenUpdating = False
ActiveWorkbook.Names.Add Name:="HHHH", RefersToR1C1:="=Sheet3!R12C4:R23C7"
    ActiveWorkbook.Names("HHHH").RefersToRange.Select
    With Selection
.FormatConditions.Add Type:=xlExpression, Formula1:="=ROW()=CELL(""ROW"")"
.EntireColumn.FormatConditions.Add Type:=xlExpression, Formula1:="=ROW()=CELL(""ROW"")"
.FormatConditions(1).Interior.ColorIndex = 38

    End With
    Application.ScreenUpdating = True
End Sub
作者: Jonathan.K    時(shí)間: 2008-3-31 16:49
關(guān)鍵是選擇區(qū)域的事件吧?
作者: tanhong    時(shí)間: 2008-3-31 20:33
用類模塊,將表事件封裝,這算不算用表事件
作者: tanhong    時(shí)間: 2008-3-31 22:31
歡歡提出的命題,不用表事件得出列,行首尾數(shù),我用類封裝表事件,不知道這樣實(shí)現(xiàn)算不算。見(jiàn)如下實(shí)例:
[attach]29380[/attach]

實(shí)例樣本:[attach]29381[/attach]
作者: 歡歡    時(shí)間: 2008-4-1 18:14
江版厲害,可是還是不能把數(shù)值掉用到模塊中用,看來(lái)只有用我14樓的代碼了,16樓的問(wèn)題有興趣的再作一下,大致意思是: 1.打開(kāi)任何工作表工作簿中你選擇區(qū)域區(qū)域可以填色,顏色可以在自己創(chuàng)建的窗體中手動(dòng)選擇 2.如果原有單元格區(qū)域有填充的顏色,不能更改 3.還應(yīng)保留復(fù)制粘貼功能 4.如下圖:我作出單列的單行的,就是沒(méi)有1列以上或者1行以上選擇區(qū)域是的變色沒(méi)有能實(shí)現(xiàn),看各位高手能把這個(gè)擂臺(tái)攻下嗎?
作者: Jonathan.K    時(shí)間: 2008-4-1 20:52
http://ctxi.cn/vvb/thread-31292-1-1.html
作者: 歡歡    時(shí)間: 2008-4-1 22:32
很感謝398,,     但是我想用vba'模塊作出來(lái),還有方法嗎
作者: Jonathan.K    時(shí)間: 2008-4-2 09:35
即使用工作表事件還是可以保留復(fù)制剪貼的功能,如下代碼
  1. Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal target As Range)
  2.     If Application.CutCopyMode <> False Then
  3.         Application.CutCopyMode = False
  4.         Call ColorBand(target)
  5.     End If
  6. End Sub
  7. Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal target As Range)
  8.     If Application.CutCopyMode = False Then
  9.         Call ColorBand(target)
  10.     Else
  11.         Exit Sub
  12.     End If
  13. End Sub
  14. Private Sub ColorBand(ByVal rngTarget As Range)
  15.     On Error Resume Next
  16.     [ChangeColor].FormatConditions.Delete
  17.     rngTarget.EntireRow.Name = "ChangeColor"
  18.     With [ChangeColor].FormatConditions
  19.         .Delete
  20.         .Add xlExpression, , "TRUE"
  21.         .Item(1).Interior.ColorIndex = 17
  22.     End With
  23. End Sub
復(fù)制代碼
只是,如果是用條件格式方式,將會(huì)刪除原有的所有條件格式
對(duì)用戶來(lái)是不是最好的選擇。
作者: ccccjf    時(shí)間: 2008-4-9 00:31
各位看起來(lái)都是EXCEL高人
適當(dāng)研究問(wèn)題是必須的,過(guò)于鉆牛角則大可不必。

試想,同樣的功能,同樣的效果,如果不用EXCEL,而用編程去實(shí)現(xiàn),不是很簡(jiǎn)單的小兒科嗎?為什么要讓EXCEL去干力不從心的事呢?費(fèi)了很大的勁,得到的無(wú)非是很簡(jiǎn)單的結(jié)果。

記得小時(shí)候上學(xué)時(shí),一同學(xué)回答問(wèn)題錯(cuò)誤(在兩點(diǎn)之間畫(huà)了幾條線,判斷那一條最短)而被老師批評(píng)。
當(dāng)時(shí)老師做了個(gè)讓人印象很深刻的比喻:假如A點(diǎn)有一只狗,B點(diǎn)放一塊肉,狗是跑直線過(guò)去吃肉呢?還是繞個(gè)大圈兒跑過(guò)去?
同學(xué)們齊聲回答:當(dāng)然是直線跑過(guò)去。
老師:對(duì)啊,狗都知道兩點(diǎn)之間直線最短。你們有些人怎么就不知道呢?

從此,我們學(xué)會(huì)了重要的一條:解決任何問(wèn)題,都要盡可能把復(fù)雜問(wèn)題簡(jiǎn)單化,而不是把簡(jiǎn)單問(wèn)題復(fù)雜化。
作者: tanhong    時(shí)間: 2008-4-9 17:27
原帖由 ccccjf 于 2008-4-9 00:31 發(fā)表
各位看起來(lái)都是EXCEL高人
適當(dāng)研究問(wèn)題是必須的,過(guò)于鉆牛角則大可不必。

試想,同樣的功能,同樣的效果,如果不用EXCEL,而用編程去實(shí)現(xiàn),不是很簡(jiǎn)單的小兒科嗎?為什么要讓EXCEL去干力不從心的事呢?費(fèi)了很大的 ...


你的觀點(diǎn)我很贊同哦.不過(guò)我也有不同的看法哦
其一、學(xué)習(xí)就是一個(gè)求知的過(guò)程,不明就問(wèn),不明就學(xué),多給自己?jiǎn)枎讉(gè)為什么也沒(méi)有什么不好;
其二、人總有一個(gè)好奇心,雖然有時(shí)候這種好奇會(huì)顯得過(guò)份的幼稚,但這正是打開(kāi)未知世界的一把很好鑰匙;
其三、學(xué)習(xí)前人的經(jīng)驗(yàn)的確可以少走很多的彎路,但如果我們總是跟著走,就會(huì)有太多的束縛,而永遠(yuǎn)無(wú)法超躍前人。
作者: 歡歡    時(shí)間: 2008-4-9 18:27
兩點(diǎn)的距離問(wèn)題都出來(lái)了,假如中間隔條深的河,小狗是不是也要去繞橋呢?  對(duì)這個(gè)問(wèn)題,我不在深入了,只有小妖mm和江版gg知道我的問(wèn)題的緣由,謝謝各位的支持。-------歡樂(lè)小爪
作者: Jonathan.K    時(shí)間: 2008-4-15 11:02
看你20樓錄制的動(dòng)畫(huà)來(lái)看,用的是andysky的工具箱,但不覺(jué)得反應(yīng)慢嗎?
你所認(rèn)為的是用 selectionchange事件將導(dǎo)致復(fù)制粘貼功能失效
下面還有一個(gè)解決辦法,在fans論壇里有討論,如下貼子。
http://www.officefans.net/cdb/viewthread.php?tid=91954
作者: 歡歡    時(shí)間: 2008-4-16 21:21
我在學(xué)作andysky工具箱,你可以對(duì)比一下圖片,還是有區(qū)別的,謝謝你的再次關(guān)心該題目!!
作者: andysky    時(shí)間: 2009-3-5 15:36
沒(méi)看出來(lái)這有什么值得討論




歡迎光臨 Office中國(guó)論壇/Access中國(guó)論壇 (http://ctxi.cn/) Powered by Discuz! X3.3