返回列表 上一主題 發帖

vba瘦身,感恩

vba瘦身,感恩

Private Sub CommandButton1_Click()
Sheets("工作表3").Select
Label25 = [B7]
'Sheets("工作表3").Select
If [J11] = 1 Then
    OptionButton1 = False
    OptionButton2 = False
    OptionButton3 = False
    OptionButton4 = True
ElseIf [I11] = 1 Then
   OptionButton1 = False
    OptionButton2 = False
    OptionButton3 = True
    OptionButton4 = False
ElseIf [H11] = 1 Then
     OptionButton1 = False
    OptionButton2 = True
    OptionButton3 = False
    OptionButton4 = False
ElseIf [G11] = 1 Then
   
    OptionButton1 = True
    OptionButton2 = False
    OptionButton3 = False
    OptionButton4 = False
End If

Sheets("工作表1").Select

TextBox4 = Round(TextBox1 * 3.3, 0)
Me.TextBox4 = Format(TextBox4, "#,###.##")
TextBox5 = Round(TextBox2 * 3.3, 0)
Me.TextBox5 = Format(TextBox5, "#,###.##")
If TextBox6 < 0 Then
TextBox6 = 0
Else
TextBox6 = Round(TextBox4 / TextBox5, 2)
Me.TextBox6 = Format(TextBox6, "#,###.##")
End If


Private Sub TextBox15_Change()
    Sheets("工作表3").Select
    [C3] = TextBox15
    Sheets("工作表1").Select
      
   
End Sub

Private Sub TextBox16_Change()
Sheets("工作表3").Select
[C4] = TextBox16
Sheets("工作表1").Select
End Sub

Private Sub TextBox17_Change()
Sheets("工作表3").Select
    [C5] = TextBox17
Sheets("工作表1").Select
End Sub

回復 1# sillykin
試試看
  1. Option Explicit
  2. Private Sub CommandButton1_Click()
  3.     With Sheets("工作表3")  '不必Select來Select去
  4.         OptionButton4 = .[J11] = 1
  5.         OptionButton3 = .[I11] = 1
  6.         OptionButton2 = .[H11] = 1
  7.         OptionButton1 = .[G11] = 1
  8.     End With
  9. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 2# GBKEE


    謝謝大大的回覆,感覺好短...
不好意思在請教Private Sub TextBox16_Change()
Sheets("工作表3").Select
[C4] = TextBox16
Sheets("工作表1").Select
End Sub

Private Sub TextBox17_Change()
Sheets("工作表3").Select
    [C5] = TextBox17
Sheets("工作表1").Select
End Sub
上述沒更好的方法嗎???

TOP

回復 3# sillykin
同樣的不必Select來Select去,試看看。
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

謝謝大大的指導,感恩

TOP

回復 5# sillykin

大大不好意思..在請教一下
Private Sub CommandButton3_Click()
Dim t As Integer, v1 As Integer

For t = 1 To 17


Range("C" & t + 3).Value = FormatNumber(Round(Range("A" & t + 3).Value * 3.3, 1))
Range("D" & t + 3).Value = FormatNumber(Round(Range("B" & t + 3).Value * 3.3, 1))
If Range("D" & t + 3) <> 0 Then
  Range("E" & t + 3) = FormatNumber(Round(Range("C" & t + 3) / Range("D" & t + 3), 2))
  Else
  Range("E" & t + 3).Value = ""
  End If
  
'================================================================================
   '20年以下
    If Range("A" & t + 3) = "" Then
        Range(("C" & t + 3), ("E" & t + 3)) = ""
      
        Exit Sub
    End If
   
    If (Range("E" & t + 3) > 3) Then
         Range("F" & t + 3) = FormatNumber(Round((Range("C" & t + 3) * 0.4) - (Range("D" & t + 3) * 0.7), 0))
         
    ElseIf (Range("E" & t + 3) > 2) Then
   
         Range("F" & t + 3) = FormatNumber(Round((Range("C" & t + 3) * 0.3) - (Range("D" & t + 3) * 0.4), 0))
        
    ElseIf (Range("E" & t + 3) > 1) Then
   
         Range("F" & t + 3) = FormatNumber(Round((Range("C" & t + 3) - Range("D" & t + 3)) * 0.2, 0))
        
    ElseIf (Range("E" & t + 3) <= 1) Then
         Range("F" & t + 3) = 0
    End If
   
   
'================================================================================
   '逾20~30年
    If Range("A" & t + 3) = "" Then
         Range(("C" & t + 3), ("E" & t + 3)) = ""
        Exit Sub
    End If
   
    If (Range("E" & t + 3) > 3) Then
         Range("G" & t + 3) = FormatNumber(Round((Range("C" & t + 3) * 0.36) - (Range("D" & t + 3) * 0.6), 0))
         
    ElseIf (Range("E" & t + 3) > 2) Then
   
         Range("G" & t + 3) = FormatNumber(Round((Range("C" & t + 3) * 0.28) - (Range("D" & t + 3) * 0.36), 0))
        
    ElseIf (Range("E" & t + 3) > 1) Then
   
         Range("G" & t + 3) = FormatNumber(Round((Range("C" & t + 3) - Range("D" & t + 3)) * 0.2, 0))
        
     ElseIf (Range("E" & t + 3) <= 1) Then
         Range("G" & t + 3) = 0
    End If
  
'================================================================================
   '逾30~40年
    If Range("A" & t + 3) = "" Then
        Range(("C" & t + 3), ("E" & t + 3)) = ""
        Exit Sub
    End If
   
    If (Range("E" & t + 3) > 3) Then
         Range("H" & t + 3) = FormatNumber(Round((Range("C" & t + 3) * 0.34) - (Range("D" & t + 3) * 0.55), 0))
         
    ElseIf (Range("E" & t + 3) > 2) Then
   
         Range("H" & t + 3) = FormatNumber(Round((Range("C" & t + 3) * 0.27) - (Range("D" & t + 3) * 0.34), 0))
        
    ElseIf (Range("E" & t + 3) > 1) Then
   
         Range("H" & t + 3) = FormatNumber(Round((Range("C" & t + 3) - Range("D" & t + 3)) * 0.2, 0))
        
     ElseIf (Range("E" & t + 3) <= 1) Then
         Range("H" & t + 3) = 0
    End If
'================================================================================
   '逾40年以上
    If Range("A" & t + 3) = "" Then
         Range(("C" & t + 3), ("E" & t + 3)) = ""
        Exit Sub
    End If
   
    If (Range("E" & t + 3) > 3) Then
         Range("I" & t + 3) = FormatNumber(Round((Range("C" & t + 3) * 0.32) - (Range("D" & t + 3) * 0.5), 0))
         
    ElseIf (Range("E" & t + 3) > 2) Then
   
         Range("I" & t + 3) = FormatNumber(Round((Range("C" & t + 3) * 0.26) - (Range("D" & t + 3) * 0.32), 0))
        
    ElseIf (Range("E" & t + 3) > 1) Then
   
         Range("I" & t + 3) = FormatNumber(Round((Range("C" & t + 3) - Range("D" & t + 3)) * 0.2, 0))
        
     ElseIf (Range("E" & t + 3) <= 1) Then
         Range("I" & t + 3) = 0
    End If
   
   
'================================================================================
   '增值稅總計
    If Range("J" & t + 3) = "" Then
         Range(("K" & t + 3)) = ""
        Else
         Range("K" & t + 3) = FormatNumber(Round((Range("F" & t + 3)) * (Range("J" & t + 3)), 1))
         Range("L" & t + 3) = FormatNumber(Round((Range("G" & t + 3)) * (Range("J" & t + 3)), 1))
         Range("M" & t + 3) = FormatNumber(Round((Range("H" & t + 3)) * (Range("J" & t + 3)), 1))
         Range("N" & t + 3) = FormatNumber(Round((Range("I" & t + 3)) * (Range("J" & t + 3)), 1))
         
    End If
   
Next

End Sub
為何在
A4儲存格輸入181,000
B4儲存格輸入140,625
--------------------
C4儲存格答案為597,300
D4儲存格答案為464,062(正確為464,063)
F4儲存格答案為26,648(正確為26,647)
不知要如何處置,有高手協助嗎???

TOP

如果用下面函數計算
=TEXT(B1*3.3,"#,###")
vba要如何下呢???

TOP

本帖最後由 Joforn 於 2015-9-10 12:42 編輯

回復 7# sillykin
Format$([B1] * 0.33, "#,##0") '这个会保留0,不保留0的话改成Format$([B1] * 0.33, "#,###")

TOP

回復 7# sillykin
也可以使用下面的:
FormatNumber([B3], 0)

TOP

回復 9# Joforn


    謝謝大大之回覆,但還是四捨五入因素,造成計算之銀誤,

TOP

        靜思自在 : 好事要提得起,是非要放得下,成就別人即是成就自己。
返回列表 上一主題