Должны (вроде) работать везде, но андроиде по непонятным причинам обе формулы ругаются на цикличность, на одной машине (если можно это так назвать - Xin XP SP3, Excel 2007) намертво вешают Excel вот так работают и на андроиде и на той машине для E5
Должны (вроде) работать везде, но андроиде по непонятным причинам обе формулы ругаются на цикличность, на одной машине (если можно это так назвать - Xin XP SP3, Excel 2007) намертво вешают Excel вот так работают и на андроиде и на той машине для E5
MAXIMUS_GREEK, допустим, имеем 4 ячейки, в одной ячейке 100%, в остальных трех н/д. В вашем понимании срелнее по этим ячейкам должно быть 100% или 25%? Если все три ячейки = н/д, то среднее должно быть 0 или н/д?
MAXIMUS_GREEK, допустим, имеем 4 ячейки, в одной ячейке 100%, в остальных трех н/д. В вашем понимании срелнее по этим ячейкам должно быть 100% или 25%? Если все три ячейки = н/д, то среднее должно быть 0 или н/д?krosav4ig
Private Sub Worksheet_Change(ByVal Target As Range) With Me.Rows("10:50").Columns("B") If Intersect(Target, .Cells) Is Nothing Then Exit Sub .EntireRow.Hidden = 0 Intersect(.Cells, .SpecialCells(4).Offset(1)).EntireRow.Hidden = 1 End With End Sub
[/vba]
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) With Me.Rows("10:50").Columns("B") If Intersect(Target, .Cells) Is Nothing Then Exit Sub .EntireRow.Hidden = 0 Intersect(.Cells, .SpecialCells(4).Offset(1)).EntireRow.Hidden = 1 End With End Sub
Здравствуйте переименовал кнопки в Digit0 .. Digit9, удалил код, привязанный к кнопкам в модуле класса ClDigitalButtons [vba]
Код
Private WithEvents cb As CommandButton Private cell As Range Public Sub Init(ctrl As CommandButton, r As Range) Set cb = ctrl Set cell = r End Sub Private Sub Class_Terminate() Set cb = Nothing Set cell = Nothing End Sub Private Sub cb_Click() cell = cell.Value & cb.Caption End Sub
[/vba]в стандартном модуле [vba]
Код
Dim colButtons As Collection Sub hookButtons(ws As Object) Dim dBtn As ClDigitalButtons Dim obj As OLEObject Set colButtons = New Collection For Each obj In ws.OLEObjects If TypeOf obj.Object Is CommandButton And Left(obj.Name, 5) = "Digit" Then Set dBtn = New ClDigitalButtons dBtn.Init obj.Object, ws.[B1] colButtons.Add dBtn End If Next End Sub
[/vba]в модуле ЭтаКнига[vba]
Код
Private Sub Workbook_Open() hookButtons ActiveSheet End Sub Private Sub Workbook_SheetActivate(ByVal Sh As Object) hookButtons Sh End Sub
[/vba]
Здравствуйте переименовал кнопки в Digit0 .. Digit9, удалил код, привязанный к кнопкам в модуле класса ClDigitalButtons [vba]
Код
Private WithEvents cb As CommandButton Private cell As Range Public Sub Init(ctrl As CommandButton, r As Range) Set cb = ctrl Set cell = r End Sub Private Sub Class_Terminate() Set cb = Nothing Set cell = Nothing End Sub Private Sub cb_Click() cell = cell.Value & cb.Caption End Sub
[/vba]в стандартном модуле [vba]
Код
Dim colButtons As Collection Sub hookButtons(ws As Object) Dim dBtn As ClDigitalButtons Dim obj As OLEObject Set colButtons = New Collection For Each obj In ws.OLEObjects If TypeOf obj.Object Is CommandButton And Left(obj.Name, 5) = "Digit" Then Set dBtn = New ClDigitalButtons dBtn.Init obj.Object, ws.[B1] colButtons.Add dBtn End If Next End Sub
[/vba]в модуле ЭтаКнига[vba]
Код
Private Sub Workbook_Open() hookButtons ActiveSheet End Sub Private Sub Workbook_SheetActivate(ByVal Sh As Object) hookButtons Sh End Sub
duckky, все дело в версии MSXML парсера, у вас нету 4.0, вот и выдает ошибку [vba]
Код
Private ver% Function МЕТЦБР2#(Optional Code% = 2, Optional dDate As Date) Dim d As Object, ddate1 As Date, elem As Object: Set d = CreateObject("msxml2.domdocument." & MSXMLVersion & ".0") dDate = IIf(dDate, dDate, Date): ddate1 = Application.EDate(dDate, -1): d.async = 0 d.Load ("https://www.cbr.ru/scripts/xml_metall.asp?date_req1=" & ddate1 & "&date_req2=" & dDate) Select Case ver Case Is > 3 'Установлен MSXML >= 4.0, используем XPath функцию last() МЕТЦБР2 = CDbl(d.SelectSingleNode("*/Record[@Code='" & Code & "'][last()]/Buy").Text) Case Else 'иначе используем IXMLDOMNodeList Set elem = d.SelectNodes("*/Record[@Code='" & Code & "']/Buy") МЕТЦБР2 = CDbl(elem(elem.Length - 1).Text) End Select Set d = Nothing End Function Private Function MSXMLVersion%() Dim arrVersions() If ver > 0 Then MSXMLVersion = ver: Exit Function With GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv") .EnumValues 2 ^ 31, "CLSID\{2933BF90-7B36-11D2-B20E-00C04F983E60}\VersionList\", arrVersions End With 'номер старшей версии MSXML, установленной в системе MSXMLVersion = Split(arrVersions(0), ".")(0) ver = MSXMLVersion End Function
[/vba]
duckky, все дело в версии MSXML парсера, у вас нету 4.0, вот и выдает ошибку [vba]
Код
Private ver% Function МЕТЦБР2#(Optional Code% = 2, Optional dDate As Date) Dim d As Object, ddate1 As Date, elem As Object: Set d = CreateObject("msxml2.domdocument." & MSXMLVersion & ".0") dDate = IIf(dDate, dDate, Date): ddate1 = Application.EDate(dDate, -1): d.async = 0 d.Load ("https://www.cbr.ru/scripts/xml_metall.asp?date_req1=" & ddate1 & "&date_req2=" & dDate) Select Case ver Case Is > 3 'Установлен MSXML >= 4.0, используем XPath функцию last() МЕТЦБР2 = CDbl(d.SelectSingleNode("*/Record[@Code='" & Code & "'][last()]/Buy").Text) Case Else 'иначе используем IXMLDOMNodeList Set elem = d.SelectNodes("*/Record[@Code='" & Code & "']/Buy") МЕТЦБР2 = CDbl(elem(elem.Length - 1).Text) End Select Set d = Nothing End Function Private Function MSXMLVersion%() Dim arrVersions() If ver > 0 Then MSXMLVersion = ver: Exit Function With GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv") .EnumValues 2 ^ 31, "CLSID\{2933BF90-7B36-11D2-B20E-00C04F983E60}\VersionList\", arrVersions End With 'номер старшей версии MSXML, установленной в системе MSXMLVersion = Split(arrVersions(0), ".")(0) ver = MSXMLVersion End Function