You are on page 1of 6

UsedRange

1./ Mc sau y s t mu cc cng thc trong vng s dng ca trang tnh ang kch hot
Sub ColorAllFormulae()
ActiveSheet.UsedRange.SpecialCells(xlCellTypeFormulas).Interior.ColorIndex = 6
End Sub
2./ Vng giao nhau vi cc ct cho trc & t tn 1 vng d liu
Ta kho st tip Mc sau:
Sub UsedRange()
Dim lRow As Long, bCol As Byte
2 lRow = Worksheets("S1").UsedRange.Rows.Count
3 bCol = Worksheets("S1").UsedRange.Columns.Count
With ActiveSheet
5 MsgBox Intersect(.Range("c:q"), .UsedRange).Address
End With
7 ThisWorkbook.Names.Add "Matrix", "=!r2c2:r" & lRow & "c" & bCol
'expression.Add(Name, RefersTo, Visible, McType, ShortcutKey, Category, NameLocal, _
RefersToLocal, CategoryLocal, RefersToR1C1, RefersToR1C1Local)
End Sub
Dng lnh 2 c hiu l s dng cha d liu ca Sheets(S1) em gn v bin lRow
Tng t dng lnh 3: bin bCol s cha s ct c d liu;
Dng 5 cho ta bit a ch gioa nhau gia vng cha d liu & cc ct t C n Q;
Dng 7 cc t dng 2, ct 2 n cui phi nht c gn tn l Matrix
3./ Duyt cc trong 1 hng & trong tt c cc ct ca vng cha d liu
Sub OutputAddress()
Dim myRange As Range, rRng As Range, cRng As Range
Dim intUnit As Integer
Dim StrR As String, StrC As String, Xh As String
Xh = Chr(10) & Chr(13)
Set myRange = ActiveSheet.UsedRange
For Each rRng In myRange.Rows
StrR = StrR & rRng.Address & Xh
For Each cRng In rRng.Cells
StrC = StrC & rRng.Address
Next
Next
MsgBox StrR, , "Row"
End Sub
4./ Nhn ton b cc cha cng thc s vi 1 gi tr
Sub NegativeAllNumberFormula2()
On Error Resume Next
With Range("IV65536")
.Value = -1
.Copy
ActiveSheet.UsedRange.SpecialCells _
(xlCellTypeFormulas, xlNumbers).PasteSpecial _
xlPasteValues, xlPasteSpecialOperationMultiply
.Clear
End With
End Sub
5./ Xa dng theo iu kin ca 1 ct (D) cha trng
Sub DeleteRowsWithSpecifiedData()
'Looks in Column D and requires Column IV to be clean
Columns(4).EntireColumn.Insert
With Range("D1:D" & ActiveSheet.UsedRange.Rows.Count)
.FormulaR1C1 = "=IF(RC[1]="""",NA(),IF(RC[1]=""Not Needed"",NA()))"
.Value = .Value
On Error Resume Next
.SpecialCells(xlCellTypeConstants, xlErrors).EntireRow.Delete
End With
On Error GoTo 0
Columns(4).EntireColumn.Delete
End Sub
6./ Phng i vng cha d liu khi sheet c kch hot
Private Sub Worksheet_Activate()
Application.EnableEvents = True
Application.WindowState = xlMaximized
ActiveSheet.UsedRange.Select
ActiveWindow.Zoom = True
End Sub
7./ Lp danh sch a ch vng cha d liu
Private Sub Workbook_BeforeSave _
(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'Put in the UsedRange Address of Sheet1 Book1.xls (this workbook)
Sheet2.Cells(Cells(65432).End(xlUp).Row + 1, 1) = Sheet1.UsedRange.Address
End Sub



CurrentRegion Property
1./ S khc bit gia CurrentRegion & UsedRange
Gi d chng ta c trang tnh S1 ang c kch hot, Ti ct A, t A1 n A9 & B1 n B9 c d liu
nhp, ta thm vi gi tr v i14 & i15;
Khi ta chy macro ( Mc)
Sub UsedRange()
Dim rTable As Range
Set rTable = Sheet1.UsedRange
MsgBox rTable.Address, , "0"
End Sub
Trong hp thoi s l $A$1:$I$15; Cn khi chy Mc c ni dung
Sub CurrentRegion1()
Dim rTable As Range
Set rTable = Sheet1.Range("A1").CurrentRegion
MsgBox rTable.Address, , "1"
Set rTable = Sheet1.Range("i13").CurrentRegion
MsgBox rTable.Address, , "2"
With Sheet1
Set rTable = .Range(.Range("c2"), _
.Cells(65536, .Range("IV1").End(xlToLeft).Column).End(xlUp))
End With
MsgBox rTable.Address, , "3"
End Sub

S xut hin ln lc 3 hp thoi sau
1: $A$1:$B$9
2: $I$13:$I$15
3: $B$2:$C$9
Nh vy 3 hp thoi cui a ra 3 a ch hon ton khc so vi vng s dng (do Mc u tin a ra). Nhng
a ch ny hon ton ty thuc vo v tr ta ang ng & bt u gi thc hin CurrentRegion.

2./ iu k diu ca CurrentRegion

Tip n ta xt n mt iu k diu & v cng thng minh ca excel. vy, chng ta nhp tip cc tn ngi
v ct E, bt u t E2 n E9; Cn t F2 n F9 l nhng con s bt k;
Sau ta cho chy Mc sau:

Sub TableWithHeaders()
Dim rTable As Range: Dim lHeaderRow As Long

Set rTable = Sheet1.Range("E1").CurrentRegion
lHeaderRow = rTable.ListHeaderRows
MsgBox rTable.Address, , "A"
If lHeaderRow > 0 Then
Set rTable = rTable.Resize(rTable.Rows.Count - lHeaderRow)
MsgBox rTable.Address, , "B"
Set rTable = rTable.Offset(1)
MsgBox rTable.Address, , "C"
End If
End Sub

Nu thc hin ng cc thao tc nh nu, cc bn ch nhn c 1 hp thoi duy nht mang k hiu A, vi
ni dung nh sau: $E$1:$F$9 (Ging trng hp hp thoi s (2) nh trn);

Tip theo ta sa ni dung ca F2 thnh chui: SoTien
Ln chy li Mc k ny, ta thu thm 2 hp thoi mi
(B): $E$1:$F$7
(C): $E$2:$F$8

y trng hp (C) dng phng thc OFFSET() ca mt vng nn vng mi tng so vi vng trc n
(cha dng phng thc OFFSET()) mt dng

Cc vn cn li, cc bn ngn ngh & t rt ra kt lun cho chnh mnh;

What Constitutes a Heading/Header Row
If your table is numeric data and you headings are text (or vice verca), Excel will assume row 1 of the table as a
header row. However, if your data AND headings are both numeric, or both text, Excel will consider your table as
having NO headers. The way to overcome this is to make your headings different to that of the data. This can be
done via bolding, font color/size etc.
Or, should you simply know for a fact that row 1 of the table IS a header row you can use the code below; (Cc
bn thng cm cho vn ting anh b to ca mnh & t c ly nha!)
3./ Truy xut tng ct d liu trong vng CurrentRegion
lm r hn vn truy xut d liu ca 1 ct no , chng ta xt tip 1 Mc na, sau y:

Sub LoopColsSheet()
Const Cot = 2
Dim wSh As Worksheet: Dim Rng As Range
For Each wSh In Worksheets
Select Case UCase(wSh.Name)
Case "S2", "S1"
'Do nothing
Case Else
For Each Rng In wSh.Range("A5").CurrentRegion.Columns(Cot).Cells
MsgBox Rng , , 4
Next Rng
End Select
Next wSh
End Sub
Nu ta cho Mc chy, ta s thu c thng tin d liu ca ct 2
Nu ta thay Cot = 9, & cho chy li Mc, ta vn thu c tng y hp thoi 4 m thi.

4./ Bin cha vng CurrentRegion

Tng t nh vy, ta xt thm trng hp sau

Sub Matric()
Dim Mang, iJ As Long

Mang = Sheets("S1").Range("a1").CurrentRegion.Resize(, 3).Value
For iJ = 1 To UBound(Mang, 1)
MsgBox Mang(iJ, 2), , "5"
Next iJ
Exit Sub: End Sub
Trong Mc c 2 gi tr l 3 & 2; Ta chy th nhiu ln vi cc gi tr ny tng dn xem sao. Mnh ng rng kt qu
s nh Mc trn n!

5./ CurrentRegion & copy cc ct d liu
V d ta c d liu ca nm trc ti ct A:C Bt u t ct E cch u 4 ct l d liu ca cc thng trong nm
hin thi; (Mi thng gm 3 ct d liu & cch thng sau n 1 ct trng)
Nhim v ra l chp 12 thng d liu v ba ct lu d liu nm trc (ti ct A:C)
Nhim v ny chng ta giao cho Mc sau:

Sub Copy3Columns()
Dim Rng As Range: Dim lRow As Long
Set Rng = Range("E1")
lRow = Range("A" & Rows.Count).End(xlUp).Row + 1
While Rng.Value <> ""
Rng.CurrentRegion.Copy Range("A" & lRow)
lRow = lRow + Rng.CurrentRegion.Rows.Count
Rng.Resize(, 4).EntireColumn.Delete
Set Rng = Range("E1")
Wend
Set Rng = Nothing
End Sub
Mc Copy3Columns c dng lnh 1: khai bo hai bin s dng;
D2: Ta chn & kch hot E1
D3 : thm 1 v gi tr dng cui ca d liu lu gn v bin lRow khai bo ;
D4 & D9 : Thit lp vng lp cho n khi tha iu kin gi tr cha trong bin Rng l trng ;
D5 : Vng d liu lu c chp thm t vng CurrentRegion ;
D6 : Xc nh li dng cui ca d liu lu ( + 1)
D7 : Xa 4 ct va chp ;
D8 : Xc lp li vng chn

You might also like