ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   UserForm past data (https://www.excelbanter.com/excel-programming/404291-userform-past-data.html)

Patrick C. Simonds

UserForm past data
 
I have a series of cells on a worksheet which when clicked on open a
DialogBox. The DialogBox has ListBox which references another worksheet in
the same workbook, when I click OK it deposits the ListBox value into the
triggering cell. All of this works great, except, I also need to maintain
the font formatting (color) when it places the value in the triggering cell.
Is there any way to modify the code below to accomplish this?






Private Sub CommandButton1_Click()

'This UserForm is used to populate the Operator to Cover section of the
worksheet

On Error GoTo EndMacro

Friday_Routes_to_Cover.Hide
DoEvents

Dim rng

Set rng = Cells(ActiveCell.Row, 1)

rng(1, 4).Value = ListBox1.List(ListBox1.ListIndex, 0)
rng(1, 7).Value = ListBox1.List(ListBox1.ListIndex, 1)
rng(1, 10).Value = ListBox1.List(ListBox1.ListIndex, 2)
rng(1, 13).Value = ListBox1.List(ListBox1.ListIndex, 3)

rng(1, 6).Value = ListBox1.List(ListBox1.ListIndex, 13)
rng(1, 9).Value = ListBox1.List(ListBox1.ListIndex, 14)
rng(1, 12).Value = ListBox1.List(ListBox1.ListIndex, 15)
rng(1, 15).Value = ListBox1.List(ListBox1.ListIndex, 16)


Unload Friday_Routes_to_Cover

EndMacro:

Unload Friday_Routes_to_Cover

End Sub


Peter T

UserForm past data
 
From just looking at your code I can't see why dumping values to cells
should change any formats (other than mixed formats if that's what you
have).

However if I'm missing something, trap the colorindex of the font in the
active cell (triggering cell?) and re-apply when done.

fntClrIdx = activecell.font.colorindex
'code
' when done
activecell.font.colorindex = fntClrIdx

Regards,
Peter T

"Patrick C. Simonds" wrote in message
...
I have a series of cells on a worksheet which when clicked on open a
DialogBox. The DialogBox has ListBox which references another worksheet in
the same workbook, when I click OK it deposits the ListBox value into the
triggering cell. All of this works great, except, I also need to maintain
the font formatting (color) when it places the value in the triggering

cell.
Is there any way to modify the code below to accomplish this?






Private Sub CommandButton1_Click()

'This UserForm is used to populate the Operator to Cover section of the
worksheet

On Error GoTo EndMacro

Friday_Routes_to_Cover.Hide
DoEvents

Dim rng

Set rng = Cells(ActiveCell.Row, 1)

rng(1, 4).Value = ListBox1.List(ListBox1.ListIndex, 0)
rng(1, 7).Value = ListBox1.List(ListBox1.ListIndex, 1)
rng(1, 10).Value = ListBox1.List(ListBox1.ListIndex, 2)
rng(1, 13).Value = ListBox1.List(ListBox1.ListIndex, 3)

rng(1, 6).Value = ListBox1.List(ListBox1.ListIndex, 13)
rng(1, 9).Value = ListBox1.List(ListBox1.ListIndex, 14)
rng(1, 12).Value = ListBox1.List(ListBox1.ListIndex, 15)
rng(1, 15).Value = ListBox1.List(ListBox1.ListIndex, 16)


Unload Friday_Routes_to_Cover

EndMacro:

Unload Friday_Routes_to_Cover

End Sub




Patrick C. Simonds

UserForm past data
 
I am sorry I was not clear.

The data in the row source for the ListBox is contained on another
worksheet. That data's font has a color based upon certain variables. When
that data is deposited into the triggering cell, I need it to be the same
color as it was on the source worksheet.

"Peter T" <peter_t@discussions wrote in message
...
From just looking at your code I can't see why dumping values to cells
should change any formats (other than mixed formats if that's what you
have).

However if I'm missing something, trap the colorindex of the font in the
active cell (triggering cell?) and re-apply when done.

fntClrIdx = activecell.font.colorindex
'code
' when done
activecell.font.colorindex = fntClrIdx

Regards,
Peter T

"Patrick C. Simonds" wrote in message
...
I have a series of cells on a worksheet which when clicked on open a
DialogBox. The DialogBox has ListBox which references another worksheet
in
the same workbook, when I click OK it deposits the ListBox value into the
triggering cell. All of this works great, except, I also need to maintain
the font formatting (color) when it places the value in the triggering

cell.
Is there any way to modify the code below to accomplish this?






Private Sub CommandButton1_Click()

'This UserForm is used to populate the Operator to Cover section of the
worksheet

On Error GoTo EndMacro

Friday_Routes_to_Cover.Hide
DoEvents

Dim rng

Set rng = Cells(ActiveCell.Row, 1)

rng(1, 4).Value = ListBox1.List(ListBox1.ListIndex, 0)
rng(1, 7).Value = ListBox1.List(ListBox1.ListIndex, 1)
rng(1, 10).Value = ListBox1.List(ListBox1.ListIndex, 2)
rng(1, 13).Value = ListBox1.List(ListBox1.ListIndex, 3)

rng(1, 6).Value = ListBox1.List(ListBox1.ListIndex, 13)
rng(1, 9).Value = ListBox1.List(ListBox1.ListIndex, 14)
rng(1, 12).Value = ListBox1.List(ListBox1.ListIndex, 15)
rng(1, 15).Value = ListBox1.List(ListBox1.ListIndex, 16)


Unload Friday_Routes_to_Cover

EndMacro:

Unload Friday_Routes_to_Cover

End Sub





Peter T

UserForm past data
 
OK that's a bit clearer, but not much.

Following just a guess of what you want to achieve based on what you posted.
Looks like your rowsource has at least 17 columns; this should apply same
colour font to the various destination cells as applied in the respective
data cells. Like I said, it's only a guess, adapt as required.


Private Sub CommandButton1_Click()
Dim i As Long, nRow As Long, nLstIdx As Long
Dim rngList As Range
Dim aCols, aLstCols

aCols = Array(4, 7, 10, 13, 6, 9, 12, 15)
aLstCols = Array(0, 1, 2, 3, 13, 14, 15, 16)

Set rngList = Range(Me.ListBox1.RowSource)
nRow = ActiveCell.Row
nLstIdx = Me.ListBox1.ListIndex

If nRow Me.ListBox1.ListCount Or nLstIdx = -1 Then
MsgBox "activecell row out of range or no list row selected"
Exit Sub
End If

For i = 0 To UBound(aCols)
With Cells(nRow, aCols(i))
.Value = ListBox1.List(nLstIdx, aLstCols(i))
.Font.ColorIndex = rngList(nLstIdx + 1, aLstCols(i) + 1)
End With
Next

End Sub

Regards,
Peter T


"Patrick C. Simonds" wrote in message
...
I am sorry I was not clear.

The data in the row source for the ListBox is contained on another
worksheet. That data's font has a color based upon certain variables. When
that data is deposited into the triggering cell, I need it to be the same
color as it was on the source worksheet.

"Peter T" <peter_t@discussions wrote in message
...
From just looking at your code I can't see why dumping values to cells
should change any formats (other than mixed formats if that's what you
have).

However if I'm missing something, trap the colorindex of the font in the
active cell (triggering cell?) and re-apply when done.

fntClrIdx = activecell.font.colorindex
'code
' when done
activecell.font.colorindex = fntClrIdx

Regards,
Peter T

"Patrick C. Simonds" wrote in message
...
I have a series of cells on a worksheet which when clicked on open a
DialogBox. The DialogBox has ListBox which references another worksheet
in
the same workbook, when I click OK it deposits the ListBox value into

the
triggering cell. All of this works great, except, I also need to

maintain
the font formatting (color) when it places the value in the triggering

cell.
Is there any way to modify the code below to accomplish this?






Private Sub CommandButton1_Click()

'This UserForm is used to populate the Operator to Cover section of the
worksheet

On Error GoTo EndMacro

Friday_Routes_to_Cover.Hide
DoEvents

Dim rng

Set rng = Cells(ActiveCell.Row, 1)

rng(1, 4).Value = ListBox1.List(ListBox1.ListIndex, 0)
rng(1, 7).Value = ListBox1.List(ListBox1.ListIndex, 1)
rng(1, 10).Value = ListBox1.List(ListBox1.ListIndex, 2)
rng(1, 13).Value = ListBox1.List(ListBox1.ListIndex, 3)

rng(1, 6).Value = ListBox1.List(ListBox1.ListIndex, 13)
rng(1, 9).Value = ListBox1.List(ListBox1.ListIndex, 14)
rng(1, 12).Value = ListBox1.List(ListBox1.ListIndex, 15)
rng(1, 15).Value = ListBox1.List(ListBox1.ListIndex, 16)


Unload Friday_Routes_to_Cover

EndMacro:

Unload Friday_Routes_to_Cover

End Sub







Patrick C. Simonds

UserForm past data
 
Thank you, but I get a Type Mismatch error on the following line:

..Font.ColorIndex = rngList(nLstIdx + 1, aLstCols(i) + 1)




"Peter T" <peter_t@discussions wrote in message
...
OK that's a bit clearer, but not much.

Following just a guess of what you want to achieve based on what you
posted.
Looks like your rowsource has at least 17 columns; this should apply same
colour font to the various destination cells as applied in the respective
data cells. Like I said, it's only a guess, adapt as required.


Private Sub CommandButton1_Click()
Dim i As Long, nRow As Long, nLstIdx As Long
Dim rngList As Range
Dim aCols, aLstCols

aCols = Array(4, 7, 10, 13, 6, 9, 12, 15)
aLstCols = Array(0, 1, 2, 3, 13, 14, 15, 16)

Set rngList = Range(Me.ListBox1.RowSource)
nRow = ActiveCell.Row
nLstIdx = Me.ListBox1.ListIndex

If nRow Me.ListBox1.ListCount Or nLstIdx = -1 Then
MsgBox "activecell row out of range or no list row selected"
Exit Sub
End If

For i = 0 To UBound(aCols)
With Cells(nRow, aCols(i))
.Value = ListBox1.List(nLstIdx, aLstCols(i))
.Font.ColorIndex = rngList(nLstIdx + 1, aLstCols(i) + 1)
End With
Next

End Sub

Regards,
Peter T


"Patrick C. Simonds" wrote in message
...
I am sorry I was not clear.

The data in the row source for the ListBox is contained on another
worksheet. That data's font has a color based upon certain variables.
When
that data is deposited into the triggering cell, I need it to be the same
color as it was on the source worksheet.

"Peter T" <peter_t@discussions wrote in message
...
From just looking at your code I can't see why dumping values to cells
should change any formats (other than mixed formats if that's what you
have).

However if I'm missing something, trap the colorindex of the font in
the
active cell (triggering cell?) and re-apply when done.

fntClrIdx = activecell.font.colorindex
'code
' when done
activecell.font.colorindex = fntClrIdx

Regards,
Peter T

"Patrick C. Simonds" wrote in message
...
I have a series of cells on a worksheet which when clicked on open a
DialogBox. The DialogBox has ListBox which references another
worksheet
in
the same workbook, when I click OK it deposits the ListBox value into

the
triggering cell. All of this works great, except, I also need to

maintain
the font formatting (color) when it places the value in the triggering
cell.
Is there any way to modify the code below to accomplish this?






Private Sub CommandButton1_Click()

'This UserForm is used to populate the Operator to Cover section of
the
worksheet

On Error GoTo EndMacro

Friday_Routes_to_Cover.Hide
DoEvents

Dim rng

Set rng = Cells(ActiveCell.Row, 1)

rng(1, 4).Value = ListBox1.List(ListBox1.ListIndex, 0)
rng(1, 7).Value = ListBox1.List(ListBox1.ListIndex, 1)
rng(1, 10).Value = ListBox1.List(ListBox1.ListIndex, 2)
rng(1, 13).Value = ListBox1.List(ListBox1.ListIndex, 3)

rng(1, 6).Value = ListBox1.List(ListBox1.ListIndex, 13)
rng(1, 9).Value = ListBox1.List(ListBox1.ListIndex, 14)
rng(1, 12).Value = ListBox1.List(ListBox1.ListIndex, 15)
rng(1, 15).Value = ListBox1.List(ListBox1.ListIndex, 16)


Unload Friday_Routes_to_Cover

EndMacro:

Unload Friday_Routes_to_Cover

End Sub








Peter T

UserForm past data
 
Somehow an important bit got lost in the posting, change

.Font.ColorIndex = rngList(nLstIdx + 1, aLstCols(i) + 1)

to
..Font.ColorIndex = rngList(nLstIdx + 1, aLstCols(i) + 1).Font.ColorIndex

As written, font colorIndex of the row(nLstIdx + 1), column(aLstCols(i) + 1)
of the rowsource range is applied to the cell receiving the data.

Regards,
Peter T


"Patrick C. Simonds" wrote in message
...
Thank you, but I get a Type Mismatch error on the following line:

.Font.ColorIndex = rngList(nLstIdx + 1, aLstCols(i) + 1)




"Peter T" <peter_t@discussions wrote in message
...
OK that's a bit clearer, but not much.

Following just a guess of what you want to achieve based on what you
posted.
Looks like your rowsource has at least 17 columns; this should apply

same
colour font to the various destination cells as applied in the

respective
data cells. Like I said, it's only a guess, adapt as required.


Private Sub CommandButton1_Click()
Dim i As Long, nRow As Long, nLstIdx As Long
Dim rngList As Range
Dim aCols, aLstCols

aCols = Array(4, 7, 10, 13, 6, 9, 12, 15)
aLstCols = Array(0, 1, 2, 3, 13, 14, 15, 16)

Set rngList = Range(Me.ListBox1.RowSource)
nRow = ActiveCell.Row
nLstIdx = Me.ListBox1.ListIndex

If nRow Me.ListBox1.ListCount Or nLstIdx = -1 Then
MsgBox "activecell row out of range or no list row selected"
Exit Sub
End If

For i = 0 To UBound(aCols)
With Cells(nRow, aCols(i))
.Value = ListBox1.List(nLstIdx, aLstCols(i))
.Font.ColorIndex = rngList(nLstIdx + 1, aLstCols(i) + 1)
End With
Next

End Sub

Regards,
Peter T


"Patrick C. Simonds" wrote in message
...
I am sorry I was not clear.

The data in the row source for the ListBox is contained on another
worksheet. That data's font has a color based upon certain variables.
When
that data is deposited into the triggering cell, I need it to be the

same
color as it was on the source worksheet.

"Peter T" <peter_t@discussions wrote in message
...
From just looking at your code I can't see why dumping values to

cells
should change any formats (other than mixed formats if that's what

you
have).

However if I'm missing something, trap the colorindex of the font in
the
active cell (triggering cell?) and re-apply when done.

fntClrIdx = activecell.font.colorindex
'code
' when done
activecell.font.colorindex = fntClrIdx

Regards,
Peter T

"Patrick C. Simonds" wrote in message
...
I have a series of cells on a worksheet which when clicked on open a
DialogBox. The DialogBox has ListBox which references another
worksheet
in
the same workbook, when I click OK it deposits the ListBox value

into
the
triggering cell. All of this works great, except, I also need to

maintain
the font formatting (color) when it places the value in the

triggering
cell.
Is there any way to modify the code below to accomplish this?






Private Sub CommandButton1_Click()

'This UserForm is used to populate the Operator to Cover section of
the
worksheet

On Error GoTo EndMacro

Friday_Routes_to_Cover.Hide
DoEvents

Dim rng

Set rng = Cells(ActiveCell.Row, 1)

rng(1, 4).Value = ListBox1.List(ListBox1.ListIndex, 0)
rng(1, 7).Value = ListBox1.List(ListBox1.ListIndex, 1)
rng(1, 10).Value = ListBox1.List(ListBox1.ListIndex, 2)
rng(1, 13).Value = ListBox1.List(ListBox1.ListIndex, 3)

rng(1, 6).Value = ListBox1.List(ListBox1.ListIndex, 13)
rng(1, 9).Value = ListBox1.List(ListBox1.ListIndex, 14)
rng(1, 12).Value = ListBox1.List(ListBox1.ListIndex, 15)
rng(1, 15).Value = ListBox1.List(ListBox1.ListIndex, 16)


Unload Friday_Routes_to_Cover

EndMacro:

Unload Friday_Routes_to_Cover

End Sub










Patrick C. Simonds

UserForm past data
 
Thank you very much, that was great.

I did have to remove the following code, because it would always tel me that "activecell row out of range or no list row selected"

If nRow Me.ListBox1.ListCount Or nLstIdx = -1 Then
MsgBox "activecell row out of range or no list row selected"
Exit Sub
End If

Is there any way to incorporate the remaining (green) code below? Those values are pasted in the row below.




Private Sub CommandButton1_Click()

'Friday_Route_Selection.Hide

Dim i As Long, nRow As Long, nLstIdx As Long
Dim rngList As Range
Dim aCols, aLstCols

aCols = Array(4, 7, 10, 13, 6, 9, 12, 15)
aLstCols = Array(0, 1, 2, 3, 13, 14, 15, 16)

Set rngList = Range(Me.ListBox1.RowSource)
nRow = ActiveCell.Row
nLstIdx = Me.ListBox1.ListIndex



For i = 0 To UBound(aCols)
With Cells(nRow, aCols(i))
.Value = ListBox1.List(nLstIdx, aLstCols(i))
.Font.ColorIndex = rngList(nLstIdx + 1, aLstCols(i) + 1).Font.ColorIndex
End With
Next

rng(2, 4).Value = ListBox1.List(ListBox1.ListIndex, 4)
rng(2, 5).Value = ListBox1.List(ListBox1.ListIndex, 5)
rng(2, 7).Value = ListBox1.List(ListBox1.ListIndex, 6)
rng(2, 8).Value = ListBox1.List(ListBox1.ListIndex, 7)
rng(2, 10).Value = ListBox1.List(ListBox1.ListIndex, 8)
rng(2, 11).Value = ListBox1.List(ListBox1.ListIndex, 9)
rng(2, 13).Value = ListBox1.List(ListBox1.ListIndex, 10)
rng(2, 14).Value = ListBox1.List(ListBox1.ListIndex, 11)

End Sub

Peter T

UserForm past data
 
I'm surprised the code works if you remove the initial test, actually two
tests

If nRow Me.ListBox1.ListCount then

If nRow, ie activecell row is more than the number of rows in your list the
rest of the code would fail (unless I've missed something).

If nLstIdx = -1 then
nLstIdx, ie .ListIndex = -1 indicates User has not selected a list row. The
list index is used to extract values so again it would fail, I would have
thought.

It might be worth splitting into two separate tests to determine which is
failing.


Looks like you have a second batch of data (greens ?) to dump in a similar
fashion in the row below the active row. Under the 1st loop make two new
arrays just like the first two with appropriate values,

aCols = Array(4, 5, 7, etc
aLstCols = Array(4, 5, 6, etc

and just below virtually the same loop

For i = 0 To UBound(aCols)
With Cells(nRow + 1, aCols(i))
.Value = ListBox1.List(nLstIdx, aLstCols(i))
.Font.ColorIndex = rngList(nLstIdx + 1, aLstCols(i) +
1).Font.ColorIndex
End

Notice the difference,
1st loop:With Cells(nRow, aCols(i))
2nd loop: With Cells(nRow, aCols(i))
ie, row below active row.

With the new code in place you should be able to remove your following code.

If you haven't already, it would be worth figuring how the code I've
suggested works, both to ensure it correctly does what you want and to make
simple modifications.

Regards,
Peter T

PS, In my newsreader your post appears with an attachment which was disabled


"Patrick C. Simonds" wrote in message
...
Thank you very much, that was great.

I did have to remove the following code, because it would always tel me that
"activecell row out of range or no list row selected"

If nRow Me.ListBox1.ListCount Or nLstIdx = -1 Then
MsgBox "activecell row out of range or no list row selected"
Exit Sub
End If

Is there any way to incorporate the remaining (green) code below? Those
values are pasted in the row below.




Private Sub CommandButton1_Click()

'Friday_Route_Selection.Hide

Dim i As Long, nRow As Long, nLstIdx As Long
Dim rngList As Range
Dim aCols, aLstCols

aCols = Array(4, 7, 10, 13, 6, 9, 12, 15)
aLstCols = Array(0, 1, 2, 3, 13, 14, 15, 16)

Set rngList = Range(Me.ListBox1.RowSource)
nRow = ActiveCell.Row
nLstIdx = Me.ListBox1.ListIndex



For i = 0 To UBound(aCols)
With Cells(nRow, aCols(i))
.Value = ListBox1.List(nLstIdx, aLstCols(i))
.Font.ColorIndex = rngList(nLstIdx + 1, aLstCols(i) +
1).Font.ColorIndex
End With
Next

rng(2, 4).Value = ListBox1.List(ListBox1.ListIndex, 4)
rng(2, 5).Value = ListBox1.List(ListBox1.ListIndex, 5)
rng(2, 7).Value = ListBox1.List(ListBox1.ListIndex, 6)
rng(2, 8).Value = ListBox1.List(ListBox1.ListIndex, 7)
rng(2, 10).Value = ListBox1.List(ListBox1.ListIndex, 8)
rng(2, 11).Value = ListBox1.List(ListBox1.ListIndex, 9)
rng(2, 13).Value = ListBox1.List(ListBox1.ListIndex, 10)
rng(2, 14).Value = ListBox1.List(ListBox1.ListIndex, 11)

End Sub




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

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com