JMP - Automazione VBA di ExcelSalve, sto utilizzando l'automazione JMP per ottenere un numero di riga particolare in base ai dati selezionati utilizzando la funzione "SelectRowsWhere", ma non sono riuscito a ottenere il valore del numero di riga, esiste un altro modo per ottenere il numero di riga. vedi sotto il mio codice.
Sub getrownum()
Oscura MyJMP As JMP.Application
Dim JMPDoc As JMP.Document
Dim DT As JMP.DataTable
Impostare MyJMP = CreateObject("JMP.Application")
Set JMPDoc = MyJMP.OpenDocument("D:\Tabella dati principale di JMP\TestData.jmp")
MyJMP.Visible = Vero
Impostare DT = JMPDoc.GetDataTable
Imposta col1 = JMPDoc.GetDataTable.GetColumn("Data")
'DT.SelectRows 102056, 102057
'per ottenere il numero di riga 102065 ??
DT.SelectRowsWhere "Data", rowSelectEquals, rowSelectClearPrevious, "3565986300"
noofrowselected = DT.GetNumberOfRowsByRowState(rowStateSelected)
nn = DT.EnumRowStatesBegin(rowStateSelected)
n1selectedrow = DT.EnumRowStatesGetNextRow()
n2selectedrow = DT.EnumRowStatesGetRowByIndex(1)
getronumff = n1rigaselezionata
Fine Sub
- Bala
Ri: JMP - Automazione VBA di ExcelCiao Brian Corcoran,
Grazie per la risposta, sì, sto usando "Data Table .NET" come esempio. In precedenza il problema era che non riuscivo a ottenere il valore dell'indice di riga (numero di riga) utilizzando "SelectRowsWhere", che potrebbe essere dovuto al tipo di valore. Ora ho cambiato il codice in seguito e risolve lo scopo.
' **DT.SelectRowsWhere "Data", rowSelectEquals, rowSelectClearPrevious, "3565986300"**
DT.SelectRowsWhere "Data", rowSelectEquals, rowSelectClearPrevious, "12-31-2016 12:00:00 AM"
noofrowselected = DT.GetNumberOfRowsByRowState(rowStateSelected)
nn = DT.EnumRowStatesBegin(rowStateSelected)
n1selectedrow = DT.EnumRowStatesGetNextRow()
n2selectedrow = DT.EnumRowStatesGetRowByIndex(1)
getronumff = n1rigaselezionata
Ri: JMP - Automazione VBA di ExcelDovrei anche menzionare che se desideri singoli valori di colonna, dovresti ottenere un oggetto colonna dall'oggetto tabella dati, quindi chiamare semplicemente GetCellVal su quello.
Ad esempio:
Col = DT.GetColumn("età")
val = Col.GetCellVal(indice)
Ri: JMP - Automazione VBA di ExcelCiao Bala,
Guarderei il programma di esempio "Data Table .NET" fornito con JMP. Per JMP 13, si trova in C:\programmi\sas\jmp\13\Samples\Automation\Visual Basic Samples. Ci sono un paio di modi per farlo. Uno, a cui stavi arrivando, è l'Enum. L'esempio contiene un pulsante denominato Enum Selected che fa quello che vuoi. Il relativo codice è:
NSelected = DT.EnumRowStatesBegin(JMP.rowStateConstants.rowStateSelected)
Per i = 1 A NSelezionato
MsgBox(DT.EnumRowStatesGetNextRow, MsgBoxStyle.OkOnly, "La riga selezionata successiva è")
Avanti io
Puoi anche guardare l'esempio "Ottieni vettore selezionato". Questo utilizza la chiamata GetRowStateVector per restituire un array di tutte le righe selezionate per indice.
Il "Get Selected Data", un altro esempio, utilizza GetRowStateVectorData per restituire i valori dei dati sottostanti anziché gli indici.
Spero che aiuti.
Brian Corcoran
Sviluppo JMP