napisał: Trebor postów: 1209
umieszczony: 30 lipca 2012 20:08
|
|
Zagadki są w tym wszystkim najciekawsze. Jaki błąd wywołuje mój kod, a nie wywołuje ten bardziej rozbudowany. Nie chodzi tutaj o moje ambicje, ale o zrozumienie problemu. Co mam zrobić aby go wyłapać. Trochę się domyślam, a chcę mieć pewność. |
|
napisał: jamanow postów: 69
umieszczony: 30 lipca 2012 18:43
|
|
Uproszczenie kodu, które dokonałeś wpisuje ref.numer wydawałoby się poprawnie, niestety uproszczona procedura ponownie cierpi na ta sama dolegliwość. Mianowicie ref. Numer, który wypisuje zakłóca działanie procedury exportu, która działa poprawnie w przypadku użycia "nieuproszczonego kodu".
Zagadka lezy prawdopodobnie w linii:
PM_Index.Cells(x, 1).Offset(1, 1).DataSeries Rowcol:=xlColumns, Type:=xlLinear, Date:=xlDay, Step:=0.1, Stop:=huvNrDetalj + 0.9, Trend:=False która formatuje ref.numer w odpowiedni sposób. i tego właśnie nie bardzo rozumie.
Rozwiązanie zagadki ma nie ma dla mnie żywotnego znaczenia, tak naprawdę to istotne dla mnie jest to ze kod działa poprawnie. Dlatego nie zawracaj sobie tym głowy. Jak na razie to jestem ci bardzo wdzięczny za dotychczasową, wielokrotną pomoc i memento :) |
|
napisał: Trebor postów: 1209
umieszczony: 30 lipca 2012 15:53
|
|
Podany przez Ciebie kod można uprościć do postaci:
Sub PrintDecimalRefNrRefNrInPMindexList_ColumnB()
Dim x As Long
For x = 8 To PM_Index.Cells(Rows.Count, 1).End(xlUp).Row
If PM_Index.Cells(x, 1) <> "" Then
PM_Index.Cells(x, 2).Value = Mid(PM_Index.Cells(x, 1), 3, 4)
Else
PM_Index.Cells(x, 2).Value = PM_Index.Cells(x, 2).Offset(-1, 0) + 0.1
End If
Next x
End Sub
Może być trochę wolniejszy, ale przy obecnej ilości danych nie będzie to zauważalne.
Czy ta postać jest dla Ciebie czytelniejsza? |
|
napisał: jamanow postów: 69
umieszczony: 30 lipca 2012 11:10
|
|
Kod, który proponujesz mimo poprawki nie do końca działa tak jak bym sobie życzył. Problemem źródłowym jest to ze od początku złe kombinowałem. Zdaje sobie sprawę ze nie łatwo pomoc jest osobie, która nie do końca potrafi zdefiniować swoje wymagania.
Rozwiązaniem, które rozwiązuje mój problem jest poniższy kod wpisujący referens numer.
Sub PrintDecimalRefNrRefNrInPMindexList_ColumnB()
On Error Resume Next
Dim x, LastRow As Integer
LastRow = PM_Index.Cells(Rows.Count, 1).End(xlUp).Row
For x = 1 To LastRow
If PM_Index.Cells(x, 1) <> "" Then
Dim huvNrDetalj As Double
huvNrDetalj = Mid(PM_Index.Cells(x, 1), 3, 4)
PM_Index.Cells(x, 1).Offset(1, 1).Value = huvNrDetalj + 0.1
PM_Index.Cells(x, 1).Offset(1, 1).DataSeries Rowcol:=xlColumns, Type:=xlLinear, Date:=xlDay, Step:=0.1, Stop:=huvNrDetalj + 0.9, Trend:=False
End If
Next x
On Error GoTo 0
End Sub
Przyznam jednak ze nie do końca rozumie, dlaczego właśnie to rozwiązanie formatuje wartości numeryczne tak jag chce.
Dzięki Trebor za pomoc. Twoje rozwiązanie mimo wszystko pokazało mi cos nowego. |
|
napisał: Trebor postów: 1209
umieszczony: 29 lipca 2012 20:06
|
|
Nie wiem jak chcesz aby to działało. Zacznijmy od procedurki
Sub PrintDecimalRefNrRefNrInPMindexList_ColumnB()
Dim cll As Range
For Each cll In Range("B8:B1298")
If IsNumeric(cll) And cll <> "" Then
cll.Value = cll.Value + 0.1
Else
cll.Value = cll.Offset(-1, 0) + 0.1
End If
Next cll
End Sub |
|
napisał: jamanow postów: 69
umieszczony: 29 lipca 2012 15:04
edytowany: 29 lipca 2012 15:05
|
|
Problem z formatowaniem cell.
Zamiast szczegółowo opisywać problem załączam dodatek, w którym można dokładnie zobaczyć, o co mi chodzi.
Problem polega na formacie kolumny B:B w arkuszu PM_Index_1000. A raczej procedury PrintDecimalRefNrRefNrInPMindexList_ColumnB, która wypełnia kolumnę B:B numerem indeksowym
Niepoprawny format numeru indeksowego powoduje nieprawidłowe działanie procedury Export. Zadaniem tej procedury jest przepisanie danych z arkusza Dxxxx do arkusza PM_Index_1000. |
|
wstecz 1 dalej wszystkich stron: 1
|
|