Excel Forum - Porady, Pomoc,  Excel Help, Excel FAQ Strona Główna
 FAQ  RegulaminRegulamin  Szukaj   Użytkownicy   Grupy   Rejestracja   Profil   Twoje wiadomości   Zaloguj 


Poprzedni temat «» Następny temat
Przesunięty przez: Kaper
10-01-2023, 22:45
Jak przenieść zawartość wiersza do wskazanego w G1 zeszytu
Autor Wiadomość
madasz 
Fan Excela


Wersja: Win Office 2016
Posty: 87
Wysłany: 10-01-2023, 22:23   Jak przenieść zawartość wiersza do wskazanego w G1 zeszytu

Witam Państwa w Nowym Roku i składam Wam wszystkim życzenie wszystkiego najlepszego i oby ten nowy 2023 rok był lepszy od poprzedniego, bez szalonych cen, bez oszalałych prawicowych polityków i zdrowia jeszcze raz zdrowia!

Oto przesyłam fragment makra, z którym nie mogę sobie poradzić.
Makro działa poprawnie z zeszytem ”Rezerwa2”.
Zależy mi na tym by w miejscu , w którym pojawia się tekst :
– ActiveCell.FormulaR1C1 = "Rezerwa2"
i :-„ With Worksheets("Rezerwa2") … - ”Rezerwa2” był pobrany z zawartości komórki G1.
W komórce G1 bywają nazwy innych zeszytów.
Szukałem lecz nie znalazłem rozwiązania (może przeoczyłem!)
Wybaczcie jeśli zawile opisuję problem - brakuje mi wiedzy jestem 77plus.
Pozdrawiam!![/code]
ID posta: 424035 Skopiuj do schowka
 
 
madasz 
Fan Excela


Wersja: Win Office 2016
Posty: 87
Wysłany: 10-01-2023, 22:33   

Jak dodać załącznik??
Oto on:
Kod:
'--------------------------napis rezerwa---------------
    Range("G1").Select
  'kop do wstaw
    Sheets("Dialog").Select
    Range("D19").Select
    Selection.Copy
    Sheets("Lista").Select
    Range("G1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    With Selection.Font
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = 0
    End With
    ActiveCell.FormulaR1C1 = "Rezerwa2"
    Range("A3").Select
  '==========================rezerwa=====================
    Sheets("lista").Select
    Range("b1:f1").Copy
    With Worksheets("Rezerwa2")
       ActiveWorkbook.Worksheets("Rezerwa2").Range("B1000") _
              .End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlValues
    End With

    '===========================lista========================
    Sheets("lista").Select
    Range("b1:h1").Copy
ID posta: 424038 Skopiuj do schowka
 
 
Kaper 



Zaproszone osoby: 2
Wersja: Win Office 365
Pomógł: 4407 razy
Posty: 8697
Wysłany: 10-01-2023, 22:43   

Nie było dla mnie oczywiste, w którym arkuszu jest ta komórka G1 z nazwą Rezerwa2.

Spróbuj tak jak niżej. Zauważ, że tam gdzie miałeś Rezerwa2 ujęte w cudzysłowy teraz jest mojArkusz bez cudzysłowów.

Kod:
'--------------------------napis rezerwa---------------
Dim mojArkusz as string
mojArkusz=Sheets("Nazwa_arkusza_z_komórką_G1").Range("G1").value
    Range("G1").Select
  'kop do wstaw
    Sheets("Dialog").Select
    Range("D19").Select
    Selection.Copy
    Sheets("Lista").Select
    Range("G1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    With Selection.Font
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = 0
    End With
    ActiveCell.FormulaR1C1 = mojArkusz
    Range("A3").Select
  '==========================rezerwa=====================
    Sheets("lista").Select
    Range("b1:f1").Copy
    With Worksheets(mojArkusz)
       ActiveWorkbook.Worksheets("Rezerwa2").Range("B1000") _
              .End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlValues
    End With

    '===========================lista========================
    Sheets("lista").Select
    Range("b1:h1").Copy


PS. Ponieważ masz makro, a z nim masz problem, przeniosłem temat do działu "mam problem z makrem"
_________________
Kaper Jej Królewskiej Mości :boss

Jeśli dane będą torturowane dość długo, przyznają się do wszystkiego
ID posta: 424040 Skopiuj do schowka
 
 
madasz 
Fan Excela


Wersja: Win Office 2016
Posty: 87
Wysłany: 10-01-2023, 22:54   

Dzięki.
To się wszystko odbywa w arkuszu "Lista" i komórka G1 jest w tym arkuszu.
Czyli
Kod:
mojArkusz=Sheets("Nazwa_arkusza_z_komórką_G1").Range("G1").value

zastąpić:
Kod:
mojArkusz=Sheets("Lista").Range("G1").value

???
ID posta: 424041 Skopiuj do schowka
 
 
Kaper 



Zaproszone osoby: 2
Wersja: Win Office 365
Pomógł: 4407 razy
Posty: 8697
Wysłany: 10-01-2023, 22:55   

Tak
_________________
Kaper Jej Królewskiej Mości :boss

Jeśli dane będą torturowane dość długo, przyznają się do wszystkiego
ID posta: 424043 Skopiuj do schowka
 
 
Tajan


Pomógł: 5252 razy
Posty: 11450
Wysłany: 10-01-2023, 23:01   

Ten fragment:
Kod:
    With Worksheets(mojArkusz)
       ActiveWorkbook.Worksheets("Rezerwa2").Range("B1000") _
              .End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlValues
    End With

to chyba raczej powinien tak wyglądać:
Kod:
    With Worksheets(mojArkusz)
       ActiveWorkbook.Worksheets(mojArkusz).Range("B1000") _
              .End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlValues
    End With

a jeszcze lepiej bez "With/End With":
Kod:

       ActiveWorkbook.Worksheets(mojArkusz).Range("B1000") _
              .End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlValues
   
ID posta: 424044 Skopiuj do schowka
 
 
Kaper 



Zaproszone osoby: 2
Wersja: Win Office 365
Pomógł: 4407 razy
Posty: 8697
Wysłany: 10-01-2023, 23:04   

O, dzięki! przegapiłem, czas spać :-)
_________________
Kaper Jej Królewskiej Mości :boss

Jeśli dane będą torturowane dość długo, przyznają się do wszystkiego
ID posta: 424045 Skopiuj do schowka
 
 
madasz 
Fan Excela


Wersja: Win Office 2016
Posty: 87
Wysłany: 10-01-2023, 23:17   

zatrzymuje się tu:
Kod:
'==========================rezerwa=====================
    Sheets("Lista").Select
    Range("b1:f1").Copy
    With Worksheets(mojArkusz)
       ActiveWorkbook.Worksheets(mojArkusz).Range("B1000") _
              .End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlValues
    End With

U Ciebie było
Kod:
'==========================rezerwa=====================
    Sheets("lista").Select
    Range("b1:f1").Copy
    With Worksheets(mojArkusz)
       ActiveWorkbook.Worksheets("Rezerwa2").Range("B1000") _
              .End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlValues
    End With

to ("Rezerwa") też zamieniłem na (mojArkusz) i to chyba jest błąd.
ID posta: 424046 Skopiuj do schowka
 
 
Tajan


Pomógł: 5252 razy
Posty: 11450
Wysłany: 10-01-2023, 23:31   

Nie, to nie błąd.
Czy na pewno w aktywnym skoroszycie masz arkusz o nazwie z komórki G1 w arkuszu "Lista"?
Jeżeli tak, to sprawdź dokładnie zawartość tej komórki, czy nie ma np. zbędnych spacji lub literówki.
ID posta: 424049 Skopiuj do schowka
 
 
madasz 
Fan Excela


Wersja: Win Office 2016
Posty: 87
Wysłany: 11-01-2023, 00:51   

Wiwat Tajan - miałeś racje tam był brak wartości w G1. Bawię się tym arkuszem od paru lat i stale coś poprawiam, coś przybywa, coś zmieniam i taki klocki wychodzą.
Wiesz mam takiego konika - kolekcjonuję dobre filmy i nawet nie mam czasu ich oglądać. A to G1 miałem już wcześniej poprawić i na zamiarze pozostało. (Ten mój arkusz ma kilkanaście makr - no taki mój bzik...).
Jeszcze raz WIELKIE DZIĘKI !!!!
Na marginesie, jeżeli mogę spytać -dlaczego "a jeszcze lepiej bez "With/End With":"
Pozdrawiam !
ID posta: 424053 Skopiuj do schowka
 
 
Tajan


Pomógł: 5252 razy
Posty: 11450
Wysłany: 11-01-2023, 01:14   

Gdyż w tym przypadku "With/End With" do niczego nie służy, bowiem nie odwołujesz się do tej instrukcji. Masz podwójne odwołanie do tego samego arkusza, więc jedno z nich jest zbędne. Jeżeli jednak chcesz użyć tej klauzuli to należy to zrobić tak:
Kod:
With Worksheets(mojArkusz)
    .Range("B1000").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlValues
End With
jednak, skoro pomiędzy "With" a "End With" nie ma innych instrukcji odwołujących się do tego arkusza, nie ma sensu jej używać.
ID posta: 424054 Skopiuj do schowka
 
 
madasz 
Fan Excela


Wersja: Win Office 2016
Posty: 87
Wysłany: 16-01-2023, 16:13   

Witaj.
Próbowałem wysłać Ci na PW opis całego mego problemu.
Ta poprawka, którą sugerowałeś nie pomogła. Oto całość tego makra:
ub
Kod:
Wstaw_Tytuł()
    '
    ' Wstaw_Tytuł Makro
    '--------------------------napis rezerwa---------------
    Dim mojArkusz As String
    mojArkusz = Sheets("Lista").Range("G1").Value
    Range("G1").Select
   'kop do wstaw
   Sheets("Dialog").Select
    Range("D19").Select
    Selection.Copy
    Sheets("Lista").Select
    Range("G1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    With Selection.Font
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = 0
    End With
   
   
    ActiveCell.FormulaR1C1 = mojArkusz
    Range("A3").Select
  '==========================rezerwa=====================
   Sheets("lista").Select
    Range("b1:f1").Copy
    With Worksheets(mojArkusz)
      ActiveWorkbook.Worksheets(mojArkusz).Range("B1000") _
              .End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlValues
    End With

    '===========================lista========================
    Sheets("lista").Select
    Range("b1:h1").Copy
    With Worksheets("lista")
        ActiveWorkbook.Worksheets("lista").Range("B6500") _
                .End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlValues
    End With

    '====================== i sortuj po wstawieniu=====
    Range("B7:h6500").Select
    ActiveWorkbook.Worksheets("lista").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("lista").Sort.SortFields.Add Key:=Range("B7:B6500"), _
                                                           SortOn:=xlSortOnValues, Order:=xlAscending, _
                                                           DataOption:=xlSortTextAsNumbers
    With ActiveWorkbook.Worksheets("lista").Sort
        .SetRange Range("B7:h6500")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
'________________________________________kop do select________________________
 
    Range("A1").Select
End Sub
ID posta: 424242 Skopiuj do schowka
 
 
Tajan


Pomógł: 5252 razy
Posty: 11450
Wysłany: 16-01-2023, 18:12   

Czytałem twoją wiadomość, ale jej nie zrozumiałem bo nie ma w nim nic o tym na czym polega ten błąd. Z tego co widzę w powyższym kodzie, to za wcześnie przypisujesz do zmiennej nazwę arkusza z komórki G1:
Kod:
mojArkusz = Sheets("Lista").Range("G1").Value
bo robisz to zanim do tej komórki zostanie przypisana wartość z komórki D19 arkusza "Dialog".
Ta linia powinna być wstawiona już po nadaniu wartości dla tej komórki
Kod:
Sub Wstaw_Tytuł()
    '
    ' Wstaw_Tytuł Makro
    '--------------------------napis rezerwa---------------
    Dim mojArkusz As String
   
    Range("G1").Select
   'kop do wstaw
   Sheets("Dialog").Select
    Range("D19").Select
    Selection.Copy
    Sheets("Lista").Select
    Range("G1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    With Selection.Font
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = 0
    End With

mojArkusz = Sheets("Lista").Range("G1").Value ' <-- powinno być tutaj

       ActiveCell.FormulaR1C1 = mojArkusz ' ta linia jest niepotrzebna!

ID posta: 424244 Skopiuj do schowka
 
 
madasz 
Fan Excela


Wersja: Win Office 2016
Posty: 87
Wysłany: 16-01-2023, 19:04   

Poprawiłem i teraz jest OK! (Chyba??)
Rozumiem, że nie dajesz nr.tel.
Wprowadziłem wcześniej ściągnięte pliki i działa!
Dzięki Tajan.
ID posta: 424247 Skopiuj do schowka
 
 
Tajan


Pomógł: 5252 razy
Posty: 11450
Wysłany: 16-01-2023, 19:48   

Kontakt ze mną tylko poprzez forum.
ID posta: 424249 Skopiuj do schowka
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Theme xandgreen created by spleen& Programosy modified v0.3 by warna
Opieka techniczna www.wip.pl

Archiwum

Strona używa plików cookies.

Kliknij tutaj, żeby dowiedzieć się jaki jest cel używania cookies oraz jak zmienić ustawienia cookie w przeglądarce.
Korzystając ze strony użytkownik wyraża zgodę na używanie plików cookies, zgodnie z bieżącymi ustawieniami przeglądarki.
Sprawdź, w jaki sposób przetwarzamy dane osobowe