Australia were unable to defend the Champions Trophy last year
The 2009 Champions Trophy has been moved to South Africa by the International Cricket Council.
The competition was due to take place in Pakistan in September 2008 but was postponed over security fears.
Sri Lanka had offered to step in but concerns about wet weather in the country saw it step aside and now the the ICC has decided on South Africa.
The eight-team tournament is scheduled to take place from 24 September to 5 October across two venues.
ICC president David Morgan said: "I think the board has made a sensible decision that will give the event every chance of success.
"We now have clarity on the subject and we can make firm plans for what is going to be a great spectacle of one-day cricket.
"With Wanderers and Centurion (stadiums), Cricket South Africa (CSA) can provide two world-class venues in what is effectively one location.
"And, as we know from the ICC World Twenty20 2007, weather conditions in the area around Johannesburg in September and October are stable and ideal for cricket.
"I would like to thank Sri Lanka Cricket for its commitment to offer an alternative to Pakistan.
"And also, I want to acknowledge its willingness to step aside in this matter. I'd also like to thank CSA for putting its hand up and offering to host this event."
CSA chief executive Gerald Majola added: "We thank the ICC for this invitation, and for showing faith in our ability to host a world-class event to the ICC's requirements.
"We now await the ICC's financial model, and provided the government protocols to host major events have been clarified, and our board agrees to accept the invitation, then we have the infrastructures and the expertise from recently hosting two ICC world championships to stage a successful tournament at short notice."
The ICC also decided the 2010 ICC World Twenty20 in the West Indies would be held between 30 April and 16 May.
The 2009 event is being hosted by England between 5 and 21 June.