PC Review


Reply
Thread Tools Rate Thread

A bug : Run-time error '1004'

 
 
Ivan
Guest
Posts: n/a
 
      17th Mar 2009
Hello,

I'm using Excel 2007 and with the help of a macro I wished to delete all
rows above and all columns left to the specific cell of my worksheet.
In the example for specific cell B4 the code is as follows:

------------------------------------------
Dim MyCol As Long, MyRow As Long
Dim ForDelete As Range
Dim MyAdress As String

MyCol = 2
MyRow = 4

' To delete rows

If MyRow > 1 Then
MyAdress = "1:" & (MyRow - 1)
Set ForDelete = ActiveSheet.Rows(MyAdress)
ForDelete.Delete
Set ForDelete = Nothing
End If

' To delete columns

If MyCol > 1 Then
MyAdress = "1:" & (MyCol - 1)
Set ForDelete = ActiveSheet.Columns(MyAdress)
ForDelete.Delete
Set ForDelete = Nothing
End If
------------------------------------------

It's weird that the first part of code for deletion of rows run
successfully, the equivalent code for deletion of columns but ended with the
error message:Run-time error '1004' Application-defined or object-defined
error !?

I have changed the problematic code with a bypass code:

-------------------------
If MyRow > 1 Then
For i = MyRow - 1 To 1 Step -1
ActiveSheet.Rows(i).Delete
Next i
End If
-------------------------

but I'm still curious, why my first code wasn't successful?

Ivan




 
Reply With Quote
 
 
 
 
Barb Reinhardt
Guest
Posts: n/a
 
      17th Mar 2009
I usually do something like this

Set ForDelete = Nothing
If MyCol > 1 Then
MyAdress = "1:" & (MyCol - 1)
if ForDelete is nothing then
Set ForDelete = ActiveSheet.Columns(MyAdress)
else
Set ForDelete = Union(ForDelete, ActiveSheet.Columns(MyAdress))
end if

End If

'Once you've gathered everything you want to delete, then delete it all.
If not ForDelete is nothing then
ForDelete.Delete
End if

"Ivan" wrote:

> Hello,
>
> I'm using Excel 2007 and with the help of a macro I wished to delete all
> rows above and all columns left to the specific cell of my worksheet.
> In the example for specific cell B4 the code is as follows:
>
> ------------------------------------------
> Dim MyCol As Long, MyRow As Long
> Dim ForDelete As Range
> Dim MyAdress As String
>
> MyCol = 2
> MyRow = 4
>
> ' To delete rows
>
> If MyRow > 1 Then
> MyAdress = "1:" & (MyRow - 1)
> Set ForDelete = ActiveSheet.Rows(MyAdress)
> ForDelete.Delete
> Set ForDelete = Nothing
> End If
>
> ' To delete columns
>
> If MyCol > 1 Then
> MyAdress = "1:" & (MyCol - 1)
> Set ForDelete = ActiveSheet.Columns(MyAdress)
> ForDelete.Delete
> Set ForDelete = Nothing
> End If
> ------------------------------------------
>
> It's weird that the first part of code for deletion of rows run
> successfully, the equivalent code for deletion of columns but ended with the
> error message:Run-time error '1004' Application-defined or object-defined
> error !?
>
> I have changed the problematic code with a bypass code:
>
> -------------------------
> If MyRow > 1 Then
> For i = MyRow - 1 To 1 Step -1
> ActiveSheet.Rows(i).Delete
> Next i
> End If
> -------------------------
>
> but I'm still curious, why my first code wasn't successful?
>
> Ivan
>
>
>
>
>

 
Reply With Quote
 
Dave Peterson
Guest
Posts: n/a
 
      17th Mar 2009
Another:

Option Explicit
Sub testme()

Dim myCell As Range
Dim myRow As Long
Dim myCol As Long
Dim wks As Worksheet

Set wks = Worksheets("Sheet1") 'or activesheet

With wks
Set myCell = .Range("B4")

myRow = myCell.Row
myCol = myCell.Column

If myRow > 1 Then
.Range("a1", .Cells(myRow - 1, "A")).EntireRow.Delete
End If
If myCol > 1 Then
.Range("a1", .Cells(1, myCol - 1)).EntireColumn.Delete
End If
End With
End Sub


Ivan wrote:
>
> Hello,
>
> I'm using Excel 2007 and with the help of a macro I wished to delete all
> rows above and all columns left to the specific cell of my worksheet.
> In the example for specific cell B4 the code is as follows:
>
> ------------------------------------------
> Dim MyCol As Long, MyRow As Long
> Dim ForDelete As Range
> Dim MyAdress As String
>
> MyCol = 2
> MyRow = 4
>
> ' To delete rows
>
> If MyRow > 1 Then
> MyAdress = "1:" & (MyRow - 1)
> Set ForDelete = ActiveSheet.Rows(MyAdress)
> ForDelete.Delete
> Set ForDelete = Nothing
> End If
>
> ' To delete columns
>
> If MyCol > 1 Then
> MyAdress = "1:" & (MyCol - 1)
> Set ForDelete = ActiveSheet.Columns(MyAdress)
> ForDelete.Delete
> Set ForDelete = Nothing
> End If
> ------------------------------------------
>
> It's weird that the first part of code for deletion of rows run
> successfully, the equivalent code for deletion of columns but ended with the
> error message:Run-time error '1004' Application-defined or object-defined
> error !?
>
> I have changed the problematic code with a bypass code:
>
> -------------------------
> If MyRow > 1 Then
> For i = MyRow - 1 To 1 Step -1
> ActiveSheet.Rows(i).Delete
> Next i
> End If
> -------------------------
>
> but I'm still curious, why my first code wasn't successful?
>
> Ivan


--

Dave Peterson
 
Reply With Quote
 
Ivan
Guest
Posts: n/a
 
      18th Mar 2009
Maybe I was not enough clear in my previous question. The question is: How
is it possible that the equivalent code, which is in original version OK for
rows, is not OK for columns?

Ivan

"Ivan" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> Hello,
>
> I'm using Excel 2007 and with the help of a macro I wished to delete all
> rows above and all columns left to the specific cell of my worksheet.
> In the example for specific cell B4 the code is as follows:
>
> ------------------------------------------
> Dim MyCol As Long, MyRow As Long
> Dim ForDelete As Range
> Dim MyAdress As String
>
> MyCol = 2
> MyRow = 4
>
> ' To delete rows
>
> If MyRow > 1 Then
> MyAdress = "1:" & (MyRow - 1)
> Set ForDelete = ActiveSheet.Rows(MyAdress)
> ForDelete.Delete
> Set ForDelete = Nothing
> End If
>
> ' To delete columns
>
> If MyCol > 1 Then
> MyAdress = "1:" & (MyCol - 1)
> Set ForDelete = ActiveSheet.Columns(MyAdress)
> ForDelete.Delete
> Set ForDelete = Nothing
> End If
> ------------------------------------------
>
> It's weird that the first part of code for deletion of rows run
> successfully, the equivalent code for deletion of columns but ended with
> the error message:Run-time error '1004' Application-defined or
> object-defined error !?
>
> I have changed the problematic code with a bypass code:
>
> -------------------------
> If MyRow > 1 Then
> For i = MyRow - 1 To 1 Step -1
> ActiveSheet.Rows(i).Delete
> Next i
> End If
> -------------------------
>
> but I'm still curious, why my first code wasn't successful?
>
> Ivan
>
>
>
>



 
Reply With Quote
 
Dave Peterson
Guest
Posts: n/a
 
      18th Mar 2009
Because a range with an address like "1:17" means rows. Not columns.

Ivan wrote:
>
> Maybe I was not enough clear in my previous question. The question is: How
> is it possible that the equivalent code, which is in original version OK for
> rows, is not OK for columns?
>
> Ivan
>
> "Ivan" <(E-Mail Removed)> wrote in message
> news:(E-Mail Removed)...
> > Hello,
> >
> > I'm using Excel 2007 and with the help of a macro I wished to delete all
> > rows above and all columns left to the specific cell of my worksheet.
> > In the example for specific cell B4 the code is as follows:
> >
> > ------------------------------------------
> > Dim MyCol As Long, MyRow As Long
> > Dim ForDelete As Range
> > Dim MyAdress As String
> >
> > MyCol = 2
> > MyRow = 4
> >
> > ' To delete rows
> >
> > If MyRow > 1 Then
> > MyAdress = "1:" & (MyRow - 1)
> > Set ForDelete = ActiveSheet.Rows(MyAdress)
> > ForDelete.Delete
> > Set ForDelete = Nothing
> > End If
> >
> > ' To delete columns
> >
> > If MyCol > 1 Then
> > MyAdress = "1:" & (MyCol - 1)
> > Set ForDelete = ActiveSheet.Columns(MyAdress)
> > ForDelete.Delete
> > Set ForDelete = Nothing
> > End If
> > ------------------------------------------
> >
> > It's weird that the first part of code for deletion of rows run
> > successfully, the equivalent code for deletion of columns but ended with
> > the error message:Run-time error '1004' Application-defined or
> > object-defined error !?
> >
> > I have changed the problematic code with a bypass code:
> >
> > -------------------------
> > If MyRow > 1 Then
> > For i = MyRow - 1 To 1 Step -1
> > ActiveSheet.Rows(i).Delete
> > Next i
> > End If
> > -------------------------
> >
> > but I'm still curious, why my first code wasn't successful?
> >
> > Ivan
> >
> >
> >
> >


--

Dave Peterson
 
Reply With Quote
 
Ivan
Guest
Posts: n/a
 
      19th Mar 2009
Thank you Dave (I 'm blushing with shame).

Ivan

"Dave Peterson" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> Because a range with an address like "1:17" means rows. Not columns.
>
> Ivan wrote:
>>
>> Maybe I was not enough clear in my previous question. The question is:
>> How
>> is it possible that the equivalent code, which is in original version OK
>> for
>> rows, is not OK for columns?
>>
>> Ivan
>>
>> "Ivan" <(E-Mail Removed)> wrote in message
>> news:(E-Mail Removed)...
>> > Hello,
>> >
>> > I'm using Excel 2007 and with the help of a macro I wished to delete
>> > all
>> > rows above and all columns left to the specific cell of my worksheet.
>> > In the example for specific cell B4 the code is as follows:
>> >
>> > ------------------------------------------
>> > Dim MyCol As Long, MyRow As Long
>> > Dim ForDelete As Range
>> > Dim MyAdress As String
>> >
>> > MyCol = 2
>> > MyRow = 4
>> >
>> > ' To delete rows
>> >
>> > If MyRow > 1 Then
>> > MyAdress = "1:" & (MyRow - 1)
>> > Set ForDelete = ActiveSheet.Rows(MyAdress)
>> > ForDelete.Delete
>> > Set ForDelete = Nothing
>> > End If
>> >
>> > ' To delete columns
>> >
>> > If MyCol > 1 Then
>> > MyAdress = "1:" & (MyCol - 1)
>> > Set ForDelete = ActiveSheet.Columns(MyAdress)
>> > ForDelete.Delete
>> > Set ForDelete = Nothing
>> > End If
>> > ------------------------------------------
>> >
>> > It's weird that the first part of code for deletion of rows run
>> > successfully, the equivalent code for deletion of columns but ended
>> > with
>> > the error message:Run-time error '1004' Application-defined or
>> > object-defined error !?
>> >
>> > I have changed the problematic code with a bypass code:
>> >
>> > -------------------------
>> > If MyRow > 1 Then
>> > For i = MyRow - 1 To 1 Step -1
>> > ActiveSheet.Rows(i).Delete
>> > Next i
>> > End If
>> > -------------------------
>> >
>> > but I'm still curious, why my first code wasn't successful?
>> >
>> > Ivan
>> >
>> >
>> >
>> >

>
> --
>
> Dave Peterson



 
Reply With Quote
 
 
 
Reply

Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

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


Similar Threads
Thread Thread Starter Forum Replies Last Post
Run-Time Error '1004' mcbarker Microsoft Excel Programming 13 2nd Apr 2009 12:57 AM
run-time error 1004 Larue Microsoft Excel Crashes 1 7th Jul 2008 07:48 PM
run-time error '1004' chum Microsoft Excel Programming 0 7th Jul 2006 03:18 PM
Run-time error 1004 dthmtlgod Microsoft Excel Programming 1 12th Jan 2006 03:40 PM
Run-time error '1004' Dkline Microsoft Excel Misc 1 2nd Jul 2004 01:18 AM


Features
 

Advertising
 

Newsgroups
 


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