Lấy kết quả trong của biến function

  • Thread starter Thread starter khaivinh
  • Ngày gửi Ngày gửi
Liên hệ QC

khaivinh

Thành viên chính thức
Tham gia
18/1/08
Bài viết
53
Được thích
18
Mình đang gặp khó khăn trong việc lấy kết quả từ biến bên trong Function
VD:
Function Test(rng As Range)
Dim cell As Range
Dim Str As String
For Each cell In rng
Str = Str & cell
Next
Test = Str
End Function

Sub Test2()
Str2 = Str
End Sub

mình muốn Sub Test2 bắt kết quả biến Str từ Function Test , mong mọi người giúp đỡ.Tks!;;;;;;;;;;;
 
Lần chỉnh sửa cuối:
Mình đang gặp khó khăn trong việc lấy kết quả từ biến bên trong Function
VD:
Function Test(rng As Range)
Dim cell As Range
Dim Str As String
For Each cell In rng
Str = Str & cell
Next
Test = Str
End Function

Sub Test2()
Str2 = Str
End Sub

mình muốn Sub Test2 bắt kết quả biến Str từ Function Test , mong mọi người giúp đỡ.Tks!;;;;;;;;;;;

Để lấy giá trị trong hàm thì mình phải gọi thông qua tên hàm.

Sub Test2()
Str2 = Test(Range("A1:A10"))
End Sub
 
Upvote 0
Bạn thử với cặp ni xem sao

Mã:
Option Explicit[B]
Sub Test_GPE()[/B]
 Dim Clls As Range
 Set Clls = Application.InputBox("Hay Chon Vùng Du Lieu:", Type:=8)
 MsgBox Test(Clls)
[B]End Sub[/B]
--=0 --=0 --=0 --=0 --=0
PHP:
Function Test(Rng As Range) As String
 Dim Cls As Range
 For Each Cls In Rng
   Test = Test & Cls.Value
 Next Cls
End Function
 
Upvote 0
Để lấy giá trị trong hàm thì mình phải gọi thông qua tên hàm.

Sub Test2()
Str2 = Test(Range("A1:A10"))
End Sub
CÁM ƠN BẠN ĐÃ TRẢ LỜI ,LÀM NHƯ CÁCH CỦA BẠN LÀ ÁP DỤNG FUNCTION VÀO SUB, NHƯNG Ý MÌNH KHÔNG PHẢI NHƯ VẬY .
MÌNH MUỐN SUB LẤY ĐƯỢC KẾT QUẢ BIẾN STR CỦA FUNCTION.
VD: Function Test: STR = "ABC"
Sub Test2 SẼ LẤY ĐƯỢC KẾT QUẢ CỦA BIẾN STR LÀ ABC
 
Lần chỉnh sửa cuối:
Upvote 0
Mã:
option explicit[b]
sub test_gpe()[/b]
dim clls as range
set clls = application.inputbox("hay chon vùng du lieu:", type:=8)
msgbox test(clls)
[b]end sub[/b]
--=0 --=0 --=0 --=0 --=0
PHP:
function test(rng as range) as string
dim cls as range
for each cls in rng
test = test & cls.value
next cls
end function

mình hiểu ý bạn, nhưng cách của bạn ngược với ý mình , bạn dùng sub inputbox de chon range , nhưng mình cần chọn range bằng function rồi đưa số liệu vào sub
 
Upvote 0
CÁM ƠN BẠN ĐÃ TRẢ LỜI ,LÀM NHƯ CÁCH CỦA BẠN LÀ ÁP DỤNG FUNCTION VÀO SUB, NHƯNG Ý MÌNH KHÔNG PHẢI NHƯ VẬY .
MÌNH MUỐN SUB LẤY ĐƯỢC KẾT QUẢ BIẾN STR CỦA FUNCTION.
VD: Function Test: STR = "ABC"
Sub Test2 SẼ LẤY ĐƯỢC KẾT QUẢ CỦA BIẾN STR LÀ ABC
Thì đặt biến Str kiểu Public đi
PHP:
Public Str As String
Function Test(rng As Range)
  '.....
  '.....
End Function
Nhưng đằng nào thì cũng phải gọi hàm trước mới có được giá trị Str... và Function ấy sẽ chạy như là 1 sub có tham số truyền vào
Gữi cho bạn 1 ví dụ về kiểu dùng này:
Mã:
Public Dic
Private Function ListFilesInFolder(FolderName As String, InSub As Boolean)
  Dim FileItem, SubFolder, FileName As String
  On Error GoTo Thoat
  With CreateObject("Scripting.FileSystemObject")
    With .GetFolder(FolderName)
      For Each FileItem In .Files
        FileName = FolderName & "\" & FileItem.Name
        Dic.Add FolderName & "\" & FileItem.Name, FileLen(FileName)
      Next FileItem
      If InSub Then
        For Each SubFolder In .subFolders
          ListFilesInFolder SubFolder.Path, True
        Next SubFolder
      End If
    End With
  End With
Thoat:
End Function
Mã:
Sub GetFileList()
  Dim i As Long
  Set Dic = Nothing
  Set Dic = CreateObject("Scripting.Dictionary")
  Range("A2:B60000").Clear
  With Application.FileDialog(4)
    .Show: .AllowMultiSelect = False
    ListFilesInFolder .SelectedItems(1), True
  End With
  With Range("A2").Resize(Dic.Count)
    .Value = WorksheetFunction.Transpose(Dic.Keys)
    .Offset(, 1) = WorksheetFunction.Transpose(Dic.Items)
    .Offset(, 1).NumberFormat = "#,##0 ""KB"""
  End With
  Columns("A:B").AutoFit
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn thử khai báo biến Str ở trên cùng xem có được không?

Mã:
Dim Str As String

Function Test(rng As Range)
Dim cell As Range

For Each cell In rng
Str = Str & cell
Next
Test = Str
End Function

Sub Test2()
Str2 = Str
MsgBox Str2
End Sub
 
Upvote 0
CÁM ƠN BẠN ĐÃ TRẢ LỜI ,LÀM NHƯ CÁCH CỦA BẠN LÀ ÁP DỤNG FUNCTION VÀO SUB, NHƯNG Ý MÌNH KHÔNG PHẢI NHƯ VẬY .
MÌNH MUỐN SUB LẤY ĐƯỢC KẾT QUẢ BIẾN STR CỦA FUNCTION.
VD: Function Test: STR = "ABC"
Sub Test2 SẼ LẤY ĐƯỢC KẾT QUẢ CỦA BIẾN STR LÀ ABC

Đây là cách lấy giá trị trong biến của hàm. Còn hàm trả về dạng giá trị khác.

Hàm GetRangeInfo trả về chuỗi được nối từ các ô đã chọn (ví dụ là từ A1:A10).
CellCount là biến nhận giá trị bên trong hàm, ví dụ này là lấy số ô của vùng

Mã:
Function GetRangeInfo(ByVal rng As Range, ByRef CellCount As Long) As String
    Dim Cell As Range
    For Each Cell In rng
        GetRangeInfo = GetRangeInfo & Cell.Value
    Next
    CellCount = rng.Count
End Function

Sub TestFunc()
    Dim MyStr As String
    Dim CellCount As Long
    
    MyStr = GetRangeInfo(Range("A1:A10"), CellCount)
    
    MsgBox MyStr, vbInformation, "CellCount: " & CellCount
    
End Sub

Nếu cái này mà vẫn không đúng ý bạn thì tôi khuyên, đừng cố làm phức tạp hoá một vấn đề đơn giản.
 
Lần chỉnh sửa cuối:
Upvote 0
Các thày cũng đã có ý kiến, nhưng mình cũng tham gia 1 chút
Với các đoạn code sau của mình là 1 trong những cách lấy giá trị của biến
1/Ngoai việc lấy giá trị của hàm còn lấy biến trung gian của hàm
2/Lưu giá trị của biến trung gian lại và xem sau
Mã:
Option Explicit
Public Rg As Range
'-----------------------------------------------------------------
Sub Vidu()
MsgBox "Vung ban chon " & Rg.Address & " co so o la: " & It_Count()
End Sub
'----------------------------------------------------------------
Function It_Count()
Dim Vung As Range
Set Vung = Application.InputBox("Chon vung bat ky", , , , , , , 8)
If Not Vung Is Nothing Then
Set Rg = Vung
It_Count = Vung.Cells.Count
Else
It_Count = 0
End If

End Function
'-----------------------------------------------------------
Sub Ktra()
MsgBox "Vung ban chon cho Ham lan cuoi la: " & Rg.Address
End Sub
Bạn xem file nha
 

File đính kèm

Upvote 0
Mình có cảm giác như chủ topic có cái gì đó còn dấu hay nói chưa hết ý của mình!

Lấy kết quả trong của biến function
Mình đang gặp khó khăn trong việc lấy kết quả từ biến bên trong Function

Bạn này, Bạn định lấy 1 lần hay nhiều lần vậy, từ hàm í mà?

Hay bạn muốn lấy lúc nào thì lấy?

Bạn nên hiểu rằng, ngoài mình ra, còn lại là toàn các cao thủ đang quan tâm đến vấn đề của bạn đó!

Đừng lãng fí thời gian của cộng đồng thêm nữa!
 
Upvote 0
Thì đặt biến Str kiểu Public đi

PHP Code:
Public Str As String
Function Test(rng As Range)
'.....
'.....
End Function
lúc đầu mình cũng dùng cách trên khai biến theo public ở phía trên function , nhưng vì sau khi khai vậy thì function của mình cho ra kết quả không chính xác nên mình bị bí.
hôm nay mình thử mượn 1 biến khác khai biến theo public thì không bị vấn đề này nữa.
Nguyên nhân vì sao khiến kết quả bị sai thì mình không rõ.
vd:
public StrMuon as string
function test(rng as range)
............
Str= .......
......
......
......
StrMuon = Str
end function
=====
giờ ở Sub mình lấy được giá trị StrMuon mà lại không ảnh hưởng kết quả của Function
Thanks tất cả mọi người đã nhiệt tình giúp đỡ!!!-=.,,
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom