Excel, adicionando mais informações a uma célula de maneira estruturada

0

Eu tenho uma folha de excel com um plano para um ano. Usando semanas para colunas e, em seguida, um indicador de cor para semanas em que "coisas" acontecem.

Assim:

A minha pergunta é: Existe alguma forma (incorporada ou usando add ons) para adicionar informação a esta célula de uma forma mais estruturada?

Estou pensando talvez em uma pequena forma com

  • Nome
  • Descrição
  • Orçamento
  • Yada yada
  • Foo

Dessa forma, eu poderia manter minha visão geral, mas ao mesmo tempo adicionar mais informações a cada célula.

Alguém que conhece uma maneira de conseguir isso?

    
por Markus Knappen Johansson 12.10.2017 / 14:00

1 resposta

0

Acabei criando um User Form com algumas caixas de texto e um botão para salvar os valores na mesma coluna / linha em outra planilha chamada "Data".

Algo parecido com isto:

Dim xml As String

xml = xml + "<CellDetails>"
xml = xml + "  <Budget>" + UserForm1.txtBudget.Text + "</Budget>"
xml = xml + "  <Comments>" + UserForm1.txtComments.Text + "</Comments>"
xml = xml + "  <StartDate>" + Format(MonthView1.Value, "yyyy-mm-dd") + "</StartDate>"
xml = xml + "  <EndDate>" + Format(MonthView2.Value, "yyyy-mm-dd") + "</EndDate>"
xml = xml + "</CellDetails>"

ThisWorkbook.Sheets("Data").Range(Selection.Address).Value = xml

Em seguida, inicio isso a partir da planilha usando um listener de eventos no "clique direito" de uma célula e preenche os controles de formulário com os valores.

Sub Workbook_SheetBeforeRightClick (ByVal Objeto Sh As, ByVal Destino como intervalo, Cancelar como booleano)

On Error Resume Next

'Somente acione isso se a tecla Ctrl for pressionada   Se IsControlKeyDown () = True Então

    If Not ThisWorkbook.Sheets("Data").Range(Selection.Address).Value = "" Then

        Dim XDoc As MSXML2.DOMDocument
        Set XDoc = CreateObject("MSXML2.DOMDocument")
        XDoc.LoadXML (ThisWorkbook.Sheets("Data").Range(Selection.Address).Value)

        ' Setting the form values
        UserForm1.txtBudget.Text = XDoc.SelectSingleNode("//CellDetails/Budget").Text
        UserForm1.txtComments.Text = XDoc.SelectSingleNode("//CellDetails/Comments").Text

        ' Setting the dates
        UserForm1.MonthView1.Value = CDate(XDoc.SelectSingleNode("//CellDetails/StartDate").Text)
        UserForm1.lbStartDate = XDoc.SelectSingleNode("//CellDetails/StartDate").Text
        UserForm1.MonthView2.Value = CDate(XDoc.SelectSingleNode("//CellDetails/EndDate").Text)
        UserForm1.lbEndDate = XDoc.SelectSingleNode("//CellDetails/EndDate").Text
    End If

    UserForm1.Show


    Cancel = True

End If
On Error GoTo 0

End Sub

    
por 12.10.2017 / 16:03