Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 10
Default returning the activecell's page number

How would I get the selected cell's page number, for example if ive selected
cell C345, i may be on page 5 depending on the print area. I would like it
that VB would return me 5 and i could assign this to a variable
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 76
Default returning the activecell's page number

X = 0
For Y = 1 to Worksheets.Count
If Worksheets(Y).Name = ActiveSheet.Name then X = Y
Next Y

"gill" wrote:

How would I get the selected cell's page number, for example if ive selected
cell C345, i may be on page 5 depending on the print area. I would like it
that VB would return me 5 and i could assign this to a variable

  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 10
Default returning the activecell's page number

I want to know about the page itself in that specific sheet, not the number
of sheets

"Brad E." wrote:

X = 0
For Y = 1 to Worksheets.Count
If Worksheets(Y).Name = ActiveSheet.Name then X = Y
Next Y

"gill" wrote:

How would I get the selected cell's page number, for example if ive selected
cell C345, i may be on page 5 depending on the print area. I would like it
that VB would return me 5 and i could assign this to a variable

  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 4
Default returning the activecell's page number

On Thu, 6 Jul 2006 12:16:02 -0700, gill
wrote:

I want to know about the page itself in that specific sheet, not the number
of sheets

"Brad E." wrote:

X = 0
For Y = 1 to Worksheets.Count
If Worksheets(Y).Name = ActiveSheet.Name then X = Y
Next Y

"gill" wrote:

How would I get the selected cell's page number, for example if ive selected
cell C345, i may be on page 5 depending on the print area. I would like it
that VB would return me 5 and i could assign this to a variable


So, you would like to count the pagebreaks and add one to the count?
  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 4,391
Default returning the activecell's page number

As well as the horizontal and vertical page breaks, it would also depend on
if you are printing across-then-down, or down-then-across.
And also .FirstPageNumber

NickHK

"Bookreader" wrote in message
...
On Thu, 6 Jul 2006 12:16:02 -0700, gill
wrote:

I want to know about the page itself in that specific sheet, not the

number
of sheets

"Brad E." wrote:

X = 0
For Y = 1 to Worksheets.Count
If Worksheets(Y).Name = ActiveSheet.Name then X = Y
Next Y

"gill" wrote:

How would I get the selected cell's page number, for example if ive

selected
cell C345, i may be on page 5 depending on the print area. I would

like it
that VB would return me 5 and i could assign this to a variable


So, you would like to count the pagebreaks and add one to the count?





  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 4,391
Default returning the activecell's page number

Gill,
This eems to work, but not well tested:

Public Function GetMyPage() As Variant
Dim CallerCell As Range
Dim ThisWS As Worksheet
Dim VertBreak As VPageBreak
Dim HorizBreak As HPageBreak
Dim VertBreakCount As Long
Dim HorizBreakCount As Long
Dim PageNumber As Long

Set CallerCell = Application.Caller

Set ThisWS = ThisWorkbook.Worksheets(CallerCell.Parent.Name)
With ThisWS

For Each VertBreak In .VPageBreaks
If VertBreak.Location.Column < CallerCell.Column Then
VertBreakCount = VertBreakCount + 1
Else
Exit For
End If
Next

For Each HorizBreak In .HPageBreaks
If HorizBreak.Location.Row <= CallerCell.Row Then
HorizBreakCount = HorizBreakCount + 1
Else
Exit For
End If
Next

Select Case .PageSetup.Order
Case xlDownThenOver
PageNumber = (.HPageBreaks.Count + 1) * VertBreakCount +
(HorizBreakCount + 1)
Case xlOverThenDown
PageNumber = (.VPageBreaks.Count + 1) * HorizBreakCount +
(VertBreakCount + 1)
End Select

If .PageSetup.FirstPageNumber < xlAutomatic Then
PageNumber = PageNumber + .PageSetup.FirstPageNumber
Else
PageNumber = PageNumber ' + 1
End If

End With

GetMyPage = PageNumber

End Function


NickHK

"gill" wrote in message
...
How would I get the selected cell's page number, for example if ive

selected
cell C345, i may be on page 5 depending on the print area. I would like it
that VB would return me 5 and i could assign this to a variable



  #7   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 4,391
Default returning the activecell's page number

Actually,
You don't need the objects set. That was just provide the Intellisense
whilst writing. So it can be simplified to:
Public Function GetMyPage() As Variant
Dim VertBreak As VPageBreak
Dim HorizBreak As HPageBreak
Dim VertBreakCount As Long
Dim HorizBreakCount As Long
Dim PageNumber As Long

With ThisWorkbook.Worksheets(Application.Caller.Parent. Name)
'VertBreakCount = 1
For Each VertBreak In .VPageBreaks
If VertBreak.Location.Column < Application.Caller.Column Then
VertBreakCount = VertBreakCount + 1
Else
Exit For
End If
Next

'HorizBreakCount = 1
For Each HorizBreak In .HPageBreaks
If HorizBreak.Location.Row <= Application.Caller.Row Then
....etc

It seem some what slow, but I suppose Excel needs to process a kind of
preview each time to assess the pagebreaks.
Note that if you change the PageSetup and/or column widths/row heights, so
function will NOT automatically update, so the results will get out of sync.

NickHK

"NickHK" wrote in message
...
Gill,
This eems to work, but not well tested:

Public Function GetMyPage() As Variant
Dim CallerCell As Range
Dim ThisWS As Worksheet
Dim VertBreak As VPageBreak
Dim HorizBreak As HPageBreak
Dim VertBreakCount As Long
Dim HorizBreakCount As Long
Dim PageNumber As Long

Set CallerCell = Application.Caller

Set ThisWS = ThisWorkbook.Worksheets(CallerCell.Parent.Name)
With ThisWS

For Each VertBreak In .VPageBreaks
If VertBreak.Location.Column < CallerCell.Column Then
VertBreakCount = VertBreakCount + 1
Else
Exit For
End If
Next

For Each HorizBreak In .HPageBreaks
If HorizBreak.Location.Row <= CallerCell.Row Then
HorizBreakCount = HorizBreakCount + 1
Else
Exit For
End If
Next

Select Case .PageSetup.Order
Case xlDownThenOver
PageNumber = (.HPageBreaks.Count + 1) * VertBreakCount +
(HorizBreakCount + 1)
Case xlOverThenDown
PageNumber = (.VPageBreaks.Count + 1) * HorizBreakCount +
(VertBreakCount + 1)
End Select

If .PageSetup.FirstPageNumber < xlAutomatic Then
PageNumber = PageNumber + .PageSetup.FirstPageNumber
Else
PageNumber = PageNumber ' + 1
End If

End With

GetMyPage = PageNumber

End Function


NickHK

"gill" wrote in message
...
How would I get the selected cell's page number, for example if ive

selected
cell C345, i may be on page 5 depending on the print area. I would like

it
that VB would return me 5 and i could assign this to a variable





Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Returning page-count to a cell NAHolmes Excel Worksheet Functions 2 November 25th 09 08:11 AM
Return activecell's column header in Alphabet Edmund Excel Programming 5 May 14th 08 07:54 AM
How to get ActiveCell's address? Milind Excel Programming 3 September 30th 05 12:08 AM
How do I use the ActiveCell's contents as a string for a web query thebird[_2_] Excel Programming 1 June 22nd 05 07:13 AM
Returning actual page field changed in pivottable Grant Excel Programming 0 September 27th 04 01:02 AM


All times are GMT +1. The time now is 07:56 AM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"