Zas tak složitý to není :-), něco jsem tam teda umazal aby to fungovalo správně, ale předpokládám že to ničemu nevadí :-) - nějaké vzorečky pro číslování v listech příjem a výdej kolem 60. řádku.
Nevím teda jestli číslování na těch to listech má být přírustkové, nebo jestli se má jen převzít pořadové číslo z listu sklad (tak to momentálně je).
S pozdravem
M@
normálně by mělo fungovat něco jako
List2.Range("F7") = ComboBox1.Text
List2.Range("H7") = ComboBox2.Text
List2.Range("J7") = TextBox1.Text
M@
ten refresh může být i součástí ukládacího makra.
ListX.Range("NAZEV").QueryTable.Refresh BackgroundQuery:=False
soubor view -> uložit jako -> v dialogu vyrat Nástroje -> Obecné možnosti -> Doporučeno pouze pro čtení, případně zamknout, ale zkoušet jsem nezkoušel jestli pomůže, je to jen tip.
do souboru view do ThisWorkbook do Workbook_Open vložit Application.DisplayAlerts = False
před vypnutím zas zapnout.
M@
Pokud předem víš kam, tak to lze, akorát už trochu složitěji pomocí select case, třeba podle tagu, když tag = něco, tak zapiš hodnotu daného textboxu do listu n1 a buňky xy1, listu n2 a buňky xy2 ...
Bude-li to vždy stejné tak by do těch další tabulek šel dát odkaz na buňku této jediné vyplňované tabulky, ale to už záleží na každém jak to použije :-)
M@
viz. smyčka v příspěvku ... http://wall.cz/index.php?m=topic&id=7782
akorát místo textboxu budeš kontolovat label a jeho caption.
M@
Každý z těch Textboxů má ve vlastnostech (Properties) ve štítku (Tag) adresu buňky do níž se hodnota z něj má zapsat.
Smyčka For Each Control In Me.Controls
If Left(Control.Name, 7) = "TextBox" Then Sheets("Tabulka").Range(Control.Tag) = Control.Text
Next
při stisknutí tlačítka projede všechny prvky formuláře a u těch jejichž název začíná TextBox koukne do tagu a pak do buňky listu "Tabulka" do dané buňky (dle toho tagu) zapíše hodnotu daného Textboxu.
M@
Příloha.
M@
Když vezmu 2003, tak jsou tady 2 sady:
- Ovládací prvky
- Formuláře
Ovládací prvky jsou vázané k listu, nicméně i odtud se lze odkázat na proceduru v mdulu:
Private Sub CommandButton1_Click()
Module1.pok
End Sub
Formuláře - tam se makro přiřazuje a je úplně jedno kde se procedura nachází (v modulu, v listu, či třeba v úplně jiném souboru).
Z tohoto pohledu je lepší používat tlačítko sady Formuláře.
Nevím jestli to nevysvětluju moc blbě :-)
M@
Problém bude asi v tom v tom že tlačítko jako objekt se vztahuje ke svému listu a když tam kódem přepínáš na jiný list, tak to asi bude ono, co se mu nelíbí.
Co by mohlo jít, je že ten samotný kód budeš mít v modulu a tlačítko jako objekt se ti odkáže na kód v modulu.
Osobně používám tlačítka jako Activex (to první).
Oblast tisku alespoň u českých 2003 vytváří pojmenovanou oblast "Oblast_tisku", kterou stačí smazat:
List13.Names("Oblast_tisku").Delete
M@
A pro ty z nás kdo nemají office 2007 či novější, tam pomůže jednoduchá makro funkce :-).
M@
Trochu jiný pokus :-)
M@
Excel 2003
Data -> XML -> Importovat a pak zadat tu adresu.
Pomocí záznamu makra:
Dim promenna As String
promenna = "27074358"
ActiveWorkbook.XmlImport URL:="http://wwwinfo.mfcr.cz/cgi-bin/ares/darv_std.cgi?ico=" & promenna, ImportMap:=Nothing, Overwrite:=True, Destination:=Range("$A$1")
M@
Já myslím, že co se excelu týče, tak je nejvodnější :-), jediné co asi nechceš je mít soubor plný vzorců což by ho do budoucna zpomalovalo a tak pokud ho nechceš mít interaktivní aby se vše měnilo samo, tak stačí výsledek funkce Svyhledat zapsat jako hodnotu, buď zkopírováním oblasti a pak vložit "jako hodnoty", nebo si rovnou nechat hodnoty dosadit makrem:
Public Sub dopln()
Application.ScreenUpdating = False
On Error Resume Next
For rd = 2 To List1.UsedRange.Rows.Count
List1.Cells(rd, 3) = ""
List1.Cells(rd, 4) = ""
List1.Cells(rd, 3) = Application.WorksheetFunction.VLookup(List1.Cells(rd, 1), List2.Range("A:C"), 2, False)
List1.Cells(rd, 4) = Application.WorksheetFunction.VLookup(List1.Cells(rd, 1), List2.Range("A:C"), 3, False)
Next
Application.ScreenUpdating = True
End Sub
M@
že by to novější Excel neuměl?
Tak zkus původní část kódu:
With Application.FileSearch
.NewSearch
.LookIn = File_Path
.Filename = "*.ref"
.SearchSubFolders = False
.Execute
For Each soubor In .FoundFiles
Importdat (soubor)
Next
End With
nahradit tímto:
soubor = Dir$(File_Path & "\*.ref")
Dim souboryt As String
Do While soubor <> ""
If souboryt = "" Then souboryt = soubor Else souboryt = souboryt & "|" & soubor
soubor = Dir$
Loop
For Each oddil In Split(souboryt, "|")
Importdat (File_Path & "\" & oddil)
Next
M@
tak ještě jeden pokus
M@
Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.
Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.