Board logo

標題: 字元與變數 要如何串接 [打印本頁]

作者: alex520188    時間: 2012-7-21 00:18     標題: 字元與變數 要如何串接

各位大大好

小弟一直搞不清楚的地方

字元與變數 要如何才能正確串接呢?

變數 與 變數 又該如何串接

請大大指導一下
  1. Private Sub CommandButton1_Click()

  2. Dim Fs, t, Wb As Workbook, St As Worksheet
  3. Dim k%, X%, i%

  4. 'On Error Resume Next
  5.     Fs = Application.GetOpenFilename("Excel,*.xls", , , , True)
  6.         If Not IsArray(Fs) Then Exit Sub
  7.             For Each t In Fs
  8.                 If t <> ThisWorkbook.Name Then
  9.                     Set Wb = GetObject(t)
  10.                         For Each St In Wb.Worksheets
  11. With St
  12.     k = .Range("B65536").End(xlUp).Row
  13. End With

  14.     With St.Range("A9:O9")
  15.         For i = .Cells.Count To 1 Step -1
  16.             If .Cells(i).Borders.LineStyle = xlContinuous Then
  17.                 X = i
  18.                 Exit For
  19.             End If
  20.         Next
  21.     End With
  22.    
  23.    
  24.                         
  25. With St.PageSetup
  26.     If k <= 45 Then
  27.     .PrintArea = Range("A1:X & 45").Address        '這行的語法 串不出來
  28.    
  29.     ElseIf k <= 82 Then
  30.     .PrintArea = "A1:x" & 82                       '這行的語法 串不出來
  31.    
  32.     ElseIf k <= 115 Then
  33.     .PrintArea = "A1:x" & 115                      '這行的語法 串不出來
  34.    
  35.     ElseIf k <= 151 Then
  36.     .PrintArea = "A1:x" & 151                      '這行的語法 串不出來
  37.    
  38.     Else
  39.     .PrintArea = "A1:" & X & k & ""                '這行的語法 串不出來
  40.    
  41.     End If
  42. End With



  43. With St.Range("A12:X" & 151).Borders               '這行的語法 串不出來
  44.     .LineStyle = xlContinuous
  45.     .Weight = xlHairline
  46.     .ColorIndex = 1
  47. End With
  48.                     St.PrintOut
  49.                 Next
  50.             Wb.Close 0
  51.         End If
  52.      Next
  53. End Sub
複製代碼

作者: kimbal    時間: 2012-7-21 00:35

.PrintArea = Range("A1:X45").Address
    .PrintArea = "A1:x82"
    .PrintArea = "A1:x115"
    .PrintArea = "A1:x151"
    .PrintArea = "A1:X" & trim(str(k))
With St.Range("A12:X151").Borders
作者: alex520188    時間: 2012-7-21 09:26

回復 2# kimbal


謝謝版大的指點     不過在經過測試之後
With PageSetup
If K <= 45 Then
  .PrintArea = "A1:x45"
上式中的x 並非我要的型態(變數x)
與 x = i  的x 無法連結

可否請大大在幫我看一下^-^:D

還有一個小問題就是 Trim(Str(K)) 這串是什麼意思???:Q
  1. Private Sub CommandButton1_Click()

  2. Dim Fs, t, Wb As Workbook, St As Worksheet
  3. Dim K%, x%, i%


  4.     Fs = Application.GetOpenFilename("Excel,*.xls", , , , True)   '
  5.         If Not IsArray(Fs) Then Exit Sub
  6.             For Each t In Fs
  7.                 If t <> ThisWorkbook.Name Then
  8.                     Set Wb = GetObject(t)
  9.                         For Each St In Wb.Worksheets
  10.                     
  11.                     With St.Cells
  12.                         K = .Range("B65536").End(xlUp).Row
  13.                     End With
  14.                     
  15.                         With St.Range("A9:O9")
  16.                                 For i = .Cells.Count To 1 Step -1
  17.                                     If .Cells(i).Borders.LineStyle = xlContinuous Then
  18.                                             x = i
  19.                                             Exit For
  20.                                     End If
  21.                                 Next
  22.                         End With
  23.                                        
  24.                     With St.PageSetup
  25.                     
  26.                     If K <= 45 Then
  27.                     .PrintArea = "A1:x45"
  28.                     '.PrintArea = Range("A1:X45").Address
  29.                
  30.                     ElseIf K <= 82 Then
  31.                     .PrintArea = "A1:x82"
  32.                     '.PrintArea = "A1:x82"
  33.                     
  34.                     ElseIf K <= 115 Then
  35.                     .PrintArea = "A1:x115"
  36.                     '.PrintArea = "A1:x115"
  37.                     
  38.                     ElseIf K <= 151 Then
  39.                     .PrintArea = "A1:x151"
  40.                     '.PrintArea = "A1:x151"
  41.                     
  42.                     Else
  43.                         .PrintArea = "A1:x" & Trim(Str(K))          '列印範圍"
  44.                        '.PrintArea = "A1:X" & Trim(Str(K))
  45.                        '.Zoom = 100                                            '縮放比例
  46.                         End If
  47.                     End With

  48.                     
  49.                     With St.Range("A12:x151").Borders
  50.                     'With St.Range("A12:X151").Borders
  51.                              .LineStyle = xlContinuous                   '線種類 =實線
  52.                              .Weight = xlHairline                            '線粗細=極細
  53.                              .ColorIndex = 1                                  ' 線色 , 1=黑色
  54.                      End With


  55.                             St.PrintOut
  56.                         
  57.                     Next
  58.                 Wb.Close 0
  59.                 End If
  60.             Next
  61. End Sub
複製代碼

作者: alex520188    時間: 2012-7-29 15:59

各位前輩能幫解答一下嗎~~~~
作者: oobird    時間: 2012-7-29 16:18

  1. Sub yy()
  2. x = 100
  3. MsgBox Range(Cells(1, 1), Cells(45, x)).Address
  4. End Sub
複製代碼
運行一下應該就明白了。
作者: alex520188    時間: 2012-7-30 23:18

回復 5# oobird


    謝謝oobird老師的指導

另外我把他套進 With St.Range(Cells(1, 1), Cells(45, x)).Borders
                         .LineStyle = xlContinuous                  
                         .Weight = xlHairline                        
                         .ColorIndex = 1                              
                  End With
為何執行起來有錯誤  是哪裡寫的不對嘛??
作者: oobird    時間: 2012-7-31 08:46

若你執行時當前工作表不是St的話,要這樣寫才能被識別:
With St.Range( St.Cells(1, 1),  St.Cells(45, x)).Borders
作者: alex520188    時間: 2012-7-31 10:46     標題: RE: 字元與變數 要如何串接(已解決)

回復 7# oobird


    再次謝謝oobird老師的指導

我當前執行的工作表是st, 只是一值跑不過

後來貼上oobird前輩所指點的語法後 該段設定就能正常執行了

雖然一直搞不太董 不過還是要謝謝各位先進的指點^-^:lol
作者: GBKEE    時間: 2012-7-31 14:10

回復 8# alex520188
我當前執行的工作表是st, 只是一值跑不過
  
如果你的程式是在 工作表模組 且不是st工作表模組 就會如此  
工作表模組 工作表中的物件 如沒指明父層名稱 ,預設為 此工作表模組的工作表.
當前執行的工作表是st 你的程式是在 是st工作表模組 不會如此的
當前執行的工作表是st 你的程式是在 是一般模組 或是ThisWorkbook模組  也不會如此的




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)