< návrat zpět

MS Excel


Téma: Podmíněné formátování do formuláře UserForm VBA rss

Zaslal/a 22.10.2016 21:57

Ahoj, prosím o pomoc s tvorbou fomuláře VBA. Formulář se zobrazí při doubleclicku někde ve sloupečku A.
Aktuálně funguje formulář tak, že v TextBox1 až 3 se ukazují hodnoty ve sloupečcích A až C podle aktuálního řádku, ve kterém je zvolená buňka. Při pohybu po řádcích se automaticky mění i hodnoty v TextBoxech. Zároveň se načítá do TextBoxů i barva písma a pozadí
Prosím o pomoc s:
1) Načtení barvy písma a pozadí podmíněně formátovaných buněk Ve sloupečku B je uplatněno jak nepodmíněné (buňka B2, modré pozadí) tak podmíněné (na text B3 a B4 různé barvy) formátování. Do TextBox2 se načte jen nepodmíněné formátování. Jde zajistit načtení aktuálního formátování?
2) Zobrazení datumu ve formátu dd.mm.yy Datum ze sloupečku C se v TextBox3 zobrazí ve formátu "dd/mm/yy". Jak zajistit formát "dd.mm.yy" v TextBox3?
Předem moc díky za odpovědi
Aleš

Příloha: zip33160_lifeformiii.zip (31kB, staženo 20x)
Zaslat odpověď >

#033161
avatar
ad 2)
toto
.TextBox3.Value = Cells(ActiveCell.Row, 3)
nahradit za
.TextBox3.Value = Format(Cells(ActiveCell.Row, 3), "dd.mm.yy")citovat
#033162
avatar
Podminene fomatovani bunky se do Textboxu neprenese.. je potreba manualne nastavit v podmince jako v samotnem podm. form. napr:


Sub vyplnFormular(Riadok As Long)
Dim vBColor, vFColor, bBold As Boolean
With UserForm1
.TextBox1.Value = Cells(ActiveCell.Row, 1)
.TextBox2.Value = Cells(ActiveCell.Row, 2)
.TextBox3.Value = Format(Cells(ActiveCell.Row, 3), "dd.mm.yy")

.TextBox1.BackColor = Cells(ActiveCell.Row, 1).Interior.Color
.TextBox1.ForeColor = Cells(ActiveCell.Row, 1).Font.Color

Select Case Cells(ActiveCell.Row, 2).Value
Case Is = "B4"
vBColor = RGB(153, 204, 0)
vFColor = &H80000008
bBold = False
Case Is = "B3"
vBColor = &HFFFF&
vFColor = &HFF0000
bBold = True
Case Else
vBColor = &H80000005
vFColor = &H80000008
bBold = False
End Select

.TextBox2.BackColor = vBColor
.TextBox2.ForeColor = vFColor
.TextBox2.Font.Bold = bBold

.TextBox3.BackColor = Cells(ActiveCell.Row, 3).Interior.Color
.TextBox3.ForeColor = Cells(ActiveCell.Row, 3).Font.Color

End With
End Sub

sydcitovat
#033163
avatar
Ahoj,
díky moc za odpovědi. Formát datumu funguje perfektně. Že nejde přenést podmíněné formátování je mrzuté, protože mám ve zdrojové tabulce hodně podmíněně formátovaných buněk poměrně složitými vzorci. Ale s tím se nějak poperu.
Takže, co teď řeším:)

1) Co v přenášení formátů nefunguje je to, že bych potřeboval ze sloupečku B přenést jak podmíněné formáty (B3, B4), tak nepodmíněné formáty (B2, B5..B16). Jde tohle nějak zajistit?

2) Pro přenos podmíněného formátování sloupečku 2 jsem našel formulku BarvaPozadi = Cells(ActiveCell.Row; 2).FormatConditions(1).Interior.Color ... tohle ale nepřenese aktuální stav ale první z podmínek podmíněného formátování. Najde někdo způsob, jak sem dostat aktuální stav podmíněného formátování?

3) V jedné buňce (sloupeček D) si zapisuji úkoly. Hotové označím zeleným písmem, nehotové červeným. Dají se takovéto vícebarevné texty přenést do TextBoxu4 i s barvami?

Opět díky moc
Aleš
Příloha: zip33163_lifeformiii.zip (32kB, staženo 16x)
citovat
icon #033164
eLCHa
Já myslím, že to jde. Musel bychověřit a teď nejsem u excelu ale podívejte se na
Range.FormatConditionscitovat
#033165
avatar
Zkuste tohle:
.TextBox2.BackColor = Cells(ActiveCell.Row, 2).DisplayFormat.Interior.Color
.TextBox2.Font.Bold = Cells(ActiveCell.Row, 2).DisplayFormat.Font.Bold
.TextBox2.ForeColor = Cells(ActiveCell.Row, 2).DisplayFormat.Font.Color


ohledne bodu 3 zkuste prostudovat nasledujici:
http://stackoverflow.com/questions/23598211/every-character-in-textbox-in-different-color-in-vba-excelcitovat
#033166
avatar
Ahoj,
díky za odpovědi:
To eLCHa: To jsem našel, ale bohužel nevím, jakl to implemtovat, aby to vracelo aktuální formáty

To SYD: To bohužel nejede:-(
Díky Alešcitovat
#033168
avatar
Tak tedy cely kod nasledovne:

Sub vyplnFormular(Riadok As Long)
Dim vBColor, vFColor, bBold As Boolean
Dim i As Integer, x As Integer
With UserForm1
With .TextBox1
.Value = Cells(ActiveCell.Row, 1)
.BackColor = Cells(ActiveCell.Row, 1).Interior.Color
.ForeColor = Cells(ActiveCell.Row, 1).Font.Color
End With
With .TextBox2
.Value = Cells(ActiveCell.Row, 2)
.BackColor = Cells(ActiveCell.Row, 2).DisplayFormat.Interior.Color
.Font.Bold = Cells(ActiveCell.Row, 2).DisplayFormat.Font.Bold
.ForeColor = Cells(ActiveCell.Row, 2).DisplayFormat.Font.Color
End With
With .TextBox3
.Value = Format(Cells(ActiveCell.Row, 3), "dd.mm.yy")
.BackColor = Cells(ActiveCell.Row, 3).Interior.Color
.ForeColor = Cells(ActiveCell.Row, 3).Font.Color
End With
With .inkBox
.Text = Cells(ActiveCell.Row, 4)
i = Len(Cells(ActiveCell.Row, 4))
For x = 1 To i
.SelStart = x - 1
.SelLength = 1
.SelColor = Cells(ActiveCell.Row, 4).Characters(x, 1).Font.Color
Next x
End With
End With


Misto textbox4 je pouzit InkEdit control viz priloha.
syd
Příloha: rar33168_lifeformiii-syd.rar (34kB, staženo 26x)
citovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Aktivní diskuse

Makro na opakovanou změnu barvy tlačítka

Jiří497 • 26.1. 20:31

Pozvyhledat s vnořeným COUNTIF

Jiří497 • 26.1. 19:36

Makro na opakovanou změnu barvy tlačítka

alois1111 • 26.1. 13:24

Pozvyhledat s vnořeným COUNTIF

majovy-bycek • 26.1. 12:45

Makro na opakovanou změnu barvy tlačítka

alois1111 • 26.1. 12:32

Makro na výmaz hodnoty pouze v modře podbarvené

Anonym • 26.1. 11:29

SVYHLEDAT (generovaná cesta oblasti vyhledávaní)

eLCHa • 26.1. 10:05