de-vraag
  • Pytania
  • Tagi
  • Użytkownicy
Powiadomienia
Nagrody
Rejestracja
Po zarejestrowaniu się, będziesz otrzymywać powiadomienia o odpowiedziach i komentarzach do swoich pytań.
Zaloguj się
Brak tłumaczeń pasujących do Twojego wyszukiwania Jeśli masz już konto, zaloguj się, aby sprawdzić nowe powiadomienia.
Za dodane pytania, odpowiedzi i komentarze przewidziane są nagrody.
Więcej
Źródło
Edytuj
 thomas
thomas
Question

VBA Runtime Error 1004 "Application-defined or Object-defined error" when Selecting Range

Mam problem z Error 1004 "Application-defined or Object-defined error" podczas wybierania zakresu.

Nadal jestem w stanie wybierać wiersze (tj. Rows("21:21").select) i wybierać zakresy w innych arkuszach tego samego skoroszytu. Nie wierzę, że błąd jest w kodzie. Może jest to jakieś ustawienie, którego nie jestem świadomy?

Używałem dokładnie tego samego kodu wiele razy wcześniej, ale z jakiegoś powodu nie mogę sprawić, aby działał w tym subiekcie (skomentowałem, gdzie występuje błąd)...

Sub CopySheet1_to_PasteSheet2()

    Dim CLastFundRow As Integer
    Dim CFirstBlankRow As Integer

    'Finds last row of content
    Windows("Excel.xlsm").Activate
    Sheets("Sheet1").Activate
    Range("C21").Select
         '>>>Error 1004 "Application-defined or Object-defined error" Occurs
    Selection.End(xlDown).Select
    CLastFundRow = ActiveCell.Row
    'Finds first row without content
    CFirstBlankRow = CLastFundRow + 1

    'Copy Data
    Range("A21:C" & CLastFundRow).Select
    Selection.Copy
    'Paste Data Values
    Sheets("PalTrakExport PortfolioAIdName").Select
    Range("A21").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

    'Bring back to top of sheet for consistancy
    Range("A21").Select
    Range("A1").Select
End Sub

Muszę uzyskać wszystkie fantazyjne w moim kopiowaniu, ponieważ ilość wierszy będzie się często zmieniać. Ponownie, poniższy kod był używany wcześniej bez błędu... ale nie w tym przypadku.

Dim CLastFundRow As Integer
Dim CFirstBlankRow As Integer

'Finds last row of content
Windows("Excel.xlsm").Activate
Sheets("Sheet1").Activate
Range("C21").Select
     '>>>Error 1004 "Application-defined or Object-defined error" Occurs
Selection.End(xlDown).Select
CLastFundRow = ActiveCell.Row
'Finds first row without content
CFirstBlankRow = CLastFundRow + 1
23 2013-07-31T20:58:31+00:00 3
 MackM
MackM
Edytowane pytanie 27. lipca 2015 в 8:40
Programowanie
vba
excel
excel-vba
To pytanie ma 1 odpowiedź w języku angielskim, aby je przeczytać zaloguj się na swoje konto.
Frank H.
Frank H.
31. lipca 2013 в 10:58
2013-07-31T22:58:30+00:00
Więcej
Źródło
Edytuj
#20092002

Być może twój kod znajduje się za Arkuszem1, więc kiedy zmieniasz fokus na Arkusz2, obiekty nie mogą zostać znalezione? Jeśli tak jest, może pomóc proste określenie docelowego arkusza:

Sheets("Sheet1").Range("C21").Select

Nie jestem zbyt dobrze zaznajomiony z tym, jak działa Select, ponieważ staram się unikać go tak bardzo, jak to tylko możliwe :-). Możesz definiować i manipulować zakresami bez ich zaznaczania. Dobrym pomysłem jest również wyraźne określenie wszystkiego, do czego się odnosisz. W ten sposób nie stracisz orientacji, gdy będziesz przechodził z jednego arkusza lub skoroszytu do drugiego. Spróbuj tego:

Option Explicit

Sub CopySheet1_to_PasteSheet2()

    Dim CLastFundRow As Integer
    Dim CFirstBlankRow As Integer
    Dim wksSource As Worksheet, wksDest As Worksheet
    Dim rngStart As Range, rngSource As Range, rngDest As Range

    Set wksSource = ActiveWorkbook.Sheets("Sheet1")
    Set wksDest = ActiveWorkbook.Sheets("Sheet2")

    'Finds last row of content
    CLastFundRow = wksSource.Range("C21").End(xlDown).Row
    'Finds first row without content
    CFirstBlankRow = CLastFundRow + 1

    'Copy Data
    Set rngSource = wksSource.Range("A2:C" & CLastFundRow)

    'Paste Data Values
    Set rngDest = wksDest.Range("A21")
    rngSource.Copy
    rngDest.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    'Bring back to top of sheet for consistancy
    wksDest.Range("A1").Select

End Sub
24
0
 Kam
Kam
30. maja 2014 в 4:58
2014-05-30T04:58:39+00:00
Więcej
Źródło
Edytuj
#20092004

Jest to trochę spóźnione, ale może być pomocne w przyszłości. Właśnie miałem ten sam problem i myślę, że jest to spowodowane tym, że makro jest nagrywane na poziomie arkusza. Kliknij prawym przyciskiem myszy na węzeł moduły w oknie projektu VBA, kliknij na wstaw moduł, a następnie wklej swoje makro do nowego modułu (upewnij się, że usunąłeś to, które jest nagrane na poziomie arkusza).

Mam nadzieję, że to pomoże.

12
0
 Dave
Dave
29. marca 2014 в 1:36
2014-03-29T13:36:21+00:00
Więcej
Źródło
Edytuj
#20092003

Niektóre operacje w Excelu są ograniczone dostępną pamięcią. Jeśli będziesz powtarzać ten sam proces w kółko, może to spowodować przepełnienie pamięci i Excel nie będzie w stanie już tego powtórzyć. Zdarzyło mi się to podczas próby utworzenia kilku arkuszy w tym samym skoroszycie.

The  Guy with The Hat
The Guy with The Hat
Edytowana odpowiedź 29. marca 2014 в 2:14
2
0
Dodaj pytanie
Kategorie
Wszystkie
Technologia
Kultura / Rekreacja
Życie / Sztuka
Nauka
Profesjonalny
Biznes
Użytkownicy
Wszystkie
Nowy
Popularny
1
Zuxriddin Muydinov
Zarejestrowany 12 godzin temu
2
Денис Анненский
Zarejestrowany 2 dni temu
3
365
Zarejestrowany 1 tydzień temu
4
True Image
Zarejestrowany 1 tydzień temu
5
archana agarwal
Zarejestrowany 1 tydzień temu
BG
DA
DE
EL
ES
FI
FR
ID
IT
JA
LT
LV
NL
PL
PT
RU
TR
ZH
© de-vraag 2022
Źródło
stackoverflow.com
na podstawie licencji cc by-sa 3.0 z przypisaniem