返回列表 上一主題 發帖

4個VBA問題

4個VBA問題

第1  sheet1    B1=2  C1=M   
dim n ,i
[D1]="Range("B"& n)   Range("C"& i)"  (因為 Range會變要這樣寫)

第2  好多時我都在sheet1 用按鈕run vba   1開始要在sheet2  我會先寫
sheets("sheet2").Select
但sheet2的名改了 "abc"  在vba又要改sheets("abc").Select
有什麼寫 改了sheet名都可以正常run vba.

第3
這樣寫對嗎?
sheets("sheet2").Range("A1").Value=sheets("sheet1").Range("A1").Value
如果改了sheet名都可以run要如何寫?

第4
這個很難><
sheet2

a1= 10 / 明/abc

當a1輸入1個數or文字   按run    if  a1的數or文字是第1次入的時候  c1會出1   vba會記載這個數or文字
                                             if  第2入就 c1出2 .....................

eg.   
a1=10 > run>c1=1   >   a1=momo>run>c1=1  >    save  execl off execl  >open excel >    a1=momo>run>c1=2  >a1=haha>run>c1=1

如果a1的數or文字有 300多個 vba可以save嗎?

VBA.rar (7.74 KB)

50 字節以內
不支持自定義 Discuz! 代碼

回復 2# kimbal

1
是想在d1出    "[b1]的數or文字    [c1]的數or文字"
eg.   b1=4  c1=t  > d1=  "4  t"

2
只要sheet不移動,就可以用sheets(1).Select嗎?用sheets(1).Select  sheet改名都冇問題嗎?

4
找個位置把以下d的東西存起
不是很明.
dim MySave
MySave=d      ??
50 字節以內
不支持自定義 Discuz! 代碼

TOP

回復 4# GBKEE

1-3都明白了  謝謝2位大大

4
Set =Sheet1.Range("A65536")  這個有問題.
如果要del   d這個數重頭開始過,寫1句   MySave.del  對嗎?

如果 d  save了幾個數可以改嗎?
eg.   as=1    gh=3    hu=10   我可以在e1打hu 在f1打9 (a1=hu)   之後run 1次  c1就會出10

gtg.JPG (32.18 KB)

gtg.JPG

50 字節以內
不支持自定義 Discuz! 代碼

TOP

回復 6# kimbal
謝謝kimbal的教導static同scripting.dictionary,但是太難了><  要慢慢學.
你打的vba不能用.
可以這樣嗎?
第1個sub  寫
Sub test()
    Static d
    If IsEmpty(d) Then
        Set d = CreateObject("Scripting.Dictionary")
    End If
    v = Range("a1").Value
    If d.exists(v) Then
        d(v) = d(v) + 1
    Else
        Call d.Add(v, 1)
    End If
    Range("C1") = d(v)
End Sub

第2個sub  寫
把Static d  save  到 dim MySave
如果vba的MySave不能在off excel再open excel用 就save在 [z1]

第3個sub  寫
把Static d  初期化  del  Static d內所有東西(數or文字)

第4個sub  寫
a1=hu   run2次   c1會出2
在e1打hu 在f1打1 (a1=hu)   之後run 1次  c1就會出2(這個是改Static d入面的數)

最後有1個問題是  
MyName = Sheet3.Name      (Sheet3.Name=人)

    Range("AA3").Formula = "=IF(MyName!C2="""","""",VLOOKUP(A2,poi!$A$2C$501,3,0))"
這個如何寫才可以在aa3出  "=IF(人!C2="","",VLOOKUP(A2,poi!$A$2C$501,3,0))"
50 字節以內
不支持自定義 Discuz! 代碼

TOP

回復 8# kimbal


    有少少問題
我想要  if  e1=""   就正常run ,  then   if  e1=a1  f1=2(e1和f1都是人手打的) then c1出2 else end
eg.

a1=30  e1="" > run > c1=1 > run > c1=2 > e1=30 f1=1 > run > c1=f1=1 > e1="" > run > c1=2

請問
AA = "C:\Documents and Settings\Administrator\桌面\book.xlsm"

Workbooks.Open Filename:=AA  (這個可以run)

Workbooks.Close Filename:=AA , savechanges:=True  (為什麼這個不能run?)

test.rar (15.38 KB)

50 字節以內
不支持自定義 Discuz! 代碼

TOP

回復 10# kimbal
RUN時有問題
A1=10  E1="">RUN 2次>  C1出1(正常C1會出2 )
18-21.那裡是要   IF  ES<>"" AND V=ES  THEN....>RUN >C1=e
可以加多個g1   if  g1=1 就把 所有save的東西del. 還有,如果我這個excel有問題,可以把save的東西copy到第2個excel嗎?
50 字節以內
不支持自定義 Discuz! 代碼

TOP

本帖最後由 basarasy 於 2010-7-25 17:05 編輯

回復 12# kimbal

大多都明白了.謝謝大大
只要把entries   del就可以 初期化了.

e1  and  f1  有問題
我入e1同f1 其實是  當我a1=10時 不小心按了2下run  c1出了2  之後入e1=10 f1=1 >run  c1就會
變回1.  不用把e1同f1 save在entries,只要改entries內 對照的b:b 就ok了.

不save是否改
If es = "" Then
            .Range("A1").Offset(currRow - 1) = v
            End If

If es = "" Then        
        .Range("A1").Offset(currRow - 1, 1) = nextvalue
        End If  這個?

但改entries內 對照的b:b不知改那裡.
50 字節以內
不支持自定義 Discuz! 代碼

TOP

如果我要把entries的東西save在 其他excel要如果寫?
50 字節以內
不支持自定義 Discuz! 代碼

TOP

回復 15# kimbal


    謝謝大大^^
50 字節以內
不支持自定義 Discuz! 代碼

TOP

        靜思自在 : 不要小看自己,因為人有無限的可能。
返回列表 上一主題