napisał: adeling-herman postów: 14
umieszczony: 16 marca 2011 08:41
|
|
Super !!! O to mi chodziło :) Dzieki serdeczne za pomoc. Trzymaj sie
Pozdrawiam
A-H |
|
napisał: Trebor postów: 1209
umieszczony: 15 marca 2011 17:27
|
|
W dalszym ciągu nie jestem pewien czy dobrze rozumiem:
Sub przeslij()
Dim ostatnia As Long
If Range("K14") <> "" Or Range("K16") <> "" Or Range("K18") <> "" Then
If Range("K14") = "" Or Range("K16") = "" Or Range("K18") = "" Then
MsgBox "Skompletuj dane w arkuszu 1"
Else
With Sheets("Arkusz2")
ostatnia = .Columns("A:E").Find(What:="*", After:=.Cells(1, 1), _
SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row + 1
.Cells(ostatnia, 1) = Sheets("Arkusz1").Range("K14")
.Cells(ostatnia, 2) = Sheets("Arkusz1").Range("K16")
.Cells(ostatnia, 3) = Sheets("Arkusz1").Range("K18")
.Cells(ostatnia, 4) = Application.UserName
.Cells(ostatnia, 5) = Date
End With
Sheets("Arkusz1").Range("K14,K16,K18,O21").ClearContents
End If
End If
'tutaj taki sam zestaw dla arkusza4
End Sub |
|
napisał: adeling-herman postów: 14
umieszczony: 15 marca 2011 10:23
edytowany: 15 marca 2011 11:38
|
|
Hej,
Faktycznie - zbyt ogolnie to opisalem. Dlatego zalaczylem ten sam przyklad co na początku :)
Zależy mi na tym, żeby po kliknięciu przycisku PRZESLIJ I ZAPISZ do tabeli w Arkusz2 kopiowały sie - jak do tej pory - dane z Arkusz1 i jednocześnie dane z Arkusz4
Dwie pieczenie przy jednym ogniu :) Z góry dzięki
Pzdr
A-H |
|
napisał: Trebor postów: 1209
umieszczony: 14 marca 2011 16:44
|
|
Zdaje się, że nie łapię problemu. Sposób adresowania może być np. taki:
With Sheets("Arkusz2")
ostatnia = .Columns("A:E").Find(What:="*", After:=.Cells(1, 1), _
SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row + 1
.Cells(ostatnia, 1) = Sheets("Arkusz1").Range("A1")
.Cells(ostatnia, 2) = Sheets("Arkusz2").Range("B1")
End With
Jeśli jednak nie o to chodzi, spróbuj opisać to ciut dokładniej. |
|
napisał: adeling-herman postów: 14
umieszczony: 14 marca 2011 11:53
|
|
Dzięki serdeczne za wytlumaczenie :)
Mam jeszcze jedną kwestię z którą chciałbym się do Ciebie zwrócić:
Jak przerobić kod jeśli chciałbym żeby kopiowały mi sie do tabeli dane z rubryk z dwóch różnych arkuszy np: z arkusza1 komórki: A1, A2, A3, a z arkusza2 komórki: B1, B2, B3 ?
Za pomoc serdeczne dzięki
A-H |
|
napisał: Trebor postów: 1209
umieszczony: 4 marca 2011 17:07
|
|
Przypuszczam, że w trakcie projektowania próbowałeś różnych formatek i zostało mnóstwo zbędnych rzeczy. Dla poprawnego działania makra które zamieściłem wystarczą cztery zaznaczone referencje od góry z załączonego obrazka. Minimum - odhacz oznaczone jako Missing. Jednak najpewniej to przepakuj wszystko co niezbędne do nowego skoroszytu.
Linia ostatnia = .Columns("A:E").Find(What:="*", After:=.Cells(1, 1), _
SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
służy do znajdowania ostatniego zajętego wiersza w kolumnach od A do E. Gdy do takiego nr wiersza dodamy 1, otrzymamy nr wiersza w którym będziemy zapisywać dane. Jednak ten sposób ma pewne wady. Najważniejsze to gdy będziemy szukać w zakresie, w którym nie ma danych otrzymamy błąd. Gdy w przeszukiwanym zakresie będzie włączone filtrowanie mamy szanse wyszukać ostatni widoczny wiersz co może doprowadzić do problemów. |
|
napisał: adeling-herman postów: 14
umieszczony: 4 marca 2011 09:05
edytowany: 4 marca 2011 09:21
|
|
Hehe, dziwne.
Podpialem ten sam kod w pracy i działa !!! :D
Hula az milo :)
Ale w domu, na moim kompie nie idzie. Jak byście mieli jakis pomysl dlaczego nie chodzi na moim pryw kompie, dajcie znac (poprzedni post).
Jeszcze raz dzięki za pomoc :)
Pzdr
PS.
Mam jeszcze takie pytanie natury technicznej-powiedz mi co oznancza zmienna "ostatnia" której użyłeś ? Chciałbym to lepiej rozumieć, żeby móc używać tego kodu do innych projektów. |
|
napisał: adeling-herman postów: 14
umieszczony: 3 marca 2011 22:06
|
|
@Trebor
Dzięki Ci dobry człowieku :)
RObie wszystko tak jak napisales, a mimo to zwraca mi komunikat "cant find project or library" i zaraz potem wyświetla sie okno jak w załączniku. Jestem niemal pewien ze dobrze wkleilem kod, w całości jak go napisales pod przycisk Przeslij. Czy wiesz moze co moze byc nie tak ?
Dzięki
Pzdr
A-H |
|
napisał: Trebor postów: 1209
umieszczony: 3 marca 2011 17:55
|
|
Pod przycisk prześlij podepnij poniższy kod
Sub przeslij()
Dim ostatnia As Long
If Range("K14") = "" Then MsgBox "Wpisz cenę gazu": Exit Sub: MsgBox "Dane nie zapisane"
If Range("K16") = "" Then MsgBox "Wpisz cenę elektry": Exit Sub: MsgBox "Dane nie zapisane"
If Range("K18") = "" Then MsgBox "Wpisz cenę oleju": Exit Sub: MsgBox "Dane nie zapisane"
If Range("O21") = "" Then MsgBox "Twoje dane": Exit Sub: MsgBox "Dane nie zapisane"
With Sheets("Arkusz2")
ostatnia = .Columns("A:E").Find(What:="*", After:=.Cells(1, 1), _
SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row + 1
.Cells(ostatnia, 1) = Range("K14")
.Cells(ostatnia, 2) = Range("K16")
.Cells(ostatnia, 3) = Range("K18")
.Cells(ostatnia, 4) = Range("O21")
.Cells(ostatnia, 5) = Date
End With
Range("K14,K16,K18,O21").ClearContents
End Sub
Z grubsza powinno spełniać podstawowe funkcje |
|
napisał: adeling-herman postów: 14
umieszczony: 3 marca 2011 13:50
|
|
Witajcie,
Muszę zrobić w pracy rejestr, taką quasi-bazę danych cen kilku produktów: gazu, oleju napędowego, energii elektrycznej i nazwisko osoboy wprowadzjącej dane.
Chodzi o to, żeby te dane (cena gazu, oleju, energii i nazwisko) przekopiowało się do arkusza2 i zapisywało się jedno pod drugim, tzn. że kliknięcie przycisku Prześlij w formularzu zapisywało by kolejne wiersze w arkuszu2 po sprawdzeniu który wiersz jest pierwszym pustym itd itd.
Zrobilem juz do tego część makr, tzn. przesyłanie danych i czyszczenie formularza, no i moim zdaniem może być, ale nie mogę sobie poradzić z tym zapisywaniem jedno pod drugim :/ Gdyście pomogli byłoby super :) Z góry dzięki.
Pzdr
Adeling-Herman |
|
wstecz 1 dalej wszystkich stron: 1
|
|