Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    122

    [VB]..funzione Chr(9)??

    Ciao a tutti..
    ho un applicazione in Excel che mi costruisce un Problema di PLI e richiama una funzione "risolvi" per risolverlo..
    Bè funziona tutto perfettamente finchè non cerco di inserire un double nei vincoli (ultime righe di codice)...forse è dovuto a Chr(9)...non so controllate...vi prego...
    grazie...
    [CODE]

    ' DICHIARAZIONE FUNZIONE RISOLVI : RICHIAMO LA FUNZIONE RISOLVI NELLA LIBRERIA GLPK.DLL

    Private Declare Function risolvi Lib "/.../glpk-dll\Project2.dll" (ByVal p As Integer, ByVal perc As String, ByVal Max1 As Integer, ByVal NVincoli1 As Integer, ByVal NVariabili1 As Integer, ByVal NVariabili1 As Double) As Integer

    Public Sub procedura() 'DEFINISCO UN METODO

    Dim buffer As String
    Dim cumul As String


    Dim NVincoli As Integer
    Dim NVariabili As Integer

    NVincoli = 0
    NVariabili = 0

    Dim percorso As String

    percorso = ThisWorkbook.Path 'restituisce la cartella di lavoro nella quale è in esecuzione il codice.

    Sheets("variabili").Select 'RESTITUISCE IL FOGLIO DI LAVORO "VARIABILI"
    Range("b1").Select 'SELEZIONA LA COLONNA B1 SUL FOGLIO EXCEL (DI LAVORO)
    Open ThisWorkbook.Path + "\variabili.txt" For Output As #1 'APRE IL FILE IN MODALITA OUTPUT
    buffer = "inizio"
    ' FINCHE LA STRINGA BUFFER è DIVERSA DA "" PRENDI IL VALORE DI ELLA CORRENTE.
    While (buffer <> "")
    buffer = ActiveCell.Value
    If buffer <> "" Then
    cumul = buffer ' PRENDI IL VALORE DI BUFFER E DALLO A CULUM
    For i = 1 To 3
    ActiveCell.Offset(1, 0).Range("A1").Select 'SELEZIONA A1 IN POSIZIONE 1,0
    buffer = ActiveCell.Value 'DAI IL VALORE A BUFFER
    cumul = cumul + Chr(9) + buffer 'AVANZAMENTO DI RIGA


    Next
    Print #1, cumul 'SCRIVE NEL FILE IL VALORE DI CULUM
    ActiveCell.Offset(-3, 1).Range("A1").Select
    NVariabili = NVariabili + 1
    End If

    Wend
    Close #1 'CHIUDE IL FILE

    'COME PER LE VARIBILI...
    Sheets("vincoli").Select
    Range("A1").Select
    Open ThisWorkbook.Path + "\vincoli.txt" For Output As #1
    buffer = "inizio"

    While (buffer <> "")
    buffer = ActiveCell.Value
    If buffer <> "" Then
    cumul = buffer
    For i = 1 To 2
    ActiveCell.Offset(0, 1).Range("A1").Select
    buffer = ActiveCell.Value
    cumul = cumul + Chr(9) + buffer


    Next
    Print #1, cumul
    ActiveCell.Offset(1, -2).Range("A1").Select
    NVincoli = NVincoli + 1
    End If
    Wend
    Close #1

    'DEFINISCE UNA MATRICE...E COSTRUISCE IL FILE DI TESTO
    Dim NumElemMatrice As Integer
    NumElemMatrice = 0
    ' cambia solo questa procedura se la mtrice è sparsa
    Sheets("matrice").Select
    Range("B2").Select
    Open ThisWorkbook.Path + "\matrice.txt" For Output As #1
    For j = 1 To NVincoli
    For i = 1 To NVariabili
    buffer = ActiveCell.Value
    If buffer <> "0" And buffer <> "" Then
    Print #1, CStr(j) + Chr(9) + CStr(i) + Chr(9) + buffer
    NumElemMatrice = NumElemMatrice + 1
    End If
    ActiveCell.Offset(0, 1).Range("A1").Select
    Next

    ActiveCell.Offset(1, -NVariabili).Range("A1").Select

    Next j
    Close #1

    'DEFINISCE LA FUNZIONE..E SCRIVE NEL FILE DI TESTO
    Sheets("funzione").Select
    Range("A1").Select
    Dim max As Integer
    max = ActiveCell.Value



    '--------------------------------------------------------

    Dim esito As Integer

    'ASSEGNO AD ESITO IL VALORE DELLA FUNZIONE "RISOLVI"
    esito = risolvi(NumElemMatrice, percorso, max, NVincoli, NVariabili, 60)
    MsgBox ("Fatto:" + CStr(esito)) 'ASSEGNO IL VALORE ESITO CONVERTITO IN STRINGA.

    '--------------------------------------------------------


    Sheets("risultati").Select
    Range("A1").Select 'SELEZIONA LA CELLA A1..
    'SCRIVE NEL FILE LOG
    Open ThisWorkbook.Path + "\log.txt" For Input As #1

    Dim var As Variant

    Input #1, buffer 'SCRIVE NEL FILE LOG LA VARIABILE BUFFER..
    var = Split(buffer, Chr(9)) 'RESTITUISCE UNA MATRICE DI DIMENSIONE 1 E GLI ASSEGNA I VALORI DI BUFFER
    ActiveCell.Value = var(0)
    ActiveCell.Offset(0, 1).Range("A1").Select
    ActiveCell.Value = var(1)
    ActiveCell.Offset(1, -1).Range("A1").Select

    Input #1, buffer
    var = Split(buffer, Chr(9))
    ActiveCell.Value = var(0)
    ActiveCell.Offset(0, 1).Range("A1").Select
    ActiveCell.Value = var(1)
    ActiveCell.Offset(1, -1).Range("A1").Select

    For j = 1 To NVariabili
    Input #1, buffer
    var = Split(buffer, Chr(9))
    ActiveCell.Value = var(0)
    ActiveCell.Offset(0, 1).Range("A1").Select
    ActiveCell.Value = var(1)
    ActiveCell.Offset(1, -1).Range("A1").Select
    Next j

    For j = 1 To NVincoli
    Input #1, buffer
    var = Split(buffer, Chr(9)) QUI DA ERRORE!!!
    ActiveCell.Value = var(0)
    ActiveCell.Offset(0, 1).Range("A1").Select
    ActiveCell.Value = var(1)
    ActiveCell.Offset(1, -1).Range("A1").Select
    Next j

    Close #1


    End Sub
    Mi raccomando!...in generale...

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480

    Moderazione

    Le domande su VBA nel forum di Visual Basic.

    Correggo il titolo e sposto.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    122
    Ops!!!
    Scusate!!Credevo fosse Visual Basic...
    Mi raccomando!...in generale...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.