Объявление / установка / присвоение значения флажку формы управления на рабочем листе

#excel #vba #checkbox

#excel #vba #флажок

Вопрос:

У меня есть рабочий лист, который позволяет пользователям устанавливать флажки на листе 1 и на основе их выбора автоматически выбирать флажки на другом листе. На данный момент я получаю сообщение об ошибке «Невозможно получить свойство CheckBoxes класса Worksheet». Я использую флажки формы управления (а не флажок ActiveX). Любые советы будут с благодарностью приняты! Вот код:

 Sub RectangleRoundedCorners2_Click()

Dim Input_Sheet, Trade_Ticket As Worksheet
Dim CUSIP, Order, BuyorSellFor, Reason As String
Dim Security, SecurityType, Sector, Coupon As String
Dim Price, Quantity, CouponRate, DollarValue, CurrentYield, CurrentYTM, CurrentYTC, UniYield, ModDur, SpreadOverTreasury As Double
Dim TradeDate, Maturity, CallDate As Date

Dim Chck_Income, Check_Income As CheckBox

Set Input_Sheet = ThisWorkbook.Worksheets("Input")
Set Trade_Ticket = ThisWorkbook.Worksheets("Trade_Ticket")

Set Check_Income = Input_Sheet.CheckBoxes("Check_Income")
Set Chck_Income = Trade_Ticket.CheckBoxes("Chck_Income")

CUSIP = Input_Sheet.Range("C2").Value
Order = Input_Sheet.Range("C6").Value
BuyorSellFor = Input_Sheet.Range("C13").Value
Reason = Input_Sheet.Range("C14").Value
Security = Input_Sheet.Range("C18").Value
SecurityType = Input_Sheet.Range("C20").Value
Sector = Input_Sheet.Range("C25").Value
Coupon = Input_Sheet.Range("C26").Value

Price = Input_Sheet.Range("C3").Value
Quantity = Input_Sheet.Range("C4").Value
CouponRate = Input_Sheet.Range("C19").Value
DollarValue = Input_Sheet.Range("C21").Value
CurrentYield = Input_Sheet.Range("C27").Value
CurrentYTM = Input_Sheet.Range("C29").Value
CurrentYTC = Input_Sheet.Range("C30").Value
UniYield = Input_Sheet.Range("C31").Value
ModDur = Input_Sheet.Range("C32").Value
SpreadOverTreasury = Input_Sheet.Range("C33").Value

TradeDate = Input_Sheet.Range("C5").Value
Maturity = Input_Sheet.Range("C22").Value
CallDate = Input_Sheet.Range("C24").Value

Trade_Ticket.Range("I10").Value = "Price: " amp; Format(Price, "Currency")
Trade_Ticket.Range("I11").Value = "Trade Date: " amp; TradeDate

Trade_Ticket.Range("E16").Value = "CurrentYTM: " amp; Round(CurrentYTM, 2) amp; "%"
Trade_Ticket.Range("E17").Value = "CurrentYTC: " amp; Round(CurrentYTC, 2) amp; "%"
Trade_Ticket.Range("E18").Value = "Universe Yield: " amp; Round(UniYield, 2) amp; "%"
Trade_Ticket.Range("E19").Value = "Modified Duration: " amp; Round(ModDur, 3)
Trade_Ticket.Range("E20").Value = "Spread Over Treasury: " amp; Round(SpreadOverTreasury, 2)

Trade_Ticket.Range("H16").Value = "# of Bonds: " amp; Quantity
Trade_Ticket.Range("H20").Value = "Dollar Value: " amp; DollarValue

If Input_Sheet.Shapes("Check_Income").ControlFormat.Value = 1 Then
    Trade_Ticket.Shapes("Chck_Income").ControlFormat.Value = 1
End If

End Sub
  

Ответ №1:

попробуйте:

 If Input_Sheet.Shapes("CheckIncome").OLEFormat.Object.Value = True Then
     Trade_Ticket.Shapes("CheckIncome").OLEFormat.Object.Value = True
End If
  

кроме того, обратите внимание, что ваша проверка является только односторонней.