🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.vbasic
Article #104500

Re: Makro - przesuń wiersze - problem:(

#104500
From: Michal AKA Miki
Date: Thu, 04 Mar 2010 22:24
91 lines
4626 bytes
Użytkownik <nothing.at.all@NOSPAM.gazeta.pl> napisał w wiadomości 
news:hmj5a6$s9m$1@inews.gazeta.pl...
> Hm, to chyba się nie rozumiemy. Chce móc szybko zmieniać wiersz do którego
> mam odwołanie w pliku. Np. w całej jednej zakładce mam odwołania do innego
> pliku, po kolei np. 1 wiersz w pliku X, odwołuje się do wiersza 120 w 
> pliku
> Y, wiersz 2 w pliku X odwołuje się do wiersza 121 w pliku Y, itd. I teraz
> chce przesunąć odwołania, np. o 5 wierszy, czyli chce aby wiersz 1 
> odwoływał
> się do wiersza 125, wiersz 2 do 126, itd. Oczywiście chce to robić tylko w
> adresach bezwgędnych i szybko od razu wszystkie razem.
> Przepraszam, że tak łopatologicznie, ale wkurzam się, że coś co miało mi
> ułatwić pracę tak nie działa:(.

Ok, chyba zaczynam rozumiec :)
Moze ja sprecyzuje po swojemu, a ty potwierdzisz, ze o to chodzi:
twoje makro nie ma przesuwac wierszy, a jedynie WYSZUKIWAC I ZMIENIAC 
definicje odwolan bezwzglednych w formulach, we wskazanym zakresie komorek, 
tak?
Zmiana definicji tych odwolan bezwzglednych ma polegac na zwiekszeniu 
wartosci w tym odwolaniu o zadana wielkosc.


Ok - pierwszy podstawowy blad - jesli w formule, ktora przerabiasz pojawia 
sie nazwa z cyfra, np. "Arkusz2", to numerek 2 z nazwy jest zjadany.
drugi - brakuje "end if" - wewnatrz petli for - "otwierasz" 3 razy "if", a 
zamykasz tylko 2 razy.

zmienilem troche twoj kod, daj znac, czy to jest to, co chcialas. Nie 
testowalem zbyt dokladnie, wiec pewnie pojawi sie jakis blad...
Tylko od razu mowie, ze kod ma spora wade - mianowicie - jesli teksty typu 
$23 znajda sie nie w formule, ale normalnie w wartosci komorki, to tez 
zostana zmienione...
takze zadziala rowniez dla komorek z tekstem typu: "Te buty kosztuja $200"


Sub PrzesunWiersze2()

Dim Cyfra As Integer
Dim NrZnaku As Integer 'nr biezacego znaku, ktory analizujemy
Dim Znak As String 'biezacy znak
Dim Liczba As String 'liczba za znakiem $ w postaci tekstowej
Dim Nliczba As Integer 'liczba za znakiem $ w postaci INT
Dim NowaFormula As String 'formula po zmianie
Dim Zmiana As Variant 'zmienna okreslajaca przesuniecie w formule
Dim komorka As Range ' pojedyncza komorka z zadanego zakresu

Zmiana = InputBox("Podaj przesunięcie wierszy")
If Zmiana = "" Then Exit Sub
' ustala zakres do zmian
Set Zakres = Selection

For Each komorka In Selection

    NowaFormula = ""

    ' zamiana cyfer w jednej komórce
    NrZnaku = 1
    Do While NrZnaku <= Len(komorka.Formula)

        Znak = Mid(komorka.Formula, NrZnaku, 1)
        ' dodaje znak jeśli nie numeryczny
        If IsNumeric(Znak) = False Then
            NowaFormula = NowaFormula & Znak
        Else
        'modyfikuje i dodaje znaki jeśli liczbowe
            If Mid(komorka.Formula, NrZnaku - 1, 1) = "$" Then
                Liczba = ""
                Do While IsNumeric(Mid(komorka.Formula, NrZnaku, 1))
                    Liczba = Liczba & Mid(komorka.Formula, NrZnaku, 1)
                    If NrZnaku = Len(komorka.Formula) Then Exit Do
                    NrZnaku = NrZnaku + 1
                Loop
                If Liczba <> "" Then
                    Nliczba = CInt(Liczba) + Zmiana
                    NowaFormula = NowaFormula & Nliczba
                End If
           Else
               NowaFormula = NowaFormula & Znak
           End If
        End If
        NrZnaku = NrZnaku + 1
    Loop

    komorka.Formula = NowaFormula
Next komorka
End Sub


Pozdrawiam
Michal 
Technical Details
Message-ID: <hmpbus$mcp$1@inews.gazeta.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
References: <hm8bj5$q4o$1@inews.gazeta.pl> <tsdfvn3dwmkd.oljqd5i9yent.dlg@40tude.net> <hmfpti$3js$1@inews.gazeta.pl> <hmhg7q$phf$1@inews.gazeta.pl> <hmj5a6$s9m$1@inews.gazeta.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
From: "Michal AKA Miki" <jakistammichal@z.onetu.pl>
Newsgroups: pl.comp.lang.vbasic
Subject: Re: Makro - przesuń wiersze - problem:(
Date: Thu, 4 Mar 2010 23:24:24 +0100
Organization: "Portal Gazeta.pl -> http://www.gazeta.pl"
Lines: 93
Message-ID: <hmpbus$mcp$1@inews.gazeta.pl>
References: <hm8bj5$q4o$1@inews.gazeta.pl> <tsdfvn3dwmkd.oljqd5i9yent.dlg@40tude.net> <hmfpti$3js$1@inews.gazeta.pl> <hmhg7q$phf$1@inews.gazeta.pl> <hmj5a6$s9m$1@inews.gazeta.pl>
NNTP-Posting-Host: mjelinski.tsi.tychy.pl
X-Trace: inews.gazeta.pl 1267741468 22937 83.142.120.170 (4 Mar 2010 22:24:28 GMT)
X-Complaints-To: usenet@agora.pl
NNTP-Posting-Date: Thu, 4 Mar 2010 22:24:28 +0000 (UTC)
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5512
X-Priority: 3
X-RFC2646: Format=Flowed; Original
X-Newsreader: Microsoft Outlook Express 6.00.2900.5512
X-User: michalakamiki
X-MSMail-Priority: Normal
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit