Janusz K.

Janusz K. Ekspert rozwoju i
przyszłości firm,
struktur, systemów
or...

Temat: Makra i Visual Basic

Wiadomość od moderatora:

Proszę rozważniej dobierać wątki, w których zadawane są pytania....

Temat: Makra i Visual Basic

Mając 2 arkusze:
1 arkusz zawiera dane do wykresu oraz tytul wykresu mieszcacy sie w komórce C13
2 arkusz zawiera wykres

Moim zadaniem jest stworzenie makra, ktore bedzie wprowadzalo Tytuł wykresu
z komórki c13 Arkusza1 do wykresu mieszczącego sie w arkuszu 2

konto usunięte

Temat: Makra i Visual Basic


Sub Wstaw_Tytuł_Wykresu()
Charts("Wykres1").ChartTitle.Text = _
Sheets("Arkusz1").Range("C13").Value
End Sub


edit: nie zauważyłem, ze wykres ma byc obiektem w innym arkuszu:

Sub Wstaw_Tytuł_Wykresu2()
Sheets("Arkusz2").ChartObjects("Wykres 1").Chart.ChartTitle.Text = _
Sheets("Arkusz1").Range("C13").Value
End Sub
Marcin Dzierżanowski edytował(a) ten post dnia 02.08.10 o godzinie 14:26
Monika M.

Monika M. PROGRAMISTA VBA,
Excel, Access,
Outlook, Word -
SZKOLENIA

Temat: Makra i Visual Basic

Michał Łęcki:
Moim zadaniem jest stworzenie makra, ktore bedzie wprowadzalo Tytuł wykresu
z komórki c13 Arkusza1 do wykresu mieszczącego sie w arkuszu 2

Panie Michale, Panie Marcinie - w Narodzie taka tendencja, że jak się nie wie jak, to... makro.
Do tego nie potrzeba w ogóle makra.
Makrem wcale nie jest lepiej.

Zaznaczamy element tytułu na wykresie i w pasku formuły wpisujemy znak "=", a następnie przechodzimy do arkusza z danymi, gdzie klikamy komórkę C13 i zatwierdzamy Enterem.
W ten sposób zawartość komórki C13 będzie wyświetlana w polu tekstowym tytułu.

A użycie makra do tego niepotrzebnie będzie wymuszało na użytkowniku włączenie makr, a nie każdy będzie wiedział jak itd.
Daria Zalewska

Daria Zalewska Specjalista ds
prognoz i analiz
rynkowych

Temat: Makra i Visual Basic

Monika M.:
Michał Łęcki:
Moim zadaniem jest stworzenie makra, ktore bedzie wprowadzalo Tytuł wykresu
z komórki c13 Arkusza1 do wykresu mieszczącego sie w arkuszu 2

Panie Michale, Panie Marcinie - w Narodzie taka tendencja, że jak się nie wie jak, to... makro.
Do tego nie potrzeba w ogóle makra.
Makrem wcale nie jest lepiej.

Zaznaczamy element tytułu na wykresie i w pasku formuły wpisujemy znak "=", a następnie przechodzimy do arkusza z danymi, gdzie klikamy komórkę C13 i zatwierdzamy Enterem.
W ten sposób zawartość komórki C13 będzie wyświetlana w polu tekstowym tytułu.

A użycie makra do tego niepotrzebnie będzie wymuszało na użytkowniku włączenie makr, a nie każdy będzie wiedział jak itd.

Proste rozwiązania są zawsze najlepsze :)
Widzę, że spsób działa też z polami tekstowymi. Super!
Monika M.

Monika M. PROGRAMISTA VBA,
Excel, Access,
Outlook, Word -
SZKOLENIA

Temat: Makra i Visual Basic

Daria Zalewska:
Widzę, że spsób działa też z polami tekstowymi.
Bo tytuł na wykresie i np. opisy osi, to są pola tekstowe.
Działa to z wszystkimi polami tekstowymi, np. autokształtami, ale również z obiektami WordArt, więc można np. na wykresie wstawić jako tytuł element WordArt i cieszyć się efektem (zwłaszcza w 2007 wygląda to atrakcyjnie).

Można zrobić, np. wyświetlanie jakiejś ważnej wartości w kółku, czy innym kształcie w arkuszu, a dane będą pobierane z jakiejś komórki.
Nie da się tylko wpisać tam formuł, łączenia tekstu - trzeba to zrobić w jakiejś komórce i w kształcie wstawić formułę odniesienia do jej wartości.
Polecam eksperymentowanie z kształtami i efektami formatowania w 2007 - czasem wychodzą naprawdę ciekawe elementy.

Przy okazji: kształty, a nawet WordArt można wykorzystać również jako, np. przyciski dla makr. W menu kontekstowym dla każdego wstawionego kształtu/pola tekstowego/elementu WordArt jest polecenie "Przypisz makro". Wykorzystując ciekawe gotowe formatowanie z Worda 2007 można zrobić atrakcyjniejszy przycisk niż ten, np. z formularzy.
Trzeba tylko pamiętać, że formatowanie tych elementów 2007 nie zawsze jest zgodne z poprzednimi wersjami.

Temat: Makra i Visual Basic

Mam pytanie stworzyłem sobie filtr, który przeszukuje wiersze kolumny f, jesli znajdzie w nich nazwę "Ograniczenia" ukrywa te wiersze.W kolumnie g znajduja się natomiast liczby które chce zsumować. Problem polega na tym ze na tak przefiltrowane dane nie dziala funkcja suma pośrednia pozwalająca sumowac tylko widoczne wiersze.

Sub ukryj_wiersze()
Dim lWiersz As Long
Dim lKolumna As Long
Dim i As Long, j As Long
Application.ScreenUpdating = False

With ThisWorkbook.Worksheets("BL-7")
Wiersz = .Cells(.Rows.Count, "f").End(xlUp).Row
lKolumna = .Cells(1, .Columns.Count).End(xlToLeft).Column

For i = 1 To lWiersz + 1
For j = 1 To lKolumna
If .Cells(i, j).Value ="Ograniczenia" Then
.Rows(i).Hidden = true
End If


Next j
Next i

End With
End Sub
Janusz K.

Janusz K. Ekspert rozwoju i
przyszłości firm,
struktur, systemów
or...

Temat: Makra i Visual Basic

Wprowadź do pętli sumowanie komórek z kolumny "G" i wierszy do ukrycia.
Nie zapomnij tez wprowadzić zapisu, uwalniającego ekran: Application.ScreenUpdating = True, zanim zakończysz makro.. ;-))

'Poprawiono BBCodeJanusz K. edytował(a) ten post dnia 16.08.10 o godzinie 14:31

Temat: Makra i Visual Basic

Application.ScreenUpdating = true . Oczywiscie znajduje sie w moim kodzie :) . Lecz co do sumy interesuje mnie stworzenie funkcji sumy ktora tak jak suma posrednia przefiltrowane dane autofiltrem bedzie dodawala tylko widoczne wiersze. w tej chwili mój filtr ukrywa wiersze, lecz gdy zastosuje sume posrednia bierze ona do obliczen także wiersze ukryte. Co warto dodać pracuje na Exelu 2003.
Janusz K.

Janusz K. Ekspert rozwoju i
przyszłości firm,
struktur, systemów
or...

Temat: Makra i Visual Basic

Dlatego radzę, abyś do pętli For ... Next... wprowadził, jeszcze przed ukryciem wiersza sumowanie wartości z kolumny "G". Zadeklaruj nową zmienną i ustaw jej wartość na "0", rozpoczynając procedurę.
Na zakończenie możesz kazać wpisać poszukiwaną sumę w dowolna komórkę.

Jeśli chciałbyś tego sumowania niezależnie od procedury, którą cytujesz, to, skoro umiesz pisać kod, skonstruuj procedurę, sumującą wartości z kolumny "G", jeśli wiersze nie są ukryte.
Grzesiek Bienias

Grzesiek Bienias Opis w High
Definition i
dźwiękiem 7.1 :)

Temat: Makra i Visual Basic

Mam taki mały problem.

Otóż, mam dwa pliki - źródłowy i docelowy. O ile docelowy ma z góry ustaloną nazwę, o tyle źródłowy stałej nazwy nie ma (na szczęście [jeśli to ma w ogóle znaczenie] pierwsza część nazwy jest stała) - np. source_xxx_yyy_zzz.xls i destination_file.xls .

Jak skonstruować ścieżkę do pliku w makro, by poradzić sobie z tym zmiennym fragmentem ?
Janusz K.

Janusz K. Ekspert rozwoju i
przyszłości firm,
struktur, systemów
or...

Temat: Makra i Visual Basic

A nie wystarczy użyć funkcji InputBox?
Przykład:
mySource=InputBox("Wprowadź nazwę arkusza źródłowego")

Trochę dziwna konstrukcja - bo zwykle arkusz źródłowy jest znany, a nazwę tworzy się dla docelowego.
Możesz także wyświetlić listę arkuszy, z których wybierzesz źródłowy...

konto usunięte

Temat: Makra i Visual Basic

Grzesiek Bienias:
Mam taki mały problem.

Otóż, mam dwa pliki - źródłowy i docelowy. O ile docelowy ma z góry ustaloną nazwę, o tyle źródłowy stałej nazwy nie ma (na szczęście [jeśli to ma w ogóle znaczenie] pierwsza część nazwy jest stała) - np. source_xxx_yyy_zzz.xls i destination_file.xls .

Jak skonstruować ścieżkę do pliku w makro, by poradzić sobie z tym zmiennym fragmentem ?

jest takie cuś jak DIR()

Sub LoopThruDirectory()

Dim strPath As String
Dim strFile As String
Dim x As Integer strPath = "C:\temp\datajunction\XMLOUT\"
strFile = Dir(strPath)

Do While strFile <> ""
x = x + 1
Sheet1.Cells(x, 1) = strFile
strFile = Dir ' Get next entry.
Loop

End Su

Temat: Makra i Visual Basic

Mam taki problem ktory poczesci poruszalem juz wczesniej !

suma posrednia nie dodaje komorek dla ukrytych wierszy poprzez autofiltr w excellu 2003 . Natomiast dodaje wiersze ukryte poprzez napisany przezemnie kod , czy ktos doradzi co musze zrobic zeby to dzialalo poprawnie w tej wersji offica .

w nowsych wersjach nie ma problemu wpisuje nr funkcji sumy pośredniej 109 wskazuje zakres i dziala.

oto kod w jakim ukrywam wiersze zawierajace cyfre 1
Sub ukryj_wiersze()
Dim lWiersz As Long
Dim lKolumna As Long
Dim i As Long, j As Long
Application.ScreenUpdating = False

With ThisWorkbook.Worksheets("BL-7")
Wiersz = .Cells(.Rows.Count, "f").End(xlUp).Row
lKolumna = .Cells(1, .Columns.Count).End(xlToLeft).Column

For i = 1 To lWiersz + 1
For j = 1 To lKolumna
If .Cells(i, j).Value = 1 Then
.Rows(i).Hidden = true
End If

Next j
Next i

End With
Application.ScreenUpdating = true
End Sub
Michał Pawłowski

Michał Pawłowski Student, Szkoła
Główna Handlowa w
Warszawie

Temat: Makra i Visual Basic

A może zamiast funkcji suma pośrednia zastosować własną alternatywę? Np. proste sumowanie wartości z widocznych komórek:

Function SUMA_WIDOCZNYCH(Rng As Range) As Double
Dim Komorka As Range

For Each Komorka In Rng
If Komorka.EntireRow.Hidden = False Then SUMA_WIDOCZNYCH = SUMA_WIDOCZNYCH + Komorka.Value
Next Komorka

End Function

konto usunięte

Temat: Makra i Visual Basic

Zadanie:
Przy otwarciu pliku otwiera się formularz. Z polem ComboBox1 i TextBox1.
Z listy ComboBox1 wybieramy wyrażeniem z kolumny Arkusz1 zaś do TextBox1 wpisujemy wartość jak ma być wpisana do innej kolumny w Arkuszu1. Przy naciśnięciu przycisku wartość ładuje się do innej kolumny w wierszu gdzie jest zapisana wartość wybrana w ComboBox1.

Poniższy kod jaki testuje nie ma jeszcze przycisku. Ale daje ogólny obraz tego co ma robić.
Zastosowałem ComboBox1.ListIndex by wyznaczyć aktywną komórkę w którą ma być wpisana dana. Ale może to ślepa uliczka z tą aktywną komórką.
Obecnie przy tym zapisie aktywuje się co druga komórka, czyli skacze z pierwszego wiersza w kolumnie na 3 wiersz. Co lepsze w komórkę nie wpisuje się dana do czasu jak ponownie zmienie wartość w ComboBox1.

Private Sub UserForm_Initialize()

ComboBox1.RowSource = "G2:G6"
End Sub

Private Sub ComboBox1_Change()
n = ComboBox1.ListIndex

ActiveCell.Value = TextBox1.Value
ActiveCell.Offset(n, 0).Activate

End Sub
Monika M.

Monika M. PROGRAMISTA VBA,
Excel, Access,
Outlook, Word -
SZKOLENIA

Temat: Makra i Visual Basic

Ireneusz P.:
Co lepsze w komórkę nie wpisuje się
dana do czasu jak ponownie zmienie wartość w ComboBox1.

No prawidłowo! Przecież tak właśnie jest napisany kod!

Jeśli prawidłowo zrozumiałam opis, co chcemy tutaj osiągnąć, to powinien być przycisk, a nie wpisywanie wartości z pola tekstowego przy zmianie pola kombi (bardziej logiczne działanie, bo użytkownik może najpierw wybrać coś z pola kombi, zanim wpisze wartość do pola tekstowego i zrobi się "kaszana").
Poza tym ListIndex zwraca indeks wybranej pozycji, dokładnie jej położenie na liście, a nie ma to nic wspólnego z adresem komórki (wiersza) związanego z zakresem komórek, jako źródłem dla listy pola kombi.

Prawidłowo powinno być coś w ten "deseń" (cboLista = ComboBox1, txtWartosc = TextBox1):

Private Sub cmdWpisz_Click()
Dim n As Long

'Aby określić, który jest początkowy wiersz źródła pozycji listy
'można z zakresu Range określonego przez to źródło otrzymać numer wiersza.
'Rozwiązanie uniwersalne, gdy zmieniamy źródło listy i gdy zakresem miałby
'być zakres kolumn z oznaczeniem dwuliterowym.
n = Range(cboLista.RowSource).Row + cboLista.ListIndex
Cells(n, 10).Value = txtWartosc.Value

End Sub

konto usunięte

Temat: Makra i Visual Basic

Mam już to rozwiązane. Zmiene fir i las można dołączyć do formularza jako TextBox

Private Sub UserForm_Initialize()
fir = Cells(1, 2).Value
las = Cells(1, 3).Value
ComboBox1.RowSource = fir & ":" & las
End Sub

Private Sub ComboBox1_Change()
n = ComboBox1.ListIndex

Cells(ComboBox1.ListIndex + 2, 6).Value = TextBox1.Value

End SubIreneusz P. edytował(a) ten post dnia 22.03.11 o godzinie 21:48
Aleksandra Bluj

Aleksandra Bluj Interest rate market
research, IPOPEMA
Securities

Temat: Makra i Visual Basic

Witam

Potrzebuję kogoś kto stworzy kilka makr (excel i word 2010) to automatycznego updatowania danyh excelowych ze źrodeł zewnętrznych (także stron internetowych); tworzenia dynamicznych wykresów a także tworzenia jednego dokumentu word z kilku (wraz z updatem łaczy.
czekam na informacje:
aleksandra.bluj@pekao.com.pl

Sprawa jest dość pilna.
Pozdrawiam

Ab

Temat: Makra i Visual Basic

Witam mam prośbe czy wie ktoś może jak zmodyfikować tak nagrane makro aby makro to zmieniało zakres {14,15,16,17,18} na kolejny ciąg liczbowy czyli {19,20,21,22,23} i tak za każdym razem na następnym ciąg 5 cyfrowy. Pozdrawiam

Range("H4").Select
ActiveWindow.SmallScroll ToRight:=6
Range("S4").Select
ActiveCell.FormulaR1C1 = _
"=SUM(VLOOKUP(RC[-18],Rozchody!C[-18]:C[226],{14,15,16,17,18},0))"
Range("S4").Select
Selection.AutoFill Destination:=Range("S4:S300")
Range("S4:S300").Select
Range("S4").Select

Następna dyskusja:

Excel + Visual Basic




Wyślij zaproszenie do