issue with VBA OFFSET

kelly mort

Well-known Member
Joined
Apr 10, 2017
Messages
2,169
Office Version
  1. 2016
Platform
  1. Windows
Hello everybody,
I have this code I am trying to use to send data to my worksheet. But it is not doing what I want it to do for me. When I click the add button, it sends the data to the last row in excel. Meanwhile I wants it to send the data to the last empty row or cell. I need help to resolve this. Thanks
Kelly
Code:
Private Sub CmdAdd_Click()
Dim Drng As Range
    Set Drng = Sheet1.Range("B6")
    Drng.End(xlDown).Offset(0, 0).Value = Drng.End(xlDown).Offset(-1, 0).Value + 1
    Drng.End(xlDown).Offset(0, 1).Value = Me.Rw2.Value
    Drng.End(xlDown).Offset(0, 2).Value = Me.Rw3.Value
    Drng.End(xlDown).Offset(0, 3).Value = Me.Rw4.Value
    Drng.End(xlDown).Offset(0, 4).Value = Me.Rw5.Value
    Drng.End(xlDown).Offset(0, 5).Value = Me.Rw6.Value
    Drng.End(xlDown).Offset(0, 6).Value = Me.Rw7.Value
    Drng.End(xlDown).Offset(0, 7).Value = Me.Rw8.Value
    Drng.End(xlDown).Offset(0, 8).Value = Me.Rw9.Value
    Drng.End(xlDown).Offset(0, 9).Value = Me.Rw10.Value
    Drng.End(xlDown).Offset(0, 10).Value = Me.Rw11.Value
    Drng.End(xlDown).Offset(0, 11).Value = Me.Rw12.Value
End Sub
 

Excel Facts

Return population for a City
If you have a list of cities in A2:A100, use Data, Geography. Then =A2.Population and copy down.
Something like this maybe:

Code:
Dim Drng As Range, lrRng As Range
With Sheet1
    Set Drng = .Range("B6")
    Set lrRng = .Cells(Application.Max(.Cells(.Rows.Count, Drng.Column).End(xlUp).Row, Drng.Row) + 1, Drng.Column)
    lrRng.Value = lrRng.Offset(-1, 0).Value + 1
    lrRng.Offset(0, 1).Value = Me.Rw2.Value
    lrRng.Offset(0, 2).Value = Me.Rw3.Value
    lrRng.Offset(0, 3).Value = Me.Rw4.Value
    lrRng.Offset(0, 4).Value = Me.Rw5.Value
    lrRng.Offset(0, 5).Value = Me.Rw6.Value
    lrRng.Offset(0, 6).Value = Me.Rw7.Value
    lrRng.Offset(0, 7).Value = Me.Rw8.Value
    lrRng.Offset(0, 8).Value = Me.Rw9.Value
    lrRng.Offset(0, 9).Value = Me.Rw10.Value
    lrRng.Offset(0, 10).Value = Me.Rw11.Value
    lrRng.Offset(0, 11).Value = Me.Rw12.Value
End With
 
Upvote 0
When i run it i get type mismatch then it highlights this line:
lrRng.Value = lrRng.Offset(-1, 0).Value

This is when the sheet has only the headers. But when i add data to the first row after the headers, it works good. Can it be done so that that mismatch eeror is eliminated???
Regards
Kelly
 
Last edited:
Upvote 0
I assume this:

Code:
lrRng.Offset(-1, 0).Value

isn't a number. So you cant add 1 to it.
 
Upvote 0
B6 cotains the column header. Or i should start the range from b7 instead so that it points to the blank cell
 
Upvote 0
When i set the range to b7 it worked when there is no data in sheet. Just that it left a blank row under the header. If that blank can be removed i think it will be great
 
Upvote 0
Set lrRng = .Cells(Application.Max(.Cells(.Rows.Count, Drng.Column).End(xlUp).Row, Drng.Row) + 1, Drng.Column)

Can you explain what this line is doing? I cant get it clearly
Thanks
 
Upvote 0

Forum statistics

Threads
1,214,574
Messages
6,120,327
Members
448,956
Latest member
Adamsxl

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top